Linux block 子系统的负责人 Jens Axboe 目前就职于 Facebook,他也因开发了 IO_uring 而闻名,他对 IO_uring 的不断开发与优化使得 Linux 系统的 I/O 性能得到巨大提升。
一周前,Jens Axboe 开始对内核的 I/O 性能进行了新一轮的优化,以便在单个 CPU 核心上获得 800 万 IOPS。经过一周时间的努力,每个核心能够实现 890 万左右的 IOPS,就当大家以为这个数字已经达到他所使用的硬件极限,没有更多优化空间时,本周他又成功地将每个核心的 IOPS 推到了 1000 万。
IOPS(Input/Output Operations Per Second)是一个衡量电脑储存装置(如 HDD、SSD)输入/输出性能高低的指标,可以视为是每秒的读写次数。与其他性能测试一様,IOPS 仅代表理想环境下的性能指标,不保证实际应用下也能达到同等情况。
IOPS 的数值会随系统组态而有很大的不同,依测试者在测试时的控制变量而异,控制变量包括读取及写入的比例、线程数量以及资料区块的大小等。
从 Jens Axboe 在社交媒体上分享的截图可以看到,他用最新的 Linux 内核补丁在一个物理 CPU 核心上实现了 1000 万 IOPS。
此次测试的设备仍然与他此前实现 890 万 IOPS 时所使用的设备保持一致 —— 采用了一个 AMD Ryzen 9 5950X CPU 和英特尔 P5800X Gen2 傲腾 SSD。
为了实现这些的性能提升,Jens Axboe 主要是在内核的 block / NVMe / IO_uring 代码内进行了优化,但也有触及一些内存管理代码。他为实现每个核心 I/O 的最佳性能而进行的优化都可以通过 linux-block 的 perf-wip 分支找到。这些性能优化补丁目前已加入下一周期的合并队列,应该会在 Linux 5.16 中实现合并。