我知道ionice
当您有多个进程请求访问相同的磁盘资源时如何为您提供帮助,但是当您有多个磁盘时它如何工作?
例如,您有一项rsync
操作将数据从驱动器 A -> 驱动器 B,另一个rsync
移动数据来自驱动器 C -> 驱动器 D。
理论上,由于它们不竞争资源,ionice
因此这些进程之一rsync
不应改变其吞吐量。这是它的工作方式吗?或者它仍然会影响性能吗?
另外,总数是否有一些“上限”?输入/输出人们可能会经历操作系统独立于驱动器速度的系统?就像你连接了 100 个一样固态硬盘驱动器,在某些时候会操作系统除了驱动速度之外还遇到瓶颈吗?
答案1
在 Linux 上,驱动器的调度是相互独立的。你甚至可以设置IO调度算法对于同一系统上的不同驱动器,通过写入/sys/block/<device>/queue/iosched
.
内存和磁盘之间的带宽确实会成为瓶颈。这就是硬件 RAID 有意义的原因:数据一次发送到 RAID 控制器,而不是分别发送到每个磁盘。您还可以通过将这 100 个 SSD 连接到多台计算机来增加带宽,并在它们之间分配负载。
我不确定 IO 调度程序如何考虑到这一点,但我认为不会。