Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

When I run top -bi, where the parameter -i means "ignore idle processes", the resulted list(see below) of processes are either R or D, although there're S processes at that time.

So, why uninterruptible sleep is not counted as "idle"? And, it seems that "load average" equals the number of R processes plus the number of D processes?

top - 17:47:44 up 141 days, 14:29,  2 users,  load average: 4.10, 4.18, 4.17
Tasks: 224 total,   1 running, 223 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.4%sy,  0.0%ni, 87.2%id, 12.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16432240k total, 16345816k used,    86424k free,  4934652k buffers
Swap: 16386292k total,     6996k used, 16379296k free,    71432k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                             
7479 root      18   0 1357m 1.1g  904 D    1  7.0  10:27.86 rsync                                                               
7463 root      18   0 1315m 1.0g  840 D    1  6.6   9:45.83 rsync                                                               
7469 root      18   0 1088m 889m  840 D    0  5.5   8:10.20 rsync                                                               
7524 root      18   0 1106m 895m  840 D    0  5.6   8:13.60 rsync                                                               
30958 root      15   0 12720 1148  788 R    0  0.0   0:01.07 top
share|improve this question
add comment

2 Answers 2

Because 'uninterruptible sleep' doesn't mean idle or sleeping. The ps manpage explains it already: usually IO, which in the case of rsync is hardly a surprise.

share|improve this answer
add comment

When a process is in interruptible sleep, it means the kernel is doing something (input/output, mostly) that has been requested by the process. The process is sleeping while the kernel processes the request. While the process itself is idle, the kernel is busy on behalf of the process, so the process is busy by proxy. Both user mode code (R) and kernel mode code (D) count as busy.

share|improve this answer
    
Very often uninterruptible sleep means that both the process and the kernel code are waiting for an I/O operation (e.g. disk head seeking) and other processes and kernel code can be executed at this time so it does not always mean "busy". –  pabouk Nov 14 '13 at 19:27
add comment

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.