我有一台 Scientific Linux 构建机器:
$ cat /etc/redhat-release
Scientific Linux release 6.5 (Carbon)
作为我们构建过程的一部分,有一个归档步骤,其中许多(数百个)目标文件被归档到一个.a
文件中。在这个大约需要一分钟的归档步骤中,没有其他进程可以写入磁盘。例如,用户尝试在此归档步骤中写入其 vim 会话时会挂起,直到归档完成。
尽管人们使用 ionice 进行构建,这种情况还是会发生:
ionice -c2 -n7 nice -n19 make -j64 PRETTY=1 <target>
这似乎确实是一个 io 问题,因为 vim 会话(以及 tmux 会话和 shell 会话等)在写入文件之前工作正常。
可能导致这种情况的瓶颈是什么?
答案1
第一:ionice -c3
意味着空闲调度(这就是你想要的),-c2
是为了尽力而为。
第二:你可以使用cgroups blkio 控制器用于微调调度。
第三:不要使用比物理核心更多的线程。因此,如果您的计算机没有 64 核,请降低它。例如:-j4