Bagaimana cara menemukan suhu tanpa perangkat lunak pihak ketiga?

12

Saya sensors-detectmenggunakan sistem lm-sensorssaya karena sistem saya terus mati ketika saya menonton video youtube

Jadi saya bertanya-tanya bagaimana cara menemukan suhu kipas dan cpu secara manual tanpa perangkat lunak pihak ke-3 lm-sensors? Saya tidak yakin di mana mereka disimpan.

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
sumber
Apa versi Ubuntu yang Anda jalankan?
wjandrea
1
Itu tergantung pada prosesor Anda. Untuk banyak prosesor Intel baru-baru ini, program turbostat akan membaca MSR (Register Khusus Mesin) dan menampilkan paket dan suhu inti. Edit pertanyaan Anda dan tambahkan prosesor Anda buat model. Jika itu yang saya tahu, saya akan menjawab dengan cara melakukannya secara manual.
Doug Smythies
apakah RAM tambahan yang saya tambahkan memiliki masalah .., RAM 1333 megatransfers per detik, dan cpu maks MHz: 2800.0000
11
Apa yang Anda maksud dengan pihak ketiga? Menurut Anda, berapa banyak Ubuntu yang merupakan perangkat lunak pihak pertama?
muru
1
Saya tidak yakin berapa banyak pihak yang digunakan Ubuntu sebelum pengguna memotong distribusi untuk digunakan. Saya tahu secara umum bahwa Ubuntu adalah sistem operasi Linux yang saya sebut sebagai pihak pertama, diikuti oleh saya dan kemudian pertanyaan yang ada, meninggalkan program saya yang dipertanyakan pihak ke-3 daripada mengatakan varian pihak ke-6 dari dinding. atau setelah ubtunu mensponsori dan atau softwares programmer, jadi saya tidak tahu persis.

Jawaban:

12

Kedengarannya seperti apa yang Anda inginkan /sys/class/hwmondan /sys/class/thermal.

Keduanya menyediakan akses berbasis shell sederhana ke data yang Anda inginkan (direktori hwmon juga akan menyertakan jenis sensor lainnya). Masing-masing memiliki satu direktori untuk setiap antarmuka sensor di sistem Anda (yang mungkin memiliki lebih dari satu sensor).

Tiga hal lain yang perlu diperhatikan:

  • Kecuali Anda memiliki sistem yang benar-benar buruk, menjalankan sensorsperintah meskipun hanya sedetik seharusnya tidak memiliki efek yang dapat dipercaya. Bahkan, membaca file secara teratur di direktori yang disebutkan di atas mungkin lebih berpengaruh.
  • Grafik adalah teman Anda di sini. Saya menyarankan agar sesuatu seperti netdata atau collectd berjalan sehingga Anda memiliki data realtime (atau hampir realtime) untuk dilihat.
  • Periksa voltase Anda juga. Apa yang Anda uraikan juga bisa karena memiliki catu daya yang tidak dapat memenuhi kebutuhan daya sistem Anda. Ini akan ditunjukkan oleh voltase yang turun secara signifikan ketika sistem berada di bawah beban tinggi.
Austin Hemmelgarn
sumber
Ini harus menjadi jawaban yang diterima, karena ini berkaitan dengan pertanyaan aktual yang diajukan: "bagaimana saya bisa menemukan suhu [...] secara manual [...]? Saya hanya tidak yakin di mana mereka disimpan." Lalu beberapa /proc/cpuinfomenunjukkan prosesor AMD. Tidak yakin mengapa OP kemudian menerima jawaban khusus Intel yang membutuhkan alat lain untuk dipasang.
Aaron F
@ Harun: Saya tidak setuju. Saya menulis jawaban spesifik Intel karena OP memintaku. Tidak ada alat lain yang perlu diinstal? Alasan saya membaca paket suhu langsung melalui MSR daripada melalui /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputadalah bahwa sebagian besar pekerjaan saya adalah dengan sistem yang sangat menganggur, dan metode yang terakhir memiliki overhead yang lebih banyak, menghasilkan hasil yang konsisten 4 hingga 5 derajat lebih tinggi. Tentu saja, tidak ada perbedaan untuk sistem yang sarat muatan.
Doug Smythies
1
@DougSmythies Saya pikir jawaban Anda sangat bagus dan lengkap, itulah sebabnya saya tidak downvote atau meninggalkan komentar negatif di bawahnya :-) Program rdmsr adalah bagian dari msr-tools, yang tidak diinstal secara default pada Intel saya mesin (menjalankan Ubuntu, mungkin menginstal distro lain secara default jika mereka mendeteksi Intel?)
Aaron F
@ Harf: Saya lupa bahwa msr-tools adalah paket tambahan yang diperlukan. Jadi metode saya juga perlu dan alat tambahan, yang bukan itu yang diinginkan OP.
Doug Smythies
2
Hello @ DougSmythies dan Aaron F, saya awalnya memilih DougSmythies sebagai jawaban utama karena dia adalah yang pertama memberikan bantuan dan jawabannya sangat jelas tentang bagaimana mencari Suhu secara manual serta menggunakan solusi manual menjadi mudah digunakan Program dengan dukungan mdmsr, Sebenarnya itu adalah keputusan keras karena kedua jawaban itu sangat informatif, tetapi karena Anda berdua setuju bahwa jawaban ini adalah yang terbaik. Saya mengembalikan jawaban utama kepada Aaron, terima kasih atas dukungan Anda. Selamat berburu
9

Jawaban ini adalah tentang satu cara untuk memonitor suhu prosesor secara manual untuk beberapa prosesor Intel melalui mengakses Machine Specific Registerers (MSR) secara langsung.

Hal pertama yang perlu diperhatikan adalah, dalam hal ini, apa yang dibacakan MSR adalah relatif terhadap Tcc, batas suhu, sehingga diperlukan perhitungan tambahan untuk menentukan suhu aktual.

Lihat Manual Pengembang Perangkat Lunak Arsitektur Intel® 64 dan IA-32 , atau dalam kasus Anda setara AMD.

Dalam kasus saya, saya ingin bit 22-16 dari MSR pada 0x1B1, alias IA32_PACKAGE_THERM_STATUS. Tcc untuk i7-2600K saya yang lebih tua adalah 98 derajat.

Berikut ini adalah skrip sederhana untuk memonitor suhu (dan frekuensi CPU) secara manual:

#! /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

Dan berikut ini adalah beberapa contoh output, di mana saya menambahkan beberapa beban CPU setelah beberapa saat (temp berubah dari 31 menjadi 73 derajat):

$ 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
Doug Smythies
sumber
Mengapa Anda menggunakan eval?
wjandrea
@Doug: Jawaban yang bagus untuk menggunakan msr! Namun, bukankah msr yang benar mendaftar 0x19c ? Dan suhunya adalah TEMP = TCC - [0x19c bits 22:16]. Jadi perlu membaca TCC terlebih dahulu.
abu_bua
@abu_bua: Saya tidak tahu apakah 0x19c berfungsi atau tidak, tetapi apa yang saya gunakan tidak. Dan ya, saya hardcoded TCC untuk prosesor saya daripada solusi yang lebih baik yaitu dengan membacanya dari prosesor.
Doug Smythies
1
apakah kamu menginstal sudo apt install msr-tools?
abu_bua
1
msr-tools adalah paketnya. Ini akan menjadi man rdmsrdan man wrmsruntuk dua perintah individual di dalam paket.
Doug Smythies
5

Saya tidak tahu apa yang sebenarnya Anda inginkan. Program sensor-lm (dan karenanya sensorsperintah) memanfaatkan perpustakaan libsensor ; jika Anda menggunakan Ubuntu 18.04 itu libsensors4 , versi 3.4.0-4. Ini adalah perpustakaan yang sama yang membaca suhu seperti yang dapat dilihat di sysdirektori.

Singkatnya, sensor adalah pilihan yang baik. Untuk menonton suhu terus digunakan

watch -n 1 sensors

Jika Anda ingin menulis suatu program, Anda harus melihat pada libsensor dengan man libsensorsatau melihat di /usr/share/doc/. Anda harus memasukkan #include <sensors/sensors.h>. Ini akan menggunakan sensors.conffile /etc/sensors3.conf dan / atau /etc/sensors.conf . Konfigurasi (pengguna) lebih lanjut dapat ditemukan di /etc/sensors.d/, jika digunakan.

Jika Anda merasa ada beberapa sensor yang hilang, lihat direktori /sys/class/thermalatau tautannya /sys/devices/virtual/thermal.

Untuk mendapatkan suhu dari semua zona termal gunakan

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

77000
66000
67000

Suhu diukur dalam miliCelcius (mC), dalam kasus di atas 77.0, 66.0, 67.0 ° C.

Untuk menonton terus digunakan

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

Dalam direktori ini Anda juga dapat menemukan informasi tentang perangkat pendingin (kipas) Anda, dan bagaimana regulator PID diprogram.

Saya juga ingin menyatakan bahwa beberapa perlindungan overtemperature dikodekan berdasarkan perangkat keras (ini adalah ide yang baik), di mana data ditempatkan di bios Anda.

abu_bua
sumber
saya tahu ada program, tetapi saya sedang mencari cara untuk secara manual menemukan etemps
1
Apa yang Anda maksudkan secara manual? Semua hal yang mencetak suhu adalah program.
abu_bua
saya tidak memiliki thermal_zone, yang saya miliki hanyalah cooling_device0 1 dan 2 tetapi mereka tidak memiliki temp file, hanya cur_state device max_state power subsystem tipe uevent
cur dan max state adalah 0 dan 10
Apa sebenarnya itu thermal_zones? CPU Intel 4-core saya tampaknya hanya memiliki satu thermal_zone( sensorsnamun, dengan benar mencantumkan semua 4 suhu inti).
Gwyneth Llewelyn
5

Instal Psensor ( psensor ) dari repositori default Ubuntu dan konfigurasikan Psensor untuk secara otomatis memainkan suara peringatan setiap kali suhu di atas maksimum yang ditentukan pengguna. Tujuannya adalah agar Anda mendengar bunyi peringatan sebelum sistem dimatikan tanpa menambahkan overhead aplikasi tambahan ke sistem Anda.

Psensor menampilkan dirinya di desktop sebagai ikon termometer kecil di area notifikasi di sudut kanan atas desktop di sebelah jam. Anda dapat mengklik kanan ikon termometer kapan saja untuk menampilkan suhu perangkat keras.

karel
sumber