FreeBSD トップレベル実装の総 CPU 使用量は、プロセスリストの CPU 使用量とは異なりますか?

FreeBSD トップレベル実装の総 CPU 使用量は、プロセスリストの CPU 使用量とは異なりますか?

何らかの理由で、FreeBSDシステムのCPU使用率全体は1%から85%の間で変動しますが、プロセス列のCPU使用率は決してその量に達しません。たとえば、CPU使用率全体は83.5%ですが、プロセスリストのCPU使用率は2%未満です。

last pid: 22965;  load averages:  1.45,  1.72,  3.06                                                                                                                                                                                                  up 151+20:08:57 12:32:38
137 processes: 2 running, 135 sleeping
CPU: 83.5% user,  0.0% nice, 12.8% system,  0.0% interrupt,  3.8% idle
Mem: 222M Active, 88M Inact, 315M Wired, 16M Cache, 110M Buf, 342M Free
Swap: 1996M Total, 30M Used, 1966M Free, 1% Inuse

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    TIME    CPU COMMAND
22965 martin       1  96    0  7704K  4172K RUN      0:00  1.27% snmpset
 1234 root          1  44    0  3804K  1068K select  50:36  0.00% hald-addon-storage
 1204 haldaemon     1  44    0  7236K  2300K select  24:13  0.00% hald
 1135 root          1  44    0  3372K   928K nanslp   9:34  0.00% cron
46828 martin       1  44    0 11844K  4140K select   6:06  0.00% irssi
  407 _pflogd       1  44    0  3528K   604K bpf      5:41  0.00% pflogd
86984 root          1  44    0  5284K   996K select   5:14  0.00% gam_server
95843 martin       1  76    0  4560K  1192K wait     5:03  0.00% bash
 6714 martin       1  44    0  5748K  2512K select   4:46  0.00% screen
  775 root          1  44    0  3344K   532K select   3:48  0.00% syslogd

これら2つの分野はどうCPU違いますか?この動作の原因は何ですか?合計CPU使用量が60〜80%程度になると、機器の応答速度が確実に遅くなります。

編集する:

topShift + sまた、ifカーネルスレッド()の出力も表示されます。

last pid: 54866;  load averages:  0.62,  0.90,  1.02                                                                                                                                                                                                  up 153+19:26:17 11:49:58
208 processes: 3 running, 188 sleeping, 17 waiting
CPU: 75.3% user,  0.0% nice, 12.4% system,  0.0% interrupt, 12.4% idle
Mem: 395M Active, 154M Inact, 324M Wired, 16M Cache, 110M Buf, 94M Free
Swap: 1996M Total, 112M Used, 1883M Free, 5% Inuse, 8K In

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    TIME    CPU COMMAND
   11 root          1 171 ki31     0K     8K RUN    2809.4 52.78% idle
54866 martin       1  96    0  6680K  3548K RUN      0:00  0.98% snmpset
15836 root          1  44    0   322M   307M select  31:51  0.29% Xorg
   12 root         17 -60    -     0K   136K WAIT   455:55  0.00% intr
   17 root          1  44    -     0K     8K syncer 162:57  0.00% syncer
 1234 root          1  44    0  3804K  1068K select  51:16  0.00% hald-addon-storage
    3 root          1  -8    -     0K     8K -       27:06  0.00% g_up
 1204 haldaemon     1  44    0  7236K  2268K select  24:32  0.00% hald
    4 root          1  -8    -     0K     8K -       23:52  0.00% g_down
   13 root          1 -16    -     0K     8K -       20:20  0.00% yarrow
   14 root         20 -64    -     0K   160K -       14:37  0.00% usb
    2 root          1  -8    -     0K     8K -       10:42  0.00% g_event

答え1

基本top的にユーザープロセス(つまり、カーネルとそのスレッド以外のプロセス)カーネルはディスクまたはネットワークIOによって使用されている可能性がありますが、topディスプレイには表示されません。topを押してカーネルスレッドの表示を切り替えることができますSHIFTs

このvmstatユーティリティを使用すると、システム起動後のネットワークおよびディスクアクティビティ(特に)に関する統計を表示できます。vmstat -i起動後に各デバイスが受信した割り込みの数は、1秒あたりの割り込みが受信される平均速度で表示されます。vmstat -p daディスクが何をしているかを確認するために使用されます。

iostatsystatなどの他のツールnetstatも豊富な情報を提供できます。

スケジューラー構成を調整して、ロード時のシステムの応答性を向上させることができます。今すぐ変更するには、sysctl kern.sched.preempt_thresh=240rootとして実行してください。起動時に同じ設定を適用するには、に追加する/etc/sysctl.conf必要があります。これは役に立ちますが、ワークロードとハードウェアの特性によって効率が制限されることに注意してください。

関連情報