10

If top is showing high loads, and you don't know if the process causing it is doing processor time or is doing network i/o (not local i/o) how can you find that out?

On our server I see high values for load, but in combation with 60%-70%idle, and around 25% user. I would like to know how to interpet such values, but on the internet I almost always read that you can use iostat to see if the process is trashing your disks. But I know already for sure, that that is not the case. The process in question does not have trouble doing its job either, but still load is high.

So, is there a way to find out more which part is caused by network waiting and which part is caused by real processor time? And what is the meaning of 'idle' in top?

For clarity: with load I mean the 3 numbers that signify the average queued processes per core. There are 8 cores on this machine and the numbers get up to 25, so that is a load of 2.5 per core.

7
  • What are you calling "load": CPU use, or the 3 "load average" values (seen in uptime output)?
    – spuk
    Commented May 12, 2015 at 20:22
  • 1
    Question makes no sense... waiting for network IO does not use any cpu time.
    – psusi
    Commented May 12, 2015 at 20:31
  • 2
    I love the utility htop for peering into processes. In particular it can allow you to select a process and then using the l command, it will show you all the open files using lsof including IPv4 and IPv6 stream devices and such. If you have strace installed on your box you can do system call and signal debugging as well. Not exactly an answer but another tool i'd consider for what you are trying to investigate.
    – 111---
    Commented May 12, 2015 at 20:36
  • I mean the 3 numbers. As I understand they are called "load", or am I wrong here? They represent the number of processes in the queue that can be executed, but does that include processes which have network wait, or does it exclude does processes?
    – Jan
    Commented May 12, 2015 at 22:11
  • And what do you define as "high"? Load average is not scaled for cores. e.g., A system with a load average of 1 and 4 cores is 1/4th as loaded as a system with a load average of 1 and only 1 core. Load average is a very coarse number.
    – bahamat
    Commented May 12, 2015 at 22:17

1 Answer 1

3

If top is showing high loads, and you don't know if the process causing it is doing processor time or is doing network i/o (not local i/o) how can you find that out?

Network I/O is not taken into account in the Linux iowait metric, unless it is part of an NFS transaction in which case it is considered as disk I/O.

So, is there a way to find out more which part is caused by network waiting and which part is caused by real processor time?

Outside an hypothetical NFS wait, no part at all of the average load is taken by network waiting.

And what is the meaning of 'idle' in top?

That means the percentage of time the CPU is not in another of the listed states (user, system, nice, iowait, hardware interrupts, software interrupts, stolen). This includes network waits. When idle, the CPU does essentially nothing. Note that iowait is also idle time as a CPU doesn't do anything either.

2
  • Thanks for your answer. So in my situation where I see a high idle value (60% - 70%) and lower user state (around 25%) and low iowait, this could mean that the server is waiting for network resources, if I understand you correctly.
    – Jan
    Commented May 14, 2015 at 16:46
  • 1
    Not necessarily waiting for network resources. It might be simply the CPU is fast enough to complete all what is to be done. The high load average is possibly caused by a very high number of threads simultaneously competing for a CPU but during very short spurious periods of time.
    – jlliagre
    Commented May 14, 2015 at 19:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .