Це не обов'язково поганий знак, але дозвольте спочатку відповісти на ваше останнє запитання:
Що це означає саме?
У top
вихідному коді (від http://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: Нитка знаходиться в неперервному стані очікування.
(...)
Зазвичай це викликано процесом, який очікує на введення-виведення, тобто процес запитує читати чи записувати на / з диска або мережі та чекає повернення системного дзвінка (див. Http://en.wikipedia.org / wiki / Sleep_% 28operating_system% 29 # Uninterruptible_sleep або http://www.novell.com/support/kb/doc.php?id=7002725 для отримання додаткової інформації).
(Якщо не використовуються параметри BSD, як це зазвичай буває в Linux, ps
відображається режим безперебійного сну як стан D. )
Це частина нормального життєвого циклу процесу?
Так. Що не нормально, це те, що процес залишається в такому стані тривалий час. Це поганий знак.
Чому саме цей процес?
Складно сказати. Зазвичай це спричинено вузькими місцями вводу-виводу з активністю великого диска або погіршеним підключенням при використанні мережевих файлових систем (найпоширеніший сценарій, на мій досвід).
(Це пов’язане запитання у Ask Different: /apple/58697/how-does-stuck-in-results-of-top-relate-to-not-responding-in-activity- м .)