Смущает значения CPU в Unix 'top'

11

На приведенном ниже снимке экрана общая загрузка ЦП составляет 3%, а процесс mysqld использует 57%. Это 57% от общего 3% и, следовательно, mysqld использует только около 1,5% процессора?

верхний скриншот http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

ОБНОВЛЕНИЕ : запрошенный ниже комментатор нажимает клавишу «1» и публикую результаты: клавиша «1» http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

Тефлон Тед
источник

Ответы:

11

57,6% означает, что mysqld использует .576 одного процессора. Несоответствие, скорее всего, будет причиной гонки между сбором данных для системы в целом и сбором данных для каждого процесса.

РЕДАКТИРОВАТЬ: на основе вашего обновления выглядит, как будто у вас есть 16 ядер.

57.5% => .575/16 = .036 = 3.6%.

Так вот откуда ваши 3%.

Если вы сложите все проценты холостых и вычтете из 1600%, это также составит около 57,5%.

Брайен-бразилия
источник
3

Можете ли вы попробовать нажать цифру 1, когда топ работает, и посмотреть, что произойдет.

Редактировать:

Мистер Неизвестный говорит это хорошо.

top говорит: «Если бы у вас было одно ядро ​​процессора, оно было бы занято на 57,5%».

Но у вас есть 16 ядер. Так что это число 57 разбросано повсюду, многопоточность mysqld и все такое ...

Вроде путаницы. Но я думаю, это потому, что top будет сложнее отображать информацию для каждого ядра ... представьте верхнюю информационную строку с 16 или более ядрами!

Также, если вы сложите все процессорное время "% us"

1.7+1.0+2.3+1.0+7.4+11.1+15.1+8.7 = 48.3
48.3/16 = 3.01875

Отсюда и 3% числа ...

Не сейчас
источник
сделано; см обновленный вопрос.
Тефлон Тед
1

Кто-нибудь рекомендовал htop? Не то чтобы это помогло с этим конкретным вопросом больше, чем предыдущие ответы, но я чувствую себя обязанным упоминать htopкаждый раз, когда вижу, что кто-то все еще использует top!

user14018
источник
0

Я не могу сказать, объединяет ли ваш топ несколько процессоров, которые у вас есть, но это все равно не имеет большого смысла.

Может случиться так, что top не получает значения для каждого процесса и общее использование процессора одновременно. Существует небольшое количество времени, когда mysql мог останавливаться или запускаться с использованием большого количества процессоров между моментом считывания информации о процессе и считывания глобальной информации. Это может быть просто состояние гонки.

Конечно, это должно было произойти достаточно долго, чтобы вы могли это заметить, поэтому я предполагаю, что это может быть просто странная ошибка где-то сверху или учет ядра.

Дэвид Пашли
источник
0

us: userspace - то, что вы запускаете над ядром sy: системные вызовы - что работает внутри ядра ni: обработанные процессы id: idle wa: ожидание ввода / вывода hi: аппаратные прерывания - сколько времени тратится на работу с оборудованием si: программные прерывания - сколько времени тратится на обработку программных прерываний (системные вызовы и т. д.)

Ric
источник