Вопрос или проблема
Запуская sudo cpupower monitor
на Ubuntu 24.04, я получаю:
| Nehalem || Mperf || RAPL || Idle_Stats
CPU| C3 | C6 | PC3 | PC6 || C0 | Cx | Freq || pack | core | unco || POLL | C1_A | C2_A | C3_A
0| 0.00| 0.46| 0.00| 0.00|| 11.71| 88.29| 3060||37496059|27532217| 73852|| 0.01| 8.94| 79.93| 0.00
1| 0.00| 0.46| 0.00| 0.00|| 6.56| 93.44| 2790||37496059|27532217| 73852|| 0.00| 2.56| 53.19| 37.97
2| 0.00| 4.67| 0.00| 0.00|| 9.14| 90.86| 3194||37496059|27532217| 73852|| 0.01| 4.43| 58.09| 28.77
3| 0.00| 4.67| 0.00| 0.00|| 6.24| 93.76| 3239||37496059|27532217| 73852|| 0.00| 1.69| 34.62| 57.66
4| 0.00| 0.00| 0.00| 0.00|| 0.29| 99.71| 4461||37496059|27532217| 73852|| 0.00| 0.00| 0.00| 99.97
5| 0.00| 0.00| 0.00| 0.00|| 29.52| 70.48| 4457||37496059|27532217| 73852|| 0.00| 64.48| 0.00| 6.48
6| 0.00| 0.00| 0.00| 0.00|| 47.92| 52.08| 4123||37496059|27532217| 73852|| 0.00| 0.95| 0.31| 51.40
7| 0.00| 0.00| 0.00| 0.00|| 0.00|100.00| 3753||37496059|27532217| 73852|| 0.00| 0.00| 0.00| 99.99
8| 0.00| 25.03| 0.00| 0.00|| 3.27| 96.73| 2807||37496059|27532217| 73852|| 0.01| 4.13| 54.72| 38.03
9| 0.00| 62.12| 0.00| 0.00|| 2.32| 97.68| 2897||37496059|27532217| 73852|| 0.00| 1.29| 30.79| 65.69
10| 0.00| 77.85| 0.00| 0.00|| 2.19| 97.81| 3064||37496059|27532217| 73852|| 0.00| 0.94| 18.42| 78.51
11| 0.00| 0.00| 0.00| 0.00|| 14.84| 85.16| 2497||37496059|27532217| 73852|| 0.01| 57.88| 27.45| 0.38
12| 0.00| 70.55| 0.00| 0.00|| 3.27| 96.73| 2399||37496059|27532217| 73852|| 0.00| 1.33| 30.14| 65.41
13| 0.00| 54.45| 0.00| 0.00|| 4.02| 95.98| 2213||37496059|27532217| 73852|| 0.00| 1.06| 43.49| 51.62
14| 0.00| 67.90| 0.00| 0.00|| 3.36| 96.64| 2334||37496059|27532217| 73852|| 0.00| 1.34| 30.91| 64.54
15| 0.00| 72.39| 0.00| 0.00|| 2.41| 97.59| 2167||37496059|27532217| 73852|| 0.00| 1.25| 26.74| 69.73
Каково значение столбцов в этой таблице? Руководство cpupower
(https://linux.die.net/man/1/cpupower-monitor) не содержит этой информации. Я предполагаю, что C3
, C6
и т.д. — это проценты времени, проведенного в данном состоянии C процессора.
Также я запускаю программу с двумя потоками, закрепленными за процессорами #5 и #6. Ядра #2 и #3, содержащие гипертрединговые процессоры 4-7, изолированы с помощью GRUB_CMDLINE_LINUX="nohz=on nohz_full=4-7 rcu_nocbs=4-7 isolcpus=4-7 irqaffinity=0-3,8-15"
. Таблица выше подтверждает нагрузку на процессоры #5 и #6, но также постоянно показывает небольшую нагрузку на процессор #4. Это не соответствует экрану Монитора системы Ubuntu, который постоянно показывает 0% нагрузки на процессор #4, указанный здесь как #5:
Кроме того, почему логические процессоры на одном физическом ядре показывают разные частоты?
Ответ или решение
Объяснение колонок в таблице cpupower-monitor
Запуск команды sudo cpupower monitor
в Ubuntu 24.04 предоставляет пользователю информацию о состоянии процессора и его энергопотреблении. В таблице выводятся несколько колонок, каждая из которых содержит важные показатели, которые стоит детально обсудить.
1. Статусы процессоров и C-состояния
- CPU: Начинается с номера процессора, начиная с нуля и заканчивая максимальным номером логического ядра.
- C3, C6, PC3, PC6: Эти колонки показывают процент времени, проведенного CPU в различных C-состояниях:
- C3: Энергосберегающее состояние, в котором процессор может снизить свое потребление; основное состояние ожидания с низким энергопотреблением.
- C6: Более глубокое состояние по сравнению с C3, где тактовая частота ещё больше снижается.
- PC3 и PC6: Эти колонки представляют собой специально обработанные состояния, которые используют другие механизмы управления энергопотреблением. Например, они могут быть связаны с архитектурой процессора и его функционалами.
2. Энергетические состояния
- Mperf: Это значение указывает на производительность процессора в различных состояниях. Обычно его значение повышается по мере увеличения нагрузки.
- RAPL (Running Average Power Limit): Показатель, позволяющий отслеживать среднее потребление энергии процессора, снова понятая через его C-состояния.
3. Частота и нагрузка
- Idle_Stats: Это обозначение состояния простоя, в которое входит процессор в моменты низкой активности. Он имеет несколько колонок:
- C0: В этом состоянии CPU активно работает.
- Cx: Общее время в C-состояниях, где x может указывать на любое из состояний (например, C1, C2 и т.д.).
- Freq: Текущая частота процессора в мегагерцах. Это важно для понимания, как CPU адаптируется к нагрузке.
4. Разделение по ядрам
Колонки pack, core, unco и POLL, C1_A, C2_A, C3_A также дают профессионалы больше информации о ресурсах, использованных на каждом Ядре:
- pack: Статистика о состоянии пакетов, объединяющих физические ядра.
- core: Отображает нагрузку на каждое логическое ядро.
- unco: Информация об нераспределенных колл-пакетах.
- POLL, C1_A, C2_A, C3_A: Эти колонки указывают на период, проведенный в различных состояниях ожидания, отражая как активные, так и простые состояния процессора.
5. Объяснение различий в частоте
Что касается вопроса о различии в частотах логических CPU на одном физическом ядре, это может быть связано с тем, как процессор управляет энергетическими ресурсами. Частота процессора может изменяться в зависимости от текущих задач и загрузки, поэтому разные логические процессоры могут показывать разные частоты даже на одном физическом ядре. Эта аномалия должна быть рассмотрена в контексте циклов работы инфраструктуры и ее управления перегрузкой.
Заключение
Таким образом, вывод, который можно сделать из анализа столбцов таблицы cpupower-monitor, демонстрирует глубокую связь между состояниями активности процессора и его энергоэффективностью. Благодаря этому, администраторы систем могут более точно управлять нагрузкой и оптимизировать энергопотребление на серверных и рабочие станциях, особенно в условиях многопоточности и изоляции ядер.