3. taraf yazılımı olmadan sıcaklıkları nasıl bulabilirim?


12

Youtube videoları izlediğimde sistemim kapanmaya devam ettiğinden sensors-detectsistemimle çalışıyorumlm-sensors

Peki, fan ve cpu sıcaklıklarını manuel olarak 3. parti bir yazılım olmadan nasıl bulabileceğimi merak ediyorum lm-sensors? Nerede saklandıklarından emin değilim.

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


Hangi Ubuntu sürümünü kullanıyorsunuz?
wjandrea

1
İşlemcinize bağlıdır. Yeni Intel işlemcilerin çoğu için, turbostat programı MSR'leri (Makineye Özgü Kayıtlar) okuyacak ve paket ve çekirdek sıcaklıklarını gösterecektir. Sorunuzu düzenleyin ve işlemcinizi bir model yapın. Eğer bildiğim biriyse, elle nasıl yapacağımı cevaplayacağım.
Doug Smythies

i ek RAM i bir sorun olurdu .., RAM saniyede 1333 mega aktarma ve işlemci maksimum MHz: 2800.0000

11
Üçüncü tarafla ne demek istiyorsun? Birinci taraf yazılımın ne kadar Ubuntu olduğunu düşünüyorsunuz?
muru

1
Kullanıcı kullanım için dağıtımı kesmeden önce Ubuntu'nun kaç taraf kullandığını tam olarak bilmiyorum. Genel bir bakış açısıyla, Ubuntu'nun ilk taraf olarak adlandırdığım bir Linux işletim sistemi olduğunu biliyorum, ardından bana ve sonra da eldeki soruya, duvarın 6. parti varyantını söylemek yerine şüpheli programımı 3. taraf bırakıyorum. veya ubtunu destekledikten sonra ve / veya programcı programcılarından sonra tam olarak bilmiyorum.

Yanıtlar:


12

Kulağa istediğin gibi geliyor /sys/class/hwmonve /sys/class/thermal.

Her ikisi de istediğiniz verilere basit kabuk tabanlı erişim sağlar (hwmon dizini diğer sensör türlerini de içerecektir). Her birinin sisteminizdeki her sensör arabirimi için bir dizini vardır (birden fazla sensörü olabilir).

Yine de dikkat edilmesi gereken üç şey:

  • Gerçekten kötü bir sisteminiz olmadıkça, sensorskomutu saniyede bir kez çalıştırmanın algılanabilir bir etkisi olmamalıdır. Aslında, yukarıda belirtilen dizinlerdeki dosyaları düzenli olarak okumak daha etkili olabilir.
  • Grafikler burada senin arkadaşın. Bakmak için gerçek zamanlı (veya gerçek zamanlıya yakın) verileriniz olması için netdata veya collectd çalışan bir şey almanızı öneririm.
  • Geriliminizi de kontrol edin. Açıklamanız, sisteminizin güç gereksinimlerini karşılayamayan bir güç kaynağına sahip olmanızdan da kaynaklanabilir. Bu, sistem yüksek yük altındayken önemli ölçüde düşen voltajlarla gösterilecektir.

Bu kabul edilen cevap olmalıdır, çünkü sorulan asıl soru ile ilgilidir: "sıcaklıkları [...] manuel olarak [...] nasıl bulabilirim? Nerede saklandıklarından emin değilim." Sonra bazıları /proc/cpuinfobir AMD işlemci gösteriyor. OP'nin neden başka bir aracın yüklenmesini gerektiren Intel'e özel bir yanıtı neden kabul ettiğinden emin değilim.
Aaron F

@AaronF: Katılmıyorum. OP'den istediğim için Intel'e özel bir cevap yazdım. Başka bir aletin kurulmasına gerek yok mu? Paket sıcaklıklarını doğrudan değil MSR'ler aracılığıyla okumamın sebebi /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input, işimin çoğunun son derece atıl sistemlerde olması ve ikinci yöntemin çok daha fazla yüke sahip olması ve tutarlı bir 4 ila 5 derece daha yüksek sonuç almasıdır. Tabii ki, ağır yüklü bir sistem için fark yoktur.
Doug Smythies

1
@DougSmythies Cevabınızın çok iyi ve eksiksiz olduğunu düşündüm, bu yüzden aşağıya oy vermedim veya altında olumsuz bir yorum bırakmadım :-) rdmsr programı, varsayılan olarak Intel'imde yüklü olmayan msr-tools'ın bir parçası makinesi (Ubuntu çalışıyor, Intel tespit ederse varsayılan olarak diğer dağıtımlar yüklenir?)
Aaron F

@AaronF: msr-tools'ın gerekli bir ek paket olduğunu unuttum. Bu yüzden benim yöntemim de OP'nin istediği şey değil ve ek bir araca ihtiyaç duyuyor.
Doug Smythies

2
Merhaba @ DougSmythies ve Aaron F, ilk olarak DougSmythies'i birincil cevap olarak seçtim çünkü yardım eden ilk kişi oldu ve cevabı Sıcaklığı manuel olarak nasıl arayacağının yanı sıra manuel çözümü de kullanımı kolay bir şekilde kullanma konusunda çok açıktı. mdmsr destekli bir program, Aslında her iki cevap da çok bilgilendirici olduğu için zor bir karardı, ama ikiniz de bu cevabın en iyi olduğunu kabul ettiğiniz için. Aaron'a birincil cevabı geri verdim, desteğiniz için teşekkür ederim. Mutlu avcılık

9

Bu yanıt, doğrudan Makineye Özel Kayıtlara (MSR) erişerek bazı Intel işlemciler için işlemci sıcaklığını manuel olarak izlemenin bir yoludur.

Dikkat edilmesi gereken ilk şey, bu durumda, MSR'den okunan şey Tcc'ye, limit sıcaklığa göredir, bu nedenle gerçek sıcaklığı belirlemek için ek bir hesaplama gereklidir.

Bakın Intel® 64 ve IA-32 Mimarileri Yazılım Geliştirici Kılavuzu veya senin durumunda AMD eşdeğeri.

Benim durumumda, MSR'nin 22-16 bitlerini 0x1B1'de, yani IA32_PACKAGE_THERM_STATUS olarak istiyorum. Eski i7-2600K için Tcc 98 derecedir.

Sıcaklığı (ve CPU frekansını) manuel olarak izlemek için basit bir komut dosyası:

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

Ve bir süre sonra biraz CPU yükü eklediğim bazı örnek çıktılar (temp 31 ila 73 derece arasında gider):

$ 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

Neden kullanıyorsun eval?
wjandrea

@ Doug: msr kullanmak için harika bir cevap! Ancak, doğru msr register 0x19c değil mi? Ve sıcaklık TEMP = TCC - [0x19c bit 22:16]. Bu yüzden önce TCC'yi okumak gerekir.
abu_bua

@abu_bua: 0x19c'nin çalışıp çalışmadığını bilmiyorum, ama kullandığım şey işe yarıyor. Ve evet, işlemciden okumak için daha iyi bir çözüm yerine TCC'yi kodladım.
Doug Smythies

1
yükledin sudo apt install msr-toolsmi
abu_bua

1
msr-tools paketidir. Paket içerisindeki komutların ikisi için man rdmsrve olacaktır man wrmsr.
Doug Smythies

6

Gerçekten ne istediğini bilmiyorum. Lm -sensör programı (ve dolayısıyla sensorskomut) libsensor kütüphanesinden yararlanır; Ubuntu 18.04 kullanıyorsanız, libsensors4 , sürüm 3.4.0-4. Bu, sysdizinde görülebilen sıcaklığı okuyan kitaplıktır .

Özetle, sensörler iyi bir seçimdir. Sıcaklığı sürekli izlemek için

watch -n 1 sensors

Bir program yazmak istiyorsanız, libsensörlere bir göz atmanız man libsensorsveya programa bir göz atmanız gerekir /usr/share/doc/. Eklemek zorundasınız #include <sensors/sensors.h>. Bu kullanacağı sensors.confdosya /etc/sensors3.conf ve / veya /etc/sensors.conf . Daha fazla (kullanıcı) yapılandırması /etc/sensors.d/kullanılıyorsa bulunabilir.

Eksik olduğunuzu düşünüyorsanız, bazı sensörler /sys/class/thermalveya bağlantılı /sys/devices/virtual/thermaldizine bir göz atın .

Tüm termal bölgelerin sıcaklıklarını elde etmek için

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

77000
66000
67000

Sıcaklık, 77.0, 66.0, 67.0 ° C'nin üzerindeki durumda miliCelcius (mC) cinsinden ölçülür.

Sürekli kullanmak için

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

Bu dizinde ayrıca soğutma (fan) aygıtlarınız ve PID regülatörlerinin nasıl programlandığı hakkında bilgi bulabilirsiniz.

Ayrıca, bazı yüksek sıcaklık korumasının, verilerin bios'unuza yerleştirildiği çok donanım tabanlı (bu iyi bir fikir) kodlandığını belirtmek isterim.


i programları var biliyorum, ama ben manuel olarak th etemps bulmak için bir yol arıyordu

1
Elle ne demek istiyorsun? Sıcaklığı basan her şey programlardır.
abu_bua

thermal_zone yok, tüm sahip olduğum soğutma_device0 1 ve 2 ama onlar bir dosya sıcaklığı, sadece cur_state cihazı max_state güç alt sistemi türü uevent tutmayın

cur ve max durumu 0 ve 10'dur

Tam olarak nedir thermal_zones? 4 çekirdekli Intel CPU'mda sadece bir tane var gibi görünüyor thermal_zone( sensorsancak 4 çekirdek sıcaklığını da doğru bir şekilde listeliyor).
Gwyneth Llewelyn

5

Psensor'u ( psensor ) varsayılan Ubuntu depolarından yükleyin ve Psensor'u sıcaklık kullanıcı tarafından belirlenen maksimum değerin üzerine çıktığında otomatik olarak bir uyarı sesi çalacak şekilde yapılandırın. Bunun amacı, sisteminize ek uygulama ek yükü eklemeden sistem kapanmadan önce bir uyarı sesi duymanızı sağlamaktır.

Psensor, masaüstünde saatin yanındaki sağ üst köşedeki bildirim alanında küçük bir termometre simgesi olarak kendini gösterir. Donanım sıcaklıklarını görüntülemek için istediğiniz zaman termometre simgesine sağ tıklayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.