高端电子商务网站建设/网络广告策划的内容
读论文(三):Practical Enhancement of User Experience in NVMe SSDs
- 问题背景
- 提出方法
- 实验结果
- 总结
问题背景
针对于进程IO请求,Linux内核对于以用户为中心的进程没有特殊优化,而这些进程与用户体验直接相关,文章从这个角度,提出一种机制,重新设计了Linux内核mluti-queue block layer层,通过三种方法(高优先级、分离队列、发送调度)提高用户体验——降低这类进程的延迟、提高IOPS、带宽。
NVMe 接口协议支持64K条队列,Linux为了更好的发挥这一性能,进行了改进。由原来的single-queue block layer 变为mluti-queue block layer,如下图:
上图中,右边改进后的,SWQ为每个CPU对应的软件队列,HWQ为NVMe SSD对应的硬件队列。
提出方法
首先介绍传统的Linux对于IO请求的处理,如图:
从上图可以看到,以用户为中心(TUT_UTU)的进程与非用户为中心(TNUT_{NU}TNU)的进程没有任何区分。TUT_UTU如果优先完成,能减少用户等待时间,提高体验,但在这种模式下,只能等待之前的TNUT_{NU}TNU执行完之后才执行。
文章提出的机制如下:
有三个改进:
- TUT_UTU具有更高的优先级;
- 将SWQ与分为两种队列,专门存放 TUT_UTU的队列与专门存放TNUT_{NU}TNU的队列;
- 将请求从SWQ取出,加入HWQ队列时,选取SQ命令最少的HWQ,可以得到相对优先的处理(加入NVMe SSD用RR调度方法)。
具体流程如下:
实验结果
从执行时间、IOPS、带宽三个行呢个指标进行测试,都证明论文提出的针对重度用户体验应用的任务有了提高。
总结
将请求队列分为以用户体验为中心和其他,加大了队列管理算法的复杂度,但优化了用户体验。