| select |
Process is blocked in the select(2) syscall. Usually means it's waiting for external input (network , terminal, file updated, things like that). select only supports waiting for something related to a file descriptor (e.g., socket, tty, vnode).
| nanslp |
Process is blocked in the nanosleep(2) syscall, which is an explicit request to pause for a certain amount of time. Hard to generalize this one. It should be infrequent, or it might be used by something implementing its own polling.
| kserel |
Process is blocked waiting for an event to trigger a KSE upcall. This isn't easy to explain in a few words, but you can read kse(2) for most of the relevant details. Usually means the process is waiting for external input (similar to select).
| RUN |
Process is ready to run but has been suspended while another process is running.
| pause |
Process is blocked in the pause(2) or sigsuspend(2) syscall. It might be waiting for a signal, or you might see this if another thread is running and the main thread is waiting for all other threads to end.
| lockf |
Process is blocked waiting for a file lock to be released. Could be an flock(2) lock or an fcntl(2)/F_SETLK record lock.
| kqread |
Process is blocked in the kqueue(2) syscall. This is similar to select(2)--waiting for external input. kqueue is more efficient than select and supports several other events that can be waited on.
| sbwait |
Process is waiting for a socket buffer to be filled or emptied.
| pipered |
Process is waiting for data to arrive on a pipe ("rd" is short for read).
tips:
引用自:http://www.webhostingtalk.com/showthread.php?t=583672
本文解释了不同系统调用导致的进程阻塞原因,包括select、nanosleep、kserel等,涵盖了等待网络输入、定时暂停及文件锁释放等多种情况。
118

被折叠的 条评论
为什么被折叠?



