Linux 交换,线性写入/读取

Linux 交换,线性写入/读取

我很困惑 Linux 是否按顺序在交换区上进行写入和读取。

现在我正在分析交换分区的压力,奇怪的是利用率接近 90%(iostat 中的 util 列),但 2xSAS RAID1 hdd 上的吞吐量只有 10MB/s。

谷歌无法提供帮助

答案1

一般而言,对交换空间的写入可以到达任何空闲的交换空间,因此写入操作往往是连续的。对交换空间的读取操作必须针对系统所需的特定数据,因此读取操作通常不是连续的。

答案2

除了随机性之外,交换读取也可能是序列化的。请记住,VM 系统正在创建真实 RAM 的假象,因此用户空间进程没有任何机会优化访问。从它的角度来看,它只是 RAM,因此它在发生任何其他事情之前必须先阅读。

序列化随机读取的不好之处在于,它必须经过完整的往返(请求、磁头寻道、盘转动、读取、响应)之后才能发出下一个 IO 请求。

这意味着,在最坏的情况下,每个 IOP(每个线程)只有一个 4KB 页面。假设每个主轴 250 IOPS,您只能获得 500 IOPS,500/sx 4KB = 2MB/s。看来您仍然比硬件的最坏情况要好得多。可能一些预读页面集群对您有帮助。

相关内容