как мы можем определить % sy процесс, потребляющий CPU.
В следующем случае нет сетевого фильтра и трафик ниже 1 Мбит / с. Но все же системный процесс использует слишком много ЦП, и использование ЦП для процесса с ограниченным доступом также велико. Как мы можем определить процесс, потребляющий ЦП на системном уровне.
top - 01:22:18 up 10:09, 3 users, load average: 14.36, 13.68, 11.68
Tasks: 200 total, 3 running, 197 sleeping, 0 stopped, 0 zombie
Cpu0 : 3.1%us, 63.5%sy, 33.3%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 1.8%us, 34.2%sy, 64.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16436984k total, 8449956k used, 7987028k free, 73420k buffers
Swap: 8385920k total, 0k used, 8385920k free, 5566404k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5706 tlmsys 27 4 4490m 1.6g 13m S 51.6 10.2 12:37.67 java
4233 oracle 25 0 3448m 47m 33m R 9.9 0.3 0:03.62 oracle
3166 root 15 0 62616 1216 656 S 0.7 0.0 0:01.47 sshd
5512 tlmsys 15 0 96992 12m 9424 S 0.7 0.1 0:04.03 stlfetch
5520 oracle 15 0 3424m 72m 69m S 0.7 0.5 0:08.42 oracle
6 root 10 -5 0 0 0 S 0.3 0.0 0:01.59 events/0
4476 monitor 15 0 90116 1764 1008 S 0.3 0.0 0:00.61 sshd
5872 tlmsys 25 4 4479m 135m 11m S 0.3 0.8 0:25.72 java
7139 oracle 16 0 12740 1180 824 S 0.3 0.0 0:06.76 top
9268 root 16 0 12740 1180 816 S 0.3 0.0 0:02.80 top
9978 root 15 0 12740 1176 820 R 0.3 0.0 0:00.07 top
1 root 15 0 10348 696 584 S 0.0 0.0 0:00.79 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.02 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.01 migration/1
5 root 34 19 0 0 0 R 0.0 0.0 0:00.00 ksoftirqd/1
7 root 10 -5 0 0 0 S 0.0 0.0 0:00.16 events/1
8 root 10 -5 0 0 0 S 0.0 0.0 0:00.09 khelper
145 root 12 -5 0 0 0 S 0.0 0.0 0:00.03 kthread
150 root 10 -5 0 0 0 S 0.0 0.0 0:00.15 kblockd/0
151 root 10 -5 0 0 0 S 0.0 0.0 0:00.03 kblockd/1
152 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
311 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
312 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/1
315 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
317 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
389 root 18 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
390 root 15 0 0 0 0 S 0.0 0.0 0:00.78 pdflush
391 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0
392 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
393 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 aio/1
599 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
645 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 mpt_poll_0
ясно, что java занимает 51,6% процессора и oracle 9.9, поэтому, даже если все процессоры процесса объединены, его уровень ниже 100%, а средняя загрузка должна быть меньше 2,
но почему средняя загрузка 14.
Как мы можем увидеть процесс ядра (% sy), который использует высокий процессор.
uname -a
Linux 2.6.18-155.el5 (todbase1)
если это ошибка ядра. Разве мы не видим процесс со стороны системы.
% sy указывает время, затраченное на процессы ядра (на самом деле потоки ядра), и на те части ядра, которые не являются процессами. Процессы ядра обычно отображаются вверху (ksoftirqd/0
является одним). Если вы выполняете сортировку по мгновенному использованию ЦП, и это процесс ядра, вносящий вклад в% sy, этот процесс будет отображаться. Однако, если это не процесс ядра, а ядро, которое выполняется, top не предоставит никакой информации.
В частности, ядро эффективно имеет контекст прерывания (на самом деле их несколько, для аппаратных и программных прерываний) и контекст процесса (для выполнения системных вызовов). Если используется память, последний тип будет отображаться как процессорное время процесса, который их вызвал. Однако аспекты планирования ядра и активность компонентов ядра, не связанных с системным вызовом или другой обработкой прерываний, не будут иметь подробной учетной информации.
С более новым ядром вы можете использовать perf top, а в redhat 5.X, если вы хотите посмотреть глубже, вы можете использовать systemtap, будьте осторожны с systemtap в живой производственной системе, потому что он работает в пространстве ядра.
Для системного времени есть два основных кандидата на ввод-вывод:
Что меня немного озадачивает, так это твой кайф отлично стоимость.
Возможно cat /proc/interrupts
предоставит вам больше информации здесь.
Я склонен говорить, что у вас проблемы с сетью.
Итак, добавьте вывод ethtool -S IFACE |grep -vw 0
, слишком. Замените IFACE именем вашей основной сетевой карты.