What causes these sleeping
processes that I see in top
? If I were to call PHP's sleep()
function, would that add to the sleeping
count I see in top
? Are there any disadvantages to having a high number in sleeping
?
views:
88answers:
3A process is sleeping when it is blocked, waiting for something. For example, it might have called read()
and is waiting on data to arrive from a network stream.
sleep()
is indeed one way to have your process sleep for a while. Sleeping is, however, the normal state of all but heavily compute-bound processes - sleeping is essentially what a process does when it isn't doing anything else. It's the normal state of affairs for most of your processes to be sleeping - if that's not the case, it tends to indicate that you need more CPU horsepower.
They are processes which aren't running on the CPU right now. This is not necessarily a bad thing.
If you have huge numbers (10,000 on a server system, for example) of processes sleeping, the amount of memory etc used to keep track of them may make the system less efficient for non-sleeping processes.
Otherwise, it's fine.
Most normal server systems have 100 to 1000 much of the time; this is not a big deal.
Just because they're not doing anything just now doesn't mean they won't, very soon. Keeping them in memory, ready, reduces latency when they are required.
sleeping process is aka suspended process.
a process can sleeps when:
1- It doing an I/O operation (blocking for I/O)
2- When you order it to sleep by sleep()
status of any process can be: *ready *sleeping *running
ready: when it ready for execution and it's in the queue waiting the processor call with specific priority
running: when the processor execute a process it become running.
sleeping: when it was running and it blocked for I/O operation or when executing sleep()
Status Meaning
R Runnable
T Stopped
P Waiting on Pagein
D Waiting on I/O
S Sleeping < 20 secs
I Idle - sleeping >20 secs
Z Zombie or defunct