I have a Scientific Linux build machine:

$ cat /etc/redhat-release
Scientific Linux release 6.5 (Carbon)

As a part of our build process, there is an archiving step in which many (hundreds) of object files are archived into a .a file. During this archiving step which takes about a minute, no other processes can write to disk. Users, for instance, trying to write in their vim sessions during this archiving step hang until the archiving is done.

This happens despite people building with ionice:

ionice -c2 -n7 nice -n19 make -j64 PRETTY=1 <target>

This does seem to be an io issue since the vim sessions (and tmux sessions, and shell sessions, etc.) work fine until a file is written to.

What are the possible bottlenecks that can cause this?


First: ionice -c3 means the idle scheduling (this is what you want), -c2 is for best effort.

Second: you can use cgroups blkio controller for fine tuning the scheduling.

Third: don't use more threads than your physical cores. So if you don't have 64 cores in your computer, then lower it. For example: -j4

  • Thanks for the input. I chaned the -c from 2 to three, but I still have the same issue. I get the following output from ionice: "ionice: ignoring given class data for idle class" The j value isn't causing an issue because archiving is single-threaded and only one core is processing the job regardless of the j value. – firebush Oct 23 '17 at 22:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.