如何防止md-raid阻塞IO?

如何防止md-raid阻塞IO?

我运行一台具有 md-raid(软件)级别 1(2 个 HDD 镜像)的服务器,并且在该服务器上运行了几种不同的应用程序。

当文件密集型作业(例如提取大型档案)运行时,某些用户也在使用实时应用程序(例如游戏服务器),就会出现问题。文件密集型作业将填满 IO 队列,迫使 md-raid 阻止进一步的 IO,直到两个驱动器同步,这将使实时应用程序陷入困境并迫使它们暂停并等待,从而给用户带来极大的烦恼。

IO 密集型作业以最低的进程和 IO 优先级()运行,nice -n +19 ionice -c 3 ...采用 CFQ 调度,但其他应用程序仍然处于饥饿状态。

有没有办法让 md-raid 在保持磁盘同步方面更加宽松?

还有其他可能的解决方案来避免重要应用程序陷入困境吗?

答案1

该问题可能是由页面缓存刷新而不是 I/O 队列填充引起的。

要检查它,请尝试解压一个大档案,然后在另一个终端中执行cat /proc/meminfo。您将在内存下看到一些大值Dirty;当刷新该“脏”内存时,会发生大 I/O,并且您的实时应用程序会受到影响。

它的行为可以配置,但这并不简单,因为默认情况下 Linux I/O 堆栈更看重吞吐量而不是延迟。无论如何,作为一个好的开始,请尝试使用deadline调度程序并确保您的磁盘上启用了 NCQ。

相关内容