Top говорит, что используется 100% процессор, но 50% ядер простаивают?

top - 08:43:16 up 96 days, 22:16, 1 user, load average: 4.03, 3.92, 3.98 Tasks: 199 total, 1 running, 198 sleeping, 0 stopped, 0 zombie Cpu0 : 0.0%us, 0.5%sy, 50.0%ni, 49.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 0.0%us, 3.9%sy, 46.8%ni, 49.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu2 : 0.0%us, 3.0%sy, 47.5%ni, 49.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu3 : 0.0%us, 5.0%sy, 45.5%ni, 49.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3593 foldinga 39 19 276m 80m 2972 S 402 1.0 12:55.42 FahCore_a3.exe 

Теперь, как топ-топ говорит, что использует 100% процессора (400% / 4 ядра), в то время как ровно половина процессоров простаивает?

 processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 30 model name : Intel(R) Xeon(R) CPU X3440 @ 2.53GHz stepping : 5 cpu MHz : 2526.932 cache size : 8192 KB physical id : 0 siblings : 4 core id : 3 cpu cores : 4 apicid : 6 initial apicid : 6 fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid bogomips : 5054.02 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: 

EDIT: В ответ на i_grok и Max Alginin я убедился, что Hyperthreading включен на сервере. Как только я включил его, вот результаты сверху. Обратите внимание, те же симптомы очевидны.

 top - 10:17:01 up 47 days, 10:28, 3 users, load average: 7.93, 7.96, 8.02 Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie Cpu0 : 0.0%us, 2.8%sy, 42.0%ni, 55.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 0.0%us, 2.2%sy, 42.5%ni, 55.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu2 : 1.2%us, 3.7%sy, 95.1%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu3 : 0.0%us, 1.7%sy, 43.1%ni, 55.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu4 : 0.0%us, 1.1%sy, 43.6%ni, 55.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu5 : 0.0%us, 0.0%sy, 44.8%ni, 55.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu6 : 0.0%us, 2.2%sy, 42.5%ni, 55.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu7 : 0.0%us, 1.7%sy, 43.1%ni, 55.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8177700k total, 6258704k used, 1918996k free, 29248k buffers Swap: 0k total, 0k used, 0k free, 5203172k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8132 foldinga 39 19 557m 99m 3060 S 796 1.2 1510:53 FahCore_a3.exe 

5 Solutions collect form web for “Top говорит, что используется 100% процессор, но 50% ядер простаивают?”

Чтобы расширить ответ Макса: Процессоры с гиперпотоком сообщают о двух ядрах операционной системе, когда есть действительно одно физическое ядро. Linux видит 4 ядра, но ваш процессор имеет 2 физических ядра.

Физическое ядро ​​обладает расширенными возможностями планирования и некоторыми дополнительными транзисторами для обработки второго потока, но для многих приложений с интенсивным процессором гиперпоточность не дает реальной выгоды.

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

РЕДАКТИРОВАТЬ:

Если я загружаю половину ядер с помощью cat /dev/urandom > /dev/null вот что я получаю от современного Xeon, работающего с CentOS 6:

 top - 19:32:38 up 1 day, 8:17, 3 users, load average: 12.13, 8.73, 4.07 Tasks: 694 total, 13 running, 681 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 50.4%sy, 0.0%ni, 49.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 49552656k total, 2693452k used, 46859204k free, 186448k buffers Swap: 15999992k total, 0k used, 15999992k free, 469560k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21193 root 20 0 98.5m 560 452 R 100.0 0.0 6:23.31 cat 21194 root 20 0 98.5m 560 452 R 100.0 0.0 6:22.76 cat 21195 root 20 0 98.5m 560 452 R 100.0 0.0 6:22.38 cat 21201 root 20 0 98.5m 560 452 R 100.0 0.0 6:21.98 cat 21202 root 20 0 98.5m 560 452 R 100.0 0.0 6:21.62 cat 21203 root 20 0 98.5m 560 452 R 100.0 0.0 6:21.36 cat 21206 root 20 0 98.5m 560 452 R 100.0 0.0 6:20.43 cat 21187 root 20 0 98.5m 560 452 R 99.6 0.0 6:24.45 cat 21204 root 20 0 98.5m 560 452 R 99.6 0.0 6:21.03 cat 21205 root 20 0 98.5m 560 452 R 99.6 0.0 6:20.73 cat 21213 root 20 0 98.5m 560 452 R 99.6 0.0 6:20.09 cat 21214 root 20 0 98.5m 560 452 R 99.6 0.0 6:19.70 cat 

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

Проблема касательно была связана с гиперпотоком, но, как я постоянно указывал респондентам, это не было причиной 50% холостого хода.

Причина была связана с неправильной конфигурацией динамических тиков ядра. Я запускал Gentoo и использовал специально построенное ядро. После обновления ядра, когда-то в середине 2012 года, проблема была решена сама собой.

Я не думаю, что проблема Hyperthreading здесь. Если вы посмотрите на одну из следующих строк:

 Cpu0 : 0.0%us, 0.5%sy, 50.0%ni, 49.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 

Проблема заключается не в том, что половина ваших ядер остается без дела, это то, что каждое ядро не работает в 50% случаев! Противоречивое это, хотя и линия:

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3593 foldinga 39 19 276m 80m 2972 S 402 1.0 12:55.42 FahCore_a3.exe 

Что говорит, что foldingathome максимизировал все четыре ядра. Это просто странно и заставляет меня подозревать, что вы обнаружили ошибку в отчете ядра о статистике процессора. Вот несколько примеров:

  • Запустите foldingathome, не изменив его.
  • Запустите другую программу, которая будет заливать все ядра, и посмотрите, какие цифры вы получите.

Кроме того, это foldingathome, использующий только ваш процессор для вычисления, или же их GPU в миксе?

Я подозреваю, что верхняя сводка и линия процесса усредняются в разные периоды времени.

Технологическая линия говорит «правильно тогда» для некоторого значения n, процесс потребляет 100% одного логического ядра, и резюме говорит в течение более длительного периода времени, когда он потребляет 50%, поэтому он, вероятно, работает на выходе, когда он запускается но только в половине случаев.

Я видел это при выводе сверху в пакетном режиме, особенно если ему задан только один цикл. Если в bash зацикливается, например, строка процесса может сказать 100% при множественных воплощениях, но сводка будет меньше, чем 1 / n раз 100% (для n логических ядер).

Проверяйте время, затрачиваемое на процессор, с течением времени – показывает ли строка процесса или сводка как правильную?

Как вы работаете сверху?

Я протестировал сценарий i_groks на Centos 6 на двухъядерном ядре AMD (8 "кажущихся" ядер на процессор, так как AMD имеет эквивалент HT) и работает 22 таких процесса, как этот

 cat /dev/urandom > /dev/null 

мы наблюдаем, что общий объем использования ЦП составляет около 95%. Я дважды проверял с помощью atop, и общее использование было согласованным.

Дополнительные процессы не будут увеличивать общее использование, вероятно, из-за конкуренции.

Глядя на основной уровень: 16 "кажущихся" ядер (каждый физический сердечник имеет 2 sibblings) показаны как работающие почти на 100%.

Таким образом, я не могу воспроизвести первоначально сообщенную ситуацию / проблему.

  • Какие процессы меняют память
  • Определите, сколько процессов использует каждый диск?
  • Значение цветов в htop
  • Как правильно запустить команду «сверху» через SSH?
  • Инструмент для просмотра верхних N элементов в потоке
  • Запросы о верхней команде
  • Верхняя команда OSX показывает 5, работающих на четырехъядерном ядре
  • Почему верхний отчет указывает на неправильное использование ЦП?
  • вывод вершины усекает до 80 столбцов при запуске cron
  • Верхний вид леса с фильтром, могу ли я включить всех детей?
  • `top` не освежающий экран при выходе
  • Какая разница между общим использованием ЦП и использованием Процессного ЦП
  • Interesting Posts

    Как я могу покрасить код файла журнала на основе сообщений об ошибках, предупреждениях и информации?

    Отсутствует оболочный модуль в perl 5.18

    Передача аргумента из сценария оболочки в новый сеанс

    Разрешить другому пользователю запускать определенный скрипт в качестве идентификатора

    Как я могу использовать переменную $ в расширении скобки оболочки последовательности?

    Переустановить программное обеспечение без повторной загрузки из программного центра?

    Как запустить tmux автоматически в оболочке рыбы при подключении к удаленному серверу через ssh

    Вопрос VirtualBox на Fedora 24

    Войдите в систему по ssh, выполните одну команду, и я не хочу покидать bash

    изменить параметры по умолчанию epson xp211 в чашках

    Как исправить мою fstab

    Неблокирующий буферный именованный канал?

    использовать загрузочный диск для перенаправления на флешку

    Gedit: подсветка синтаксиса эхом самозакрывающихся тегов XHTML в JavaScript на PHP

    увеличение ширины столбца ps -o

    Linux и Unix - лучшая ОС в мире.