Как мне записать температуры CPU и GPU с помощью lm-sensors в файл во время стресс-теста?

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

Я хочу протестировать нагрузку на ноутбук с установленной Linux Mint и lm-sensors. Я хочу записать температуру ЦП и ГП в файл и попробовал это решение, которое выводило только временной штамп UNIX в одной строке; никаких данных о температуре и без новой строки для каждого временного штампа. Пример:

Время;     temp1;  temp2;  Физический id 0;  Ядро 0; Ядро 1; Ядро 2; Ядро 3; Температура SIO;       temp3
1729536016;     1729536018;     1729536020;     1729536022;     1729536024;     

Как я могу изменить этот скрипт, чтобы выводить данные о температуре для каждой #-секундной метки на новой строке?

Вот один вывод $ sensors в терминале для справки:

iwlwifi_1-virtual-0
Адаптер: Виртуальное устройство
temp1:        +49.0°C  

pch_cannonlake-virtual-0
Адаптер: Виртуальное устройство
temp1:        +66.0°C  

ucsi_source_psy_USBC000:001-isa-0000
Адаптер: ISA адаптер
in0:          35.20 V  (min = +35.20 V, max =  +0.00 V)
curr1:         3.00 A  (max =  +0.00 A)

BAT0-acpi-0
Адаптер: ACPI интерфейс
in0:          16.47 V  

coretemp-isa-0000
Адаптер: ISA адаптер
Идентификатор пакета 0:  +56.0°C  (макс = +100.0°C, крит = +100.0°C)
Ядро 0:        +48.0°C  (макс = +100.0°C, крит = +100.0°C)
Ядро 1:        +49.0°C  (макс = +100.0°C, крит = +100.0°C)
Ядро 2:        +56.0°C  (макс = +100.0°C, крит = +100.0°C)
Ядро 3:        +47.0°C  (макс = +100.0°C, крит = +100.0°C)
Ядро 4:        +51.0°C  (макс = +100.0°C, крит = +100.0°C)
Ядро 5:        +48.0°C  (макс = +100.0°C, крит = +100.0°C)

thinkpad-isa-0000
Адаптер: ISA адаптер
fan1:        2485 об/мин
fan2:        2158 об/мин
ЦП:          +49.0°C  
ГП:          +45.0°C  
temp3:         +0.0°C  
temp4:         +0.0°C  
temp5:         +0.0°C  
temp6:         +0.0°C  
temp7:         +0.0°C  
temp8:         +0.0°C  

ucsi_source_psy_USBC000:002-isa-0000
Адаптер: ISA адаптер
in0:           0.00 V  (min =  +0.00 V, max =  +0.00 V)
curr1:         0.00 A  (max =  +0.00 A)

nvme-pci-7100
Адаптер: PCI адаптер
Компонент:    +41.9°C  (крит = +84.8°C)
Датчик 1:     +41.9°C  (крит = +65261.8°C)
Датчик 2:     +46.9°C  (крит = +65261.8°C)

acpitz-acpi-0
Адаптер: ACPI интерфейс
temp1:        +49.0°C  (крит = +128.0°C)

Примечание: Я неудачно пробовал добавить дополнительные ядра (думаю, это было написано для четырехъядерного устройства, а у этого ноутбука шести ядер), в строке 2 скрипта.

Мне нужно запустить $ sudo sensors-detect?

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

Чтобы логировать температуры ЦП и ГПУ в файл во время стресс-теста на ноутбуке с Linux Mint, вы можете воспользоваться инструментом lm-sensors. Ваша задача заключается в том, чтобы создать скрипт, который будет записывать данные о температурах в файл с необходимым форматированием и обновлениями.

Шаги по созданию скрипта для логирования температур

1. Убедитесь, что lm-sensors установлен и настроен

Сначала убедитесь, что у вас установлены пакеты lm-sensors и sysstat (для использования утилиты sensors, которая помогает в мониторинге). Если вы еще этого не сделали, можете установить их с помощью следующих команд:

sudo apt update
sudo apt install lm-sensors sysstat

После установки выполните команду:

sudo sensors-detect

Следуйте инструкциям на экране, чтобы настроить lm-sensors для вашей системы.

2. Написание скрипта для логирования

Создайте новый файл скрипта, например log_sensors.sh:

nano log_sensors.sh

Вставьте в файл следующий код:

#!/bin/bash

# Укажите путь к файлу, в который будут записываться данные
LOGFILE="sensor_log.csv"

# Запись заголовка в файл
echo "Время; CPU Температура; GPU Температура" > $LOGFILE

# Функция для получения температур
get_temperatures() {
    CPU_TEMP=$(sensors | grep -E 'Core 0|Package id 0' | awk '{print $3}' | tr -d '+°C' | head -n 1)
    GPU_TEMP=$(sensors | grep 'GPU:' | awk '{print $2}' | tr -d '+°C')

    if [ -z "$CPU_TEMP" ]; then
        CPU_TEMP="N/A"
    fi

    if [ -z "$GPU_TEMP" ]; then
        GPU_TEMP="N/A"
    fi

    echo "$(date +%s); $CPU_TEMP; $GPU_TEMP"
}

# Бесконечный цикл записи температур каждые 5 секунд
while true; do
    get_temperatures >> $LOGFILE
    sleep 5
done

3. Делаем скрипт исполняемым

Сохраните изменения и выйдите из редактора. После этого сделайте скрипт исполняемым:

chmod +x log_sensors.sh

4. Запуск скрипта

Теперь вы можете запустить скрипт для начала логирования:

./log_sensors.sh

Скрипт будет обновлять файл sensor_log.csv каждые 5 секунд с текущими температурами процессора и графического процессора.

5. Остановка скрипта

Чтобы остановить скрипт, просто нажмите Ctrl + C в терминале, где он выполняется.

6. Проверка данных

После завершения работы скрипта, вы можете открыть созданный файл sensor_log.csv с помощью текстового редактора или команды cat для просмотра записанных данных:

cat sensor_log.csv

В результате вы получите лог, где для каждого временного штампа будет указана температура ЦП и ГП, что поможет вам в мониторинге работы системы во время стресс-теста.

Заключение

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

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

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