Средняя частота процессора в МГц через bash и conky

Вопрос или проблема

Я уже давно использую conky для сбора и отображения системной статистики. Более десяти лет назад я заметил, что “средняя” частота процессора в МГц просто копирует первый ядро, а не является средней для всех ядер. Команда для получения средней частоты процессора в conky: ${freq_g 0}. Чтобы получить частоту для каждого ядра отдельно, просто используйте ${freq_g 1} - ${freq_g 12}.

Другими словами, 0 должен означать среднюю частоту, а не первое ядро, а для отдельно каждого ядра начинается с 1 до количества имеющихся ядер. Но 0 и 1 всегда отображают одно и то же значение.

Проверяя в bash, я выполняю эту команду:

grep "cpu MHz" </proc/cpuinfo

Чтобы получить среднее значение,

grep "cpu MHz" /proc/cpuinfo | awk '{sum+=$4;} END{printf "%2.2f", (sum/12)/1000;}'

Это работает, и действительно отображает среднее значение из двенадцати строк, которые выводит команда grep. И, конечно, среднее значение отличается от значения первого ядра.

Хорошо, пока все нормально. Но у нас есть проблема: я также использую программу под названием corectrl для управления режимом работы процессора и управления GPU.

Когда я устанавливаю процессор в “режим производительности”, частота процессора соответственно повышается – с низкого диапазона 2 ГГц до низкого диапазона 4 ГГц, как сообщает conky. Но когда я проверяю вывод указанной выше команды grep, все ядра показывают, что они работают в диапазоне от низкого до среднего значения 3 ГГц.

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

Самая большая проблема, с которой я сталкиваюсь, заключается в том, что моя команда grep редко показывает, что частота процессора превышает 4 ГГц, в то время как conky редко показывает ее ниже 4 ГГц – в режиме производительности. Должен ли я просто отображать выводы своей команды grep в conky и просто принять, что два вывода не будут совпадать?


У меня есть очень похожая проблема с встроенным измерением температуры процессора в conky. Я могу отображать то, что встроенная функция conky отчет, и результаты, используя sensors и hwmon. Встроенная функция conky почти всегда показывает самую низкую температуру. Остальные два метода варьируются гораздо больше и обычно показывают более высокие температуры, чем встроенная функция conky. И я имею в виду, что они могут показывать разницу в десять градусов или больше в течение длительного времени.

Вы усредняете по нескольким ядрам, и поэтому не видите ожидаемых вами чисел.

Вот простой скрипт, который показывает среднее и максимальное значения одновременно без использования grep:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq | \
    awk 'BEGIN{max=0;avr=0}
           {for (i=1;i<=NF;i++) {if ($i>max) max=$i; avr+=$i}}
           END{print avr/NF, max}'

Отображение среднего значения для новых процессоров Intel (ADL/RPL/ARL) не имеет большого смысла, к сожалению, потому что у них есть сочетание P и E ядер с очень разными максимальными частотами. Это можно было бы исправить, но это не ваш случай.

Ответ или решение

Ваши Задача:

Вы сталкиваетесь с проблемой, когда встроенные значения частоты ЦП и температуры в Conky не отображают ожидаемые показатели частоты и температуры ЦП. До настоящего момента вы использовали следующие команды:

  1. Для получения средней частоты всех ядер ЦП:

    grep "cpu MHz" /proc/cpuinfo | awk '{sum+=$4;} END{printf "%2.2f", (sum/12)/1000;}'
  2. Для получения информации о текущей частоте каждого ядра ЦП:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq | \
       awk 'BEGIN{max=0;avr=0} {for (i=1;i<=NF;i++) {if ($i>max) max=$i; avr+=$i}} END{print avr/NF, max}'

Анализ:

  1. Проблемы с оверклокингом и режимами энергосбережения: При использовании программы corectrl для смены режима производительности, разные программы могут показывать различные частоты ЦП. Часть этой разницы может быть связана с тем, что Conky берет данные по максимально допустимой частоте, тогда как реальные данные /proc/cpuinfo могут показывать усредненные значения.

  2. Различия в температурах: Показатели температур, выводимые Conky, могут быть ниже из-за того, что эта программа использует другой метод вычисления или источники данных, нежели sensors и hwmon.

Решение:

  1. Унификация отображаемой информации: Чтобы уменьшить взаимные расхождения и улучшить точность наблюдений, попробуйте перенести результаты из grep непосредственно в визуальное отображение Conky. Таким образом, вы сможете сравнивать показания с использованием одного и того же источника данных.

  2. Настройка скрипта для мониторинга: Рассмотрите возможность создания скрипта, который будет периодически обновляться и выводить данные о средних и максимальных значениях частот и температур. Этот скрипт может использовать метод без применения grep для более точного определения текущего состояния системы.

    Пример скрипта:

    (while true; do
       echo "Среднее и максимальное значения частоты ЦП:"
       cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq | awk '
       BEGIN{max=0; sum=0}
       {for (i=1;i<=NF;i++) {if ($i>max) max=$i; sum+=$i}}
       END{print "Среднее: ", sum/NF/1000, "ГГц", "Максимум: ", max/1000, "ГГц"}'
    
       echo "Температура ЦП:"
       sensors | awk '/Package id 0/ {print $4}' # Этот синтаксис может изменяться в зависимости от вашей конфигурации
       sleep 5 # Пауза перед повторным запуском
    done) > conky_output.txt
  3. SEO и завершение: Для повышения эффективности и удобства работы с данной системой мониторинга рекомендуется оптимизировать ваш заголовок и контент на основе ключевых слов, таких как "мониторинг ЦП Conky", "управление частотой ЦП" и "текущая температура процессора". Это привлечет больше внимания к вашим усовершенствованиям и, возможно, предоставит полезные советы от сообщества.

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

Оцените материал
Добавить комментарий

Капча загружается...