16 ядер не используются из 80 ядер

11

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

Это сервер Dell PowerEdge R900 с 4 разъемами, 4 раза по 10-ядерному Xeon. Таким образом, 40 ядер, с HT его 80 потоков. (Процессор Intel® R Xeon® E7–4850 с частотой 2,00 ГГц). Системная память 512 ГБ. Под управлением Ubuntu 14.04.1 LTS. Я еще не перезагрузил сервер, я надеялся избежать этого.

uname -a
Сборка Linux 3.13.0-35-generic # 62-Ubuntu SMP пт 15 августа 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

Я проверю следующее:

Температура измеряется с помощью i7z: (не может отображаться 4 гнезда

Скорость процессора от cpuinfo 1994.00Mhz
Истинная частота (без учета Turbo) 1994 МГц

Сокет [0] - [физические ядра = 10, логические ядра = 20, максимальное количество онлайн-ядер = 10]
  Множитель процессора 15x || Тактовая частота шины (BCLK) 132,93 МГц
  TURBO ENABLED на 10 сердечниках, Hyper Threading ON
  Максимальная частота без учета Turbo 2126,93 МГц (132,93 x [16])
  Максимальный множитель TURBO (если включен) с ядрами 1/2/3/4/5/6 равен 0x / 0x / 0x / 0x / 0x / 0x
  Реальная частота тока 1994,02 МГц (максимум ниже)
        Core [core-id]: фактическая частота (Mult.) C0% Halt (C1)% C3% C6% Temp
        Core 1 [1]: 1994.01 (15.00x) 100 0 0 0 75
        Core 2 [5]: 1994,00 (15,00x) 100 0 0 0 77
        Core 3 [9]: 1994.02 (15.00x) 100 0 0 0 76
        Core 4 [13]: 1994,00 (15,00x) 100 0 0 0 77
        Core 5 [17]: 1994,00 (15,00x) 100 0 0 0 77
        Core 6 [21]: 1994,00 (15,00x) 97,7 0,404 0 1,86 77
        Core 7 [25]: 1994,00 (15,00x) 94,5 0 1 5,27 77
        Core 8 [29]: 1994.00 (15.00x) 100 0 0 0 76
        Core 9 [33]: 1994,00 (15,00x) 99,8 0 1 1 75
        Core 10 [37]: 1994,00 (15,00x) 100 0 0 0 73
  Максимальная частота без учета Turbo 2126,93 МГц (132,93 x [16])
  Максимальный множитель TURBO (если включен) с ядрами 1/2/3/4/5/6 равен 0x / 0x / 0x / 0x / 0x / 0x
  Реальная частота тока 1994,02 МГц (максимум ниже)
        Core [core-id]: фактическая частота (Mult.) C0% Halt (C1)% C3% C6% Temp
        Core 1 [1]: 1994.02 (15.00x) 100 0 0 0 74
        Core 2 [5]: 1994,00 (15,00x) 100 0 0 0 76
        Core 3 [9]: 1994.02 (15.00x) 100 0 0 0 76
        Core 4 [13]: 1994,00 (15,00x) 100 0 0 0 77
        Core 5 [17]: 1994,00 (15,00x) 100 0 0 0 76
        Core 6 [21]: 1994,00 (15,00x) 97 0 1 2,43 77
        Core 7 [25]: 1994,00 (15,00x) 92,9 0 1 6,81 77
C0 = процессор работает без остановки00x) 100 0 0 0 75
C1 = процессор работает с остановками (состояния> C0 являются энергосберегающими) 1 1 75
C3 = Ядра, работающие с выключенным PLL и выключенным кешем ядра 0 0 73
C6 = все в состоянии ядра C3 + сохранено в кэш последнего уровня
  Выше значения в таблице приведены в процентах за последние 1 сек.
[core-id] ссылается на номер core-id в / proc / cpuinfo
Сообщение «Значения мусора» выводится при чтении значений мусора
  Ctrl + C для выхода

Idle: последние 16 ядер все на 100% простаивают:

mpstat -p ALL 1:
Среднее: ЦП% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle
Среднее: все 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 28,61
Среднее: 0 92,93 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,07
Среднее 1 94,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 6,00
Среднее 2 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Среднее значение: 3 83,33 0,00 2,08 0,00 0,00 0,00 0,00 0,00 0,00 14,58
Среднее значение: 4 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Среднее: 5 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
.................................................. ........
Среднее: 64 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 66 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 67 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 71 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 77 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

Лучшие цифры загрузки:

вверх - 17:41:48 до 35 дней, 6:28, 15 пользователей, средняя загрузка: 77,69, 70,48, 62,73
Задачи: всего 1327, 44 работает, 1281 спит, 2 остановлены, 0 зомби
% Cpu (s): 63,7 мкс, 13,6 sy, 0,0 ni, 22,3 id, 0,2 wa, 0,0 hi, 0,2 si, 0,0 st
KiB Mem: 52837942 + всего, 52553190 + использовано, 2847524 свободно, 535660 буферов
Своп KiB: всего 78124032, 2105608 используется, 76018416 бесплатно. 40637328 + кэшированный Mem

Иногда% простоя больше не равен 100, но немного меньше, как вы можете видеть здесь, но в основном он остается на уровне простоя 100%.

Среднее: ЦП% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle
Среднее: все 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 28,61
Среднее значение: 64 0,13 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,87
Среднее: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 66 0,00 0,00 2,63 0,00 0,00 0,00 0,00 0,00 0,00 97,37
Среднее: 67 0,00 0,00 0,13 0,13 0,00 0,00 0,00 0,00 0,00 99,75
Среднее: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее значение: 71 0,00 0,00 0,12 0,00 0,00 0,00 0,00 0,00 0,00 99,88
Среднее: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 77 0,00 0,00 0,13 0,00 0,00 0,00 0,00 0,00 0,00 99,87
Среднее: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Среднее: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

Я также запустил эту команду, чтобы убедиться, что они все в сети:

для COUNT в `seq 01 79`; сделайте echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; 

С помощью программы HTop я могу визуализировать полосу использования процессора на поток и увидеть 64 заполненных бара и 16 пустых (последние 16).

Когда я пытаюсь запустить процесс с ядром> 63, это также не удается сделать так:

root @ server: ~ # taskset -c 63 время
Использование: время [-apvV] [-f формат] [-o файл] [--append] [--verbose]
       [--portability] [--format = format] [--output = file] [--version]
       [--quiet] [--help] команда [arg ...]
root @ server: ~ # taskset -c 64 раз
taskset: не удалось установить сходство pid 0: неверный аргумент
root @ server: ~ # taskset -c 65 раз
taskset: не удалось установить сходство pid 0: неверный аргумент

Связанная тема: /ubuntu/536541/ubuntu-uses-only-2-out-of-4-processor-cores

РЕДАКТИРОВАТЬ: Оказывается, что ядра отключаются на лету, но не запускаются должным образом. Кажется, что на этих недоступных ядрах запущены процессы, но на них невозможно запустить какой-либо новый процесс. Согласно журналу dmesg, ядра отключены и включены быстро друг за другом. Я должен сказать, что это было намерение отключить эти ядра, поэтому мы отключили эту «функцию». Пример журнала DMESG:

[Пн Янв 12 12:42:40 2015] kvm: отключение виртуализации на CPU79
[Пн Янв 12 12:42:40 2015] smpboot: CPU 79 теперь не в сети
....
[Пн Янв 12 12:43:12 2015] smpboot: Загрузочный узел 0 Процессор 79 APIC 0xf3
[Пн Янв 12 12:43:12 2015] kvm: включение виртуализации на CPU79

Мы включаем / отключаем ядра через:

для COUNT в `seq 64 79`; сделайте echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; выполнено

Мы никогда не связывали эти команды с нашими 16 недоступными ядрами, так как обычно вышеприведенные команды работают правильно. (мы также пытались отключить powermanager, но это не помогло)

HenrivdGeest
источник
1
Почему вы или ваша компания не использовали Ubuntu Server вместо Ubuntu для обычных ПК?
XperianX
1
Не исключено, что 16 ваших ядер фактически используются для МАКСИМАЛЬНОЙ емкости, в результате чего 16 виртуальных ядер не могут быть использованы.
anonymous2
1
Все ли 8 ядер (16 виртуальных) находятся на одном физическом процессоре или они распределены по всем 4 сокетам? Если они расположены на одном физическом процессоре, возможно ли, что эти ядра вышли из строя?
Jibberish51
2
Мне интересно, есть ли где-нибудь в системе код, представляющий маску привязки к ЦП всего с 64 битами, которая не позволяет процессам использовать последние 16 ядер.
Касперд
Учитывая, что 80-16 = 64, мне кажется, что есть какое-то искусственное ограничение на максимальное количество используемых ядер. Возможно, какое-либо программное обеспечение, которое вы используете, настроено на максимум 64 ядра, или, возможно, оно не может генерировать более 64 потоков.
Clonkex

Ответы:

1

Не все программы могут использовать несколько потоков. php один например. Если одному процессу php требуется много ЦП, максимальный из них будет только 1 ЦП. А остальные будут простаивать.

деревенщина
источник