SPDK
文章平均质量分 86
oshhh
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
磁盘性能测试工具之fio
fio -name=Read_Write_IOPS_Test -group_reporting-direct=1-iodepth=128-rw=randrw -rwmixread=70-refill_buffers-norandommap-randrepeat=0-ioengine=libaio -bs=4k -size=10G -numjobs=1-runtime=600-ioscheduler=noop。随机序列是否可重复,True(1)表示随机序列可重复,False(0)表示随机序列不可重复。原创 2023-02-07 17:29:02 · 1450 阅读 · 0 评论 -
NVMe性能探究
这里的OP空间也会关联到GC和WL,因为NAND上的数据只要是通电状态下就是在不断的搬移(WL的缘故), OP空间会成为搬移过程中的“中转站”,其次,在我们把NVMe上某个小小的NAND块写坏后,会由软件算法控制将OP空间对应大小的NAND块进行替换,以确保我们正常使用,随着使用时间的增加,OP空间中的坏块逐渐增多,达到一定比例后,NVMe将不可用(不必担心厂家的FW会提前报警)。同时因为随机写入时也会涉及到NAND块上的数据搬移,因此,OP空间变小也会一定程度上导致随机写入性能下降。原创 2023-02-07 17:14:13 · 730 阅读 · 0 评论 -
【SPDK】六、vhost子系统
vhost子系统初始化时,会依次偿试对vhost-scsi、vhost-blk和vhost-nvme进行初始化,如果配置文件中配置了对应类型的设备,那就会完成对应设备的创建并初始化监听socket等待qemu客户端进行连接。vhost子系统在SPDK中属于应用层或叫协议层,为虚拟机提供vhost-blk、vhost-scsi和vhost-nvme三种虚拟设备。/* 完成vhost设备通用部分功能的初始化,并将该vhost设备的backend操作集合设为vhost_blk_device_backend;原创 2023-02-06 21:52:49 · 781 阅读 · 0 评论 -
【SPDK】五、bdev子系统
SPDK从功能角度将各个独立的部分划分为“**子系统**“。例如对各种后端存储的访问属于bdev子系统,又例如对虚拟机呈现各种设备属于vhost子系统。不同场景下,各种工具可以通过组合不同的子系统来实现各种不同的功能。例如虚拟化场景下,vhost主要集成了bdev、vhost、scsi等子系统。这些子系统存在一定依赖关系,例如vhost子系统依赖bdev,这就需要将被依赖的子系统先初始化完成,才能执行其它子系统的初始化。原创 2023-02-06 21:48:01 · 734 阅读 · 0 评论 -
【SPDK】四、reactor线程
(2)线程通过_spdk_reactor_start_poller和_spdk_reactor_stop_poller启动和停止poller;/* 从此处开始,各个线程(包括主线程)开始执行_spdk_reactor_run,线程名也正式变更为reactor_X;(1)线程间通过_spdk_reactor_send_msg发送消息,本质是向接收方的event队列中添加事件;表中注册新的映射关系。/* 针对主线程之外的其它核上的线程,通过发送通知使它们开始执行_spdk_reactor_run */原创 2023-02-06 21:40:20 · 599 阅读 · 0 评论 -
【SPDK】三、IO流程代码解析
bdev_io继续往驱动层递交,它会扩展为适配具体驱动的io对象,例如针对NVMe驱动,bdev_io将扩展成nvme_bdev_io对象。reactor取出响应后,根据其id找到对应的nvme_bdev_io,进一步关联到对应的bdev_io,再调用bdev_io中的记录的回调函数。vhost-blk下发请求时注册的回调函数为blk_request_complete_cb,回调参数为当前的spdk_vhost_blk_task对象。/* iovs数组将来会记录IO请求中数据段的内存映射信息 */原创 2023-02-06 21:27:21 · 841 阅读 · 0 评论 -
【SPDK】二、IO栈对比与线程模型
另一方面,在吞吐量(IOPS)方面,如果我们给virtio-blk设备配置多队列(确保虚拟机IO压力足够),并在后端NVMe设备不成为瓶颈的前提下,传统NVMe IO栈在单个qemu io线程处理时,最多能达到20万IOPS,而SPDK vhost在单线程处理时可达100万IOPS,传统NVMe IO栈在处理多队列模型时,相比单队列模型,减少了线程间通知开销,一次通知可以处理多个IO请求,因此多队列相比单队列模型会有较大的IOPS提升;同等CPU开销下,吞吐量上有5倍以上的性能提升。IO栈对比与时延分析。原创 2023-02-06 21:20:45 · 376 阅读 · 0 评论
分享