Как найти температуру без стороннего программного обеспечения?

12

Я работаю sensors-detectв своей системе с, lm-sensorsпотому что моя система постоянно выключается, когда я смотрю видео на YouTube

Поэтому мне интересно, как я могу найти температуру вентилятора и процессора без стороннего программного обеспечения, как lm-sensors? Я просто не уверен, где они хранятся.

processor   : 0
vendor_id   : AuthenticAMD
cpu family  : 16
model       : 6
model name  : AMD Athlon(tm) II X2 240e Processor
power management: ts ttp tm stc 100mhzsteps hwpstate

x86_64

wjandrea
источник
Какую версию Ubuntu вы используете?
wjandrea
1
Это зависит от вашего процессора. Для многих современных процессоров Intel программа турбостата будет читать MSR (машинно-специфичные регистры) и отображать температуру корпуса и ядра. Отредактируйте свой вопрос и добавьте ваш процессор, сделайте модель. Если это тот, который я знаю, я отвечу, как это сделать вручную.
Дуг Смитис
будет ли дополнительная оперативная память, которую я добавил, иметь проблему .., оперативная память составляет 1333 мегатрансфера в секунду, а максимальный процессор - МГц: 2800,0000
11
Что вы подразумеваете под сторонним? Как вы думаете, сколько Ubuntu является программным обеспечением первого лица?
Муру
1
Я не совсем уверен, сколько сторон использует Ubuntu, прежде чем пользователь перехватит дистрибутив для использования. В общем, я знаю, что Ubuntu - это операционная система Linux, которую я назвал первой стороной, за которой следую я, а затем вопрос, оставив мою сомнительную программу сторонней, а не высказывая вариант сторонней шестой стороны или после спонсоров ubtunu и / или программ для добровольных программистов, так что я точно не знаю.

Ответы:

12

Похоже, что вы хотите, /sys/class/hwmonи /sys/class/thermal.

Оба из них обеспечивают простой доступ к нужным данным на основе оболочки (каталог hwmon также будет включать другие типы датчиков). У каждого есть один каталог для каждого интерфейса датчика в вашей системе (который может иметь более одного датчика).

Три другие вещи, чтобы отметить, хотя:

  • Если у вас действительно плохая система, запуск sensorsкоманды хотя бы раз в секунду не должен иметь ощутимого эффекта. Фактически, регулярное чтение файлов в вышеупомянутых каталогах может иметь больший эффект.
  • Графики твой друг здесь. Я бы предложил запустить что-то вроде netdata или collectd, чтобы вы могли просматривать данные в реальном времени (или почти в реальном времени).
  • Проверьте свои напряжения тоже. То, что вы описываете, также может быть связано с наличием источника питания, который не соответствует требованиям к питанию вашей системы. Это будет обозначено значительным падением напряжения, когда система находится под высокой нагрузкой.
Остин Хеммелгарн
источник
Это должен быть принятый ответ, потому что он имеет дело с заданным вопросом: «Как я могу найти температуры [...] вручную [...]? Я просто не уверен, где они хранятся». Затем некоторые /proc/cpuinfoпоказывают процессор AMD. Не уверен, почему OP принял специальный ответ Intel, который требует установки другого инструмента.
Аарон Ф
@AaronF: я не согласен. Я написал специальный ответ Intel, потому что ОП попросил меня. Никакой другой инструмент не нужно устанавливать? Причина, по которой я считываю температуры пакетов напрямую через MSR, а не через, /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputсостоит в том, что большая часть моей работы связана с чрезвычайно простаивающими системами, и последний метод имеет гораздо больше накладных расходов, что приводит к стабильному результату на 4-5 градусов. Конечно, нет никакой разницы для сильно загруженной системы.
Дуг Смитис
1
@DougSmythies Я думаю, что ваш ответ был очень хорошим и полным, поэтому я не понижал и не оставлял под ним отрицательный комментарий :-) Программа rdmsr является частью msr-tools, которая по умолчанию не установлена ​​на моем Intel. машина (работающая под управлением Ubuntu, может быть, другие дистрибутивы устанавливаются по умолчанию, если они обнаруживают Intel?)
Аарон Ф
@AaronF: я забыл, что msr-tools - это необходимый дополнительный пакет. Таким образом, мой метод также нуждается и в дополнительном инструменте, чего не хотел ОП.
Дуг Смитис
2
Здравствуйте @ DougSmythies и Aaron F, я изначально выбрал DougSmythies в качестве основного ответа, потому что он был первым, кто оказал помощь, и его ответ был очень ясным о том, как искать температуру вручную, а также использовать ручное решение в простом в использовании Программа с поддержкой mdmsr. На самом деле это был сложный обман, поскольку оба ответа были очень информативными, но так как вы оба согласились, что этот ответ был лучшим. Я вернул основной ответ Аарону, спасибо за вашу поддержку.
9

Этот ответ об одном способе мониторинга температуры процессора вручную для некоторых процессоров Intel с помощью прямого доступа к регистрам, специфичным для машины (MSR).

Первое, что следует отметить, в этом случае то, что считывается из MSR, относится к Tcc, предельной температуре, поэтому для определения фактической температуры требуется дополнительный расчет.

Обратитесь к Руководству разработчика программного обеспечения Intel® 64 и IA-32 для архитектур или, в вашем случае, к эквиваленту AMD.

В моем случае я хочу биты 22-16 MSR в 0x1B1, также известный как IA32_PACKAGE_THERM_STATUS. Tcc для моего старшего i7-2600K составляет 98 градусов.

Вот простой скрипт для отслеживания температуры (и частоты процессора) вручную:

#! /bin/dash
#
# temp_mon3 Smythies 2016.10.05
#       a simplified version of temp_mon2,
#       for monitoring temp.
#       Note: it is on purpose that -a is not used.
#       Also CPU0 frequency (1 is good enough, when all
#       are loaded).
#
# temp_mon2 Smythies 2016.09.29
#       Monitor Package temperatures.
#       Use clock modulation to control temps.
#       i.e. simulate the second to last level
#       of defense.
#       Use simple primatives.
#       run as sudo
#       hardcoded for my tcc of 98 degrees.
#
echo ... begin package temperature monitoring ...

#
# In case I forgot (which I often do)

modprobe msr

#
# first let the drastic effect of the sudo command decay
# Done later in temp_mon3.

#
# some stuff

COMMAND="rdmsr --bitfield 22:16 -u 0x1B1"
COMMAND2="cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq"

#
# then get on with it

while [ 1 ];do
  sleep 4
  TEMP_RAW=$(eval $COMMAND)
  CPU0_FREQ=$(eval $COMMAND2)
  TEMP_ACT=$((98-TEMP_RAW))
  echo "$TEMP_ACT   $CPU0_FREQ"
done

И вот пример выходных данных, где я добавляю некоторую нагрузку на процессор через некоторое время (временная температура изменяется от 31 до 73 градусов):

$ sudo ./temp_mon3
[sudo] password for doug:
... begin package temperature monitoring ...
31   1605275
31   1605154
32   1605164
30   1605148
31   1605176
51   3511279
54   3511278
55   3511279
57   3511283
58   3511279
60   3511278
61   3511284
63   3511279
64   3511280
64   3511280
66   3511280
67   3511278
68   3511280
68   3511281
69   3511278
71   3511280
70   3511281
71   3511281
71   3511280
72   3511276
72   3511277
73   3511283
73   3511279
^C
Дуг Смитис
источник
Почему вы используете eval?
wjandrea
@Doug: Отличный ответ, чтобы использовать MSR! Однако разве правильный регистр MSR 0x19c ? И температура TEMP = TCC - [0x19c бит 22:16]. Так что сначала нужно прочитать TCC.
abu_bua
@abu_bua: я не знаю, работает ли 0x19c или нет, но то, что я использую, делает. И да, я жестко закодировал TCC для своего процессора, а не лучшее решение, которое будет читать его с процессора.
Дуг Смитис
1
ты установил sudo apt install msr-tools?
abu_bua
1
msr-tools это пакет. Это было бы man rdmsrи man wrmsrдля двух отдельных команд в пакете.
Дуг Смитис
5

Я не знаю, чего ты действительно хочешь. Программа lm-sensor (и, следовательно, sensorsкоманда) использует библиотеку libsensor ; если вы используете Ubuntu 18.04, это libsensors4 , версия 3.4.0-4. Это та же библиотека, которая считывает температуру, как видно из sysкаталога.

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

watch -n 1 sensors

Если вы хотите написать программу, вы должны взглянуть на libsensors с man libsensorsили посмотреть в /usr/share/doc/. Вы должны включить #include <sensors/sensors.h>. Он будет использовать sensors.confфайлы /etc/sensors3.conf и / или /etc/sensors.conf . Дополнительная (пользовательская) конфигурация может быть найдена в /etc/sensors.d/, если используется.

Если вы считаете, что вам не хватает некоторых датчиков, взгляните на /sys/class/thermalили связанный /sys/devices/virtual/thermalкаталог.

Для получения температур всех термальных зон используйте

$ cat /sys/devices/virtual/thermal/thermal_zone?/temp

77000
66000
67000

Температура измеряется в градусах Цельсия (мС), в случае выше 77,0, 66,0, 67,0 ° C.

Смотреть постоянно использовать

watch -n 1 cat /sys/devices/virtual/thermal/thermal_zone?/temp

В этом каталоге вы также можете найти информацию о ваших охлаждающих (вентиляторных) устройствах и о том, как программируются ПИД-регуляторы.

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

abu_bua
источник
я знаю, что есть программы, но я искал способ вручную найти эти метки
1
Что вы подразумеваете под вручную? Все, что печатает температуру - это программы.
abu_bua
у меня нету therm_zone, все, что у меня есть, - cold_device0 1 и 2, но они не содержат файл temp, только устройство cur_state max_state Тип подсистемы питания uevent
значения cur и max равны 0 и 10
Что именно thermal_zones? Мой 4-ядерный процессор Intel, кажется, просто имеет один thermal_zone( sensorsоднако, правильно перечисляет все 4-ядерные температуры).
Гвинет Ллевелин
5

Установите Psensor ( psensor ) из репозиториев Ubuntu по умолчанию и настройте Psensor для автоматического воспроизведения звука оповещения, когда температура поднимается выше определенного пользователем максимума. Цель этого состоит в том, чтобы вы услышали предупреждающий звук перед тем, как ваша система выключится, не добавляя дополнительных приложений в вашу систему.

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

Карел
источник