作業状況PAは何を参照していますか?

作業状況PAは何を参照していますか?

私はRHEL 7.4のクラッシュダンプに取り組んでいます。一部の作業状態をPAとして表示します。コマンドの場合 -crash> ps | grep sample

 - 31718  31717   3  ffff8806873a6eb0  **PA**   0.0   42260   8040  sample  
 - 32027  32025   3  ffff880462cf1fa0  **PA**   0.0   42260   8036  sample
 - 32148  32146   5  ffff88081b75eeb0  **PA**   0.0   42260   8036  sample
 - 32620  32618   0  ffff8802b1469fa0  **PA**   0.0   42260   8036  sample

このジョブの状態に関する詳細を説明するヘルプページはありません。

  • PAがどの作業状態を参照しているのか教えてくれる人はいますか?
  • 競合ユーティリティに記載されているすべてのプロセスのステータスに関するリンクまたは詳細はありますか?
crash> help ps |grep PA

 - the task state (RU, IN, UN, ZO, ST, TR, DE, SW, WA, PA).**

答え1

バラよりhttp://people.redhat.com/anderson/crash_sources/task.c

char *
task_state_string(ulong task, char *buf, int verbose)
{
long state;
int exclusive;
int valid, set;

if (_RUNNING_ == TASK_STATE_UNINITIALIZED) 
    initialize_task_state();

if (verbose)
    return task_state_string_verbose(task, buf);

if (buf)
    sprintf(buf, verbose ? "(unknown)" : "??");

state = task_state(task);

set = valid = exclusive = 0;
if (valid_task_state(_EXCLUSIVE_)) {
    exclusive = state & _EXCLUSIVE_;
    state &= ~(_EXCLUSIVE_);
}

if (state == _RUNNING_) {
    sprintf(buf, "RU"); 
    valid++;
}

if (state & _INTERRUPTIBLE_) { 
    sprintf(buf, "IN"); 
    valid++; 
    set++;
}

if (state & _UNINTERRUPTIBLE_) {
    if (valid_task_state(_NOLOAD_) &&
        (state & _NOLOAD_))
        sprintf(buf, "ID");
    else
        sprintf(buf, "UN");
    valid++; 
    set++;
}

if (state & _ZOMBIE_) {
    sprintf(buf, "ZO"); 
    valid++; 
    set++;
}

if (state & _STOPPED_) {
    sprintf(buf, "ST"); 
    valid++; 
    set++;
}

if (valid_task_state(_TRACING_STOPPED_) &&
    (state & _TRACING_STOPPED_)) {
    sprintf(buf, "TR"); 
    valid++; 
    set++;
}

if (state == _SWAPPING_) {
    sprintf(buf, "SW"); 
    valid++; 
    set++;
}

if ((state & _DEAD_) && !set) {
    sprintf(buf, "DE"); 
    valid++; 
    set++;
}

if (state == _PARKED_) {
    sprintf(buf, "PA"); 
    valid++;
}

if (state == _WAKING_) {
    sprintf(buf, "WA"); 
    valid++;
}

if (state == _NEW_) {
    sprintf(buf, "NE");
    valid++;
}

if (valid && exclusive) 
    strcat(buf, "EX");

return buf;

}

答え2

この状態は駐車状態を意味します。この状態は3.9と3.13の間のカーネルにのみ有効です。 ~によると男性ページ:

state  %c
                    One of the following characters, indicating process
                    state:

                    R  Running

                    S  Sleeping in an interruptible wait

                    D  Waiting in uninterruptible disk sleep

                    Z  Zombie

                    T  Stopped (on a signal) or (before Linux 2.6.33)
                       trace stopped

                    t  Tracing stop (Linux 2.6.33 onward)

                    W  Paging (only before Linux 2.6.0)

                    X  Dead (from Linux 2.6.0 onward)

                    x  Dead (Linux 2.6.33 to 3.13 only)

                    K  Wakekill (Linux 2.6.33 to 3.13 only)

                    W  Waking (Linux 2.6.33 to 3.13 only)

                    P  Parked (Linux 3.9 to 3.13 only)

この状態とも呼ばれます。邪魔されない睡眠。引用するこれ詳しくはリンクをご覧ください。

関連情報