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 

  • максимальная производительность: использование процессора> 100%
  • Любой инструмент для просмотра использования ресурсов исторического процесса? (IE: комбинация сар и pidstat)
  • Как определить статус моего сервера
  • Извлечение информации о процессе
  • Как память RES, сообщенная для процесса Java, будет выше, чем память VIRT?
  • Верхний вид леса с фильтром, могу ли я включить всех детей?
  • Понимание верхней команды с высокой нагрузкой и высоким простоями процессора
  • Убивание дерева процессов в top / htop
  • 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%.

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

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