場合によっては、一部のプロセスが中断されることがあります。たとえば、
PID COMMAND %CPU TIME #TH #WQ #POR #MREGS RPRVT RSHRD RSIZE VPRVT VSIZE PGRP PPID STATE
99357 plugin-container 0.1 12:07.07 10 1 224 2097 40M 84M 66M 82M 2757M 91688 99346 sleeping
99346 firefox 0.4 48:54.20 29 1 265 16250 467M 172M 799M 538M 4210M 91688 1 sleeping
88029- Aquamacs 1.2 31:24.12 4 3 126 268 19M 49M 32M 36M 777M 88029 152 stuck
プロセスの通常のライフサイクルの一部ですか?このプロセスはなぜ特別なのですか?
どういう意味ですか?
答え1
これは必ずしも悪い兆候ではありませんが、まず最後の質問に答えます。
どういう意味ですか?
top
ソースコードから(fromhttp://www.opensource.apple.com/release/mac-os-x-1082/) これ閉じ込められた状態を識別子と呼びますLIBTOP_STATE_STUCK
(からlibtop.c
):
libtop_state_str(uint32_t state)
{
const char *strings[] = {
"zombie",
#define LIBTOP_STATE_ZOMBIE 0
"running",
#define LIBTOP_STATE_RUN 1
"stuck",
#define LIBTOP_STATE_STUCK 2
"sleeping",
#define LIBTOP_STATE_SLEEP 3
"idle",
#define LIBTOP_STATE_IDLE 4
"stopped",
#define LIBTOP_STATE_STOP 5
"halted",
#define LIBTOP_STATE_HALT 6
"unknown"
#define LIBTOP_STATE_UNKNOWN 7
};
(...)
}
後で同じファイルのLIBTOP_STATE_STUCK
カーネル状態にマッピングしますTH_STATE_UNINTERRUPTIBLE
。
/* Translate a mach state to a state in the state breakdown array. */
static int
libtop_p_mach_state_order(int state, long sleeptime)
{
switch (state) {
case TH_STATE_RUNNING:
return LIBTOP_STATE_RUN;
case TH_STATE_UNINTERRUPTIBLE:
return LIBTOP_STATE_STUCK;
(...)
}
だからプロセスは閉じ込められたステータスは、プロセス/スレッドが中断できない待機状態にあることを示します。、これはTH_STATE_UNINTERRUPTIBLE
カーネル構造で定義されている方法ですthread_basic_info
(参照:http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/thread_basic_info.html):
struct thread_basic_info
{
(...)
integer_t run_state;
(...)
};
どこrun_state
:
run_state: スレッドの実行状態です。可能な値は次のとおりです。
(...)
- TH_STATE_UNINTERRUPTIBLE: スレッドが中断できない待機状態にあります。
(...)
これは通常、I / Oを待つプロセスによって引き起こされます。つまり、プロセスがディスクまたはネットワークから読み取りまたは書き込みを要求し、システムコールが返されるのを待っています(参照:http://en.wikipedia.org/wiki/Sleep_%28operating_system%29#Uninterruptible_sleepまたはhttp://www.novell.com/support/kb/doc.php?id=7002725より多くの情報を知りたい場合)。
(通常、Linuxの場合のようにBSDオプションを使用しないと、ps
ノンストップスリープモードは次のように表示されます。D状態。 )
プロセスの通常のライフサイクルの一部ですか?
はい。異常なのはプロセスです滞在する長い間この状態を維持してください。それはこれは悪い兆候です。
特にこのプロセスについて話す必要があるのはなぜですか?
言いにくいこれは通常、ネットワークファイルシステムを使用するときに過度のディスクアクティビティまたは遅い接続パフォーマンスによるI / Oボトルネックが原因で発生します(私の経験では最も一般的なシナリオです)。
(次はAsk Differentの関連質問です。https://apple.stackexchange.com/questions/58697/how-does-stuck-in-results-of-top-relate-to-not-responding-in-activity-m.)