Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm building the code on remote linux machines, and it takes very long time. Since all the filesystem is on NFS, I suspect the NFS is the bottleneck. Can I profile the build process (make all) down to system read/write calls? Or simply put, what tool do I need to find the bottleneck. Is strace gonna help?

share|improve this question

1 Answer 1

Most probably strace is not going to help you in this case, as it do not provide meaningful timing information over time. You can get summaries using command

strace -t make all

Output shows how much time were used for I/O (read and write calls), but it is hard to make difference between normal use and excessive waits.

If you can, easiest way to check whether NFS is the bottleneck is to time compiling over NFS and then on local disk, which should be faster. If that is not possible, one useful and trivial pointer is wait time, shown by for example top. From man top:

    wa  --  iowait
      Amount of time the CPU has been waiting for I/O to complete.

For example

Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 10.7%id, 80.0%wa, 0.0%hi, 0.0%si, 10.0%st

Shows that processor is mainly using time for waiting I/O to complete. In this case culprit is another virtual machine using disk heavily, but case is almost the same with waiting for NFS.

This requires monitoring top output during compilation process (at least sometimes), for example sar (man page) collects system statistics automatically.

Hopefully this helps.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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