![FreeBSD 최상위 구현의 총 CPU 사용량이 프로세스 목록의 CPU 사용량과 다릅니까?](https://linux55.com/image/58838/FreeBSD%20%EC%B5%9C%EC%83%81%EC%9C%84%20%EA%B5%AC%ED%98%84%EC%9D%98%20%EC%B4%9D%20CPU%20%EC%82%AC%EC%9A%A9%EB%9F%89%EC%9D%B4%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EB%AA%A9%EB%A1%9D%EC%9D%98%20CPU%20%EC%82%AC%EC%9A%A9%EB%9F%89%EA%B3%BC%20%EB%8B%A4%EB%A6%85%EB%8B%88%EA%B9%8C%3F.png)
어떤 이유에서인지 내 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
이 두 분야는 어떻게 CPU
다른가요? 이 동작의 원인은 무엇입니까? 총 CPU 사용량이 60~80% 정도 되면 기기의 응답 속도가 확실히 느려집니다.
편집하다:
top
Shift + 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
시작 이후 각 장치가 수신한 인터럽트 수는 초당 인터럽트가 수신되는 평균 속도와 함께 표시됩니다. vmstat -p da
디스크가 무엇을 하고 있는지 확인하는 데 사용됩니다 .
iostat
, systat
및 같은 다른 도구 netstat
도 풍부한 정보를 제공할 수 있습니다.
스케줄러 구성을 조정하여 로드 시 시스템의 응답성을 향상시킬 수 있습니다. 지금 변경하려면 sysctl kern.sched.preempt_thresh=240
루트로 실행하세요. 시작 시 동일한 설정을 적용하려면 /etc/sysctl.conf
에 추가해야 합니다. 이는 도움이 되지만 워크로드 및 하드웨어 특성에 따라 효율성이 제한된다는 점을 염두에 두십시오.