nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
Morissonу разрабов платного ПО под винду есть материальные ресурсы на приобретение кучи разных железок. в лине принцип другой, сделай себе и поделись с другими... Vadim+100500
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
vasek |
|
Темы:
47
Сообщения:
11742
Участник с: 17 февраля 2013
|
Привожу просто для информации, делать было нечего, пить надоело (но в связи с большим праздником, разумеется 100г принял) и решил немного поупражняться. В принципе эту физическую температуру cpu можно расчитать и самому - сейчас набросал небольшой скриптик, считал показания (относящиеся к температуре) из регистров msr, выполнил определенные вычисления, чтобы привести их в человеческую форму. Привожу вывод значений температуры cpu с периодичностью в 2секунды (где значения sys - считаны из файла sys/class/thermal/thermal_zone6/temp, значения reg - считаны и обработаны из регистров , для нагрузки cpu использовал утилиту stress –cpu 2 –io 4 –vm 2 –vm-bytes 128M –timeout 10s) ~/cpu_t.sh В спокойном режиме значения совпадают довольно хорошо, а вот при нагрузке видим несовпадение, причем чем выше температура, тем больше не совпадение (хотя разница не такая и большая). И не понятно кому верить - значениям системе или обработанным значениям снятых непосредственно с регистров.Думаю расчет напрямую более верен, а вот как идет расчет в системе, не знаю. Возможно это связано с инерционностью. UPD - хотя помнится (как то попал на глаза один толмут), что погрешность (точнее, отклонение от истинной температуры) тем больше, чем выше измеряемая температура. EDIT 1 - все несуразные показания температуры обусловлены в основном тем, что вместо соответствующего модуля (используемого для обработки значений температуры) для данного железа используется другой модуль, в котором не правильно идет расчет истинной температуры. Вот чем и хорош Linux, что при желании можно самому сделать очень многое. Хотя это возможно и в Windows, но уже намного сложнее.
Ошибки не исчезают с опытом - они просто умнеют
|
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
vasek, а если так? ls /sys/class/thermal/*/
cat /sys/class/thermal/*/*
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
vasek |
|
Темы:
47
Сообщения:
11742
Участник с: 17 февраля 2013
|
nafanjaСлишком много ls /sys/class/thermal/*/ | wc -l 216 Не понял, к чему это? Как уже писал, это создается с помощью соответствующего модуля ядра и это все относится к ACPI thermal (выпуск старый, но в новом doc тоже самое) . У Vadim, насколько я понял, всех этих файлов нет, хотя странно - у тебя то же AMD и эта структура файлов имеется, а у него нет. Или я чего то неправильно понял? В Intel расчет температуры можно понять из описания datesheet, причем этот способ практически универсален в Intel. Есть регистр из которого считывается максимальная температура, которая согласно спецификации (привожу свои данные) равна - Tjunction = 85C (PGA); 100C (BGA) у меня PGA, а значит будет 85С Смотрим что показывает регистр (обозначение регистра узнаем в datesheet) rdmsr 0x1A2 -f 23:16 55 Это в 16-ричной системе, переведем в 10-ную echo $((0x55)) 85 то есть все правильно Далее согласно того же datesheet, в регистре MSR 19C находится мгновенная температура данного ядра, но ЭТО не абсолютная температура, а относительная, относительно Tjmax, которая равна, как было показано выше 85. То есть истинная температура будет равна Tjmax - Treg, точнее 85 - Treg Проверяем, rdmsr 0x19C -f 23:16 24 echo $((0x24)) 36 И получаем окончательно, 85 - 36 = 49 UPD 1 - как уже писал, согласно doc в регистре мгновенная температура ядра, но там же рекомендуют использовать усредненную (не помню точно как определяется), но вот у меня сложилось мнение, что система ACPI и использует эту усредненную температуру. UPD 2 - таким же макаром можно расчитать и у AMD, но я с ним никогда не разбирался, но придется глубоко залазить. EDIT 1 - этот расчет я использую на основе описания документации, т.е. выполнил на основе doc, а вот как идет расчет в модулях, я не знаю, но уже писал, что похоже там используют усреднение. Но, в принципе, такая точность и не нужна ... да и считать так не нужно, если все работает нормально, если что просто для проверки
Ошибки не исчезают с опытом - они просто умнеют
|
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
vasekда я это к тому что не все так просто. ты выше писал делая упор на только на процессор. но нужно еще и на мать обращать внимание, да и у процессоров одного производителя может все отличаться... и еще если взять ту же виндячью аиду64, и даже если учесть что она платная, то все равно она ерунду показывает (по крайней мере с моими железками)... даже они с их ресурсами не смогли сделать так, что бы все показывалось правильно... так что повторюсь, не все так просто в зоопарке железок...
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
vasek Vadimзаметь thermal_zone и у меня тоже нет, а вместо него cooling_device.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
Xts |
|
Темы:
33
Сообщения:
973
Участник с: 13 ноября 2013
|
тоже амд, тоже нету thermal_zone, но есть cooling_device |
vasek |
|
Темы:
47
Сообщения:
11742
Участник с: 17 февраля 2013
|
nafanjaЭто точно. Даже если считать самому, есть несколько нюансов, которые я упустил. Например, нужно считывать значения еще в двух регистрах (в принципе регистр один, но разные биты) и эти значения нужно вычитать как из считанного Tjmax, так и из считанного относительного Treg - в datesheet написано, что по дефолту эти значения равны 0, но я сталкивался с cpu одного типа, но вот эти значения были не равны 0. Так, например, у меня сейчас в одном из регистров стоит 1, которую нужно вычитать из 85 .... и выходит, что мне нужно оперировать не с значением 85, а 84. У кого то эти значения будут и по более, а прога то это, наверное, не учитывает и считает для всех одинаково. Возможно я и не прав.
Ошибки не исчезают с опытом - они просто умнеют
|
redix |
|
Темы:
34
Сообщения:
3432
Участник с: 11 марта 2013
|
nafanjaИмхо дело не в этом, ТС вызывает температуру обращением к sensors, и это теперь не работает. Свои коньки я писал под Центосью, там как раз так и было сделано и это работало, но там ядро 3.10, а когда я этот конфиг подцепил к Арчу, температура тоже показывала неправильно, проблему решило обращение к hwmon, я уже не помню где нашел, но это работает. К слову сказать этот самый hwmon связан с lm_sensors, а его разработкой занимается Торвальдс: https://github.com/torvalds/linux/blob/master/include/linux/hwmon.h Изменено начиная с ядра 4.19.
In Tux We Trust
|
vasek |
|
Темы:
47
Сообщения:
11742
Участник с: 17 февраля 2013
|
redixКстати, в ссылке, что давал выше, про hwmon расписано, правда подробно не читал.
Ошибки не исчезают с опытом - они просто умнеют
|