web-dev-qa-db-ja.com

psは、migration / *プロセスが多くのCPUを消費することを示していますが、トップはそれらについて沈黙を守っています

これはpsコマンドの結果で、最初の10行だけが表示されています

ps aufx | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    May08   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    May08   0:04  \_ [ksoftirqd/0]
**root         6 98.5  0.0      0     0 ?        S    May08 6841:08  \_ [migration/0]**
**root         7 99.9  0.0      0     0 ?        S    May08 6933:53  \_ [migration/1]**
root         9  0.0  0.0      0     0 ?        S    May08   0:04  \_ [ksoftirqd/1]
**root        11 95.3  0.0      0     0 ?        S    May08 6618:59  \_ [migration/2]**
root        12  0.0  0.0      0     0 ?        S    May08   0:00  \_ [kworker/2:0]
root        13  0.0  0.0      0     0 ?        S    May08   0:14  \_ [ksoftirqd/2]
**root        14 94.6  0.0      0     0 ?        S    May08 6569:27  \_ [migration/3]**

しかし、topコマンドは、移行プロセス/スレッドについて特別なことは何も示していません。

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 5377 root      13  -7 64304  45m  11m S    2  1.5 169:28.81 Xorg
 7368 user2    16  -4  457m  98m  34m S    2  3.3  95:06.16 application
 5555 root      10 -10 64212  20m 2820 S    1  0.7  97:04.17 application
 7400 user  16  -4  416m  96m  30m S    1  3.2  93:15.77 application
 7903 user1    16  -4  402m  90m  32m S    1  3.0  59:56.47 application
 7396 user  16  -4  433m  98m  30m S    1  3.3  93:20.15 application
 7401 user  16  -4  417m  98m  30m S    1  3.3  93:05.87 application
 7403 user     16  -4  416m  96m  30m S    1  3.2  93:01.16 application
  500 root      20   0     0    0    0 S    0  0.0   0:46.80 jbd2/sda3-8
 1017 root      20   0  4536  696  476 S    0  0.0  17:38.05 cgrulesengd
 6703 user      12  -8 55240  17m  16m S    0  0.6   3:27.26 application
 7269 root      18  -2 10652 4892 2388 S    0  0.2   6:46.83 python2.5
...

OS:debian squeeze
カーネル:2.6.32

1
OJ278

編集:OPが一番上でスレッドモードではなかった可能性が高いと思います。それがtopps aufx | headのリストの違いの理由でした。たとえば、topとpsの両方にこれらのオプションを使用した移行スレッドが表示されます。

$ /bin/top -H -b -n 1 | head -25
top - 07:43:24 up 5 days,  5:07, 18 users,  load average: 1.36, 1.03, 0.76
Threads: 1165 total,   1 running, 1164 sleeping,   0 stopped,   0 zombie

...をちょきちょきと切る

   11 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/0
   12 root      rt   0       0      0      0 S  0.0  0.0   0:45.92 migration/0

およびps aufx

$ ps aufx | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    Jan30   0:00 [kthreadd]

... をちょきちょきと切る

root        11  0.0  0.0      0     0 ?        S    Jan30   0:00  \_ [rcuob/0]
root        12  0.0  0.0      0     0 ?        S    Jan30   0:45  \_ [migration/0]

この質問 askubuntu.comによると、移行/ Nスレッド(関連するプロセスなし)に起因するCPU%は、「表示されているスレッドは、スレッドの移動を担当するカーネルスレッドです。 CPU間。」

関連するパフォーマンスの問題が発生している場合は、移行/ Nスレッドが無負荷でスラッシングすることに関連するカーネルの問題を参照する ここにスレッド があります。

1
Tom H

ps manpage から:

現在、これは、使用されているCPU時間をプロセスの実行時間(CPU時間/リアルタイム比)で割ったものであり、パーセンテージで表されます。運が良ければ、合計が100%になることはありません。 (別名pcpu)。

つまり、これはリアルタイムの測定ではないため、topが報告するものと一致することを期待するべきではありません。

0
mgorven