Làm cách nào để tìm nhiệt độ mà không có phần mềm bên thứ 3?


12

Tôi đang chạy sensors-detecttrên hệ thống của mình lm-sensorsvì hệ thống của tôi liên tục tắt khi tôi xem video youtube

Vì vậy, tôi tự hỏi làm thế nào tôi có thể tìm thấy nhiệt độ của quạt và cpu một cách thủ công mà không cần phần mềm bên thứ 3 như thế lm-sensorsnào? Tôi chỉ không chắc chắn nơi chúng được lưu trữ.

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


Phiên bản Ubuntu nào bạn đang chạy?
wjandrea

1
Nó phụ thuộc vào bộ xử lý của bạn. Đối với nhiều bộ xử lý Intel gần đây, chương trình tuabin sẽ đọc MSR (Thanh ghi cụ thể của máy) và hiển thị nhiệt độ gói và lõi. Chỉnh sửa câu hỏi của bạn và thêm bộ xử lý của bạn tạo một mô hình. Nếu đó là một cái mà tôi biết, tôi sẽ trả lời bằng cách làm thủ công.
Doug Smythies

RAM bổ sung mà tôi đã thêm có vấn đề .., RAM là 1333 megatransifts mỗi giây và cpu là tối đa MHz: 2800.0000

11
Bên thứ ba có ý nghĩa gì? Bạn nghĩ phần mềm Ubuntu là bao nhiêu?
muru

1
Tôi không chắc chắn chính xác có bao nhiêu bên sử dụng Ubuntu trước khi người dùng chặn phân phối để sử dụng. Tôi biết ở một khía cạnh chung rằng Ubuntu là một hệ điều hành Linux mà tôi gọi là bên đầu tiên, tiếp theo là tôi và sau đó là câu hỏi, để lại chương trình nghi vấn của tôi cho bên thứ 3 thay vì nói ra một biến thể của bên thứ 6 hoặc sau khi các nhà tài trợ ubtunu và hoặc phần mềm lập trình viên tự nguyện, vì vậy tôi không biết chính xác.

Câu trả lời:


12

Nghe có vẻ như những gì bạn muốn là /sys/class/hwmon/sys/class/thermal.

Cả hai đều cung cấp quyền truy cập dựa trên shell đơn giản vào dữ liệu bạn muốn (thư mục hwmon cũng sẽ bao gồm các loại cảm biến khác). Mỗi có một thư mục cho mỗi giao diện cảm biến trong hệ thống của bạn (có thể có nhiều hơn một cảm biến).

Ba điều khác cần lưu ý mặc dù:

  • Trừ khi bạn có một hệ thống thực sự tồi, chạy sensorslệnh dù chỉ một lần một giây không nên có bất kỳ hiệu ứng có thể khắc phục được. Trong thực tế, thường xuyên đọc các tập tin trong các thư mục được đề cập ở trên có thể có nhiều tác dụng.
  • Đồ thị là bạn của bạn ở đây. Tôi sẽ đề nghị nhận được một cái gì đó như netdata hoặc colld đang chạy để bạn có dữ liệu thời gian thực (hoặc gần thời gian thực) để xem xét.
  • Kiểm tra điện áp của bạn quá. Những gì bạn mô tả cũng có thể là do có một nguồn cung cấp năng lượng không thể theo kịp các yêu cầu năng lượng của hệ thống của bạn. Điều này sẽ được chỉ định bởi điện áp giảm đáng kể khi hệ thống chịu tải cao.

Đây phải là câu trả lời được chấp nhận, bởi vì nó liên quan đến câu hỏi thực tế được hỏi: "làm thế nào tôi có thể tìm thấy nhiệt độ [...] bằng tay [...]? Tôi chỉ không chắc là chúng được lưu trữ ở đâu." Sau đó, một số /proc/cpuinfohiển thị bộ xử lý AMD. Không chắc chắn tại sao OP sau đó chấp nhận một câu trả lời dành riêng cho Intel, yêu cầu phải cài đặt một công cụ khác.
Aaron F

@AaronF: Tôi không đồng ý. Tôi đã viết một câu trả lời cụ thể của Intel vì OP yêu cầu tôi làm. Không có công cụ khác cần phải được cài đặt? Lý do tôi đọc nhiệt độ gói trực tiếp qua MSR thay vì thông qua /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputlà hầu hết công việc của tôi là với các hệ thống cực kỳ nhàn rỗi, và phương pháp sau có nhiều chi phí hơn, dẫn đến kết quả cao hơn 4 đến 5 độ. Tất nhiên, không có sự khác biệt cho một hệ thống tải nặng.
Doug Smythies

1
@DougSmythies Tôi nghĩ rằng câu trả lời của bạn rất hay và đầy đủ, đó là lý do tại sao tôi không downvote cũng không để lại bình luận tiêu cực bên dưới nó :-) Chương trình rdmsr là một phần của công cụ msr, không được cài đặt mặc định trên Intel của tôi máy (chạy Ubuntu, có thể các bản phân phối khác cài đặt theo mặc định nếu chúng phát hiện Intel?)
Aaron F

@AaronF: Tôi quên rằng msr-tools là gói bổ sung cần thiết. Vì vậy, phương pháp của tôi cũng cần và công cụ bổ sung, đó không phải là điều OP muốn.
Doug Smythies

2
Xin chào @ DougSmythies và Aaron F, ban đầu tôi đã chọn DougSmythies làm câu trả lời chính vì anh ấy là người đầu tiên cung cấp trợ giúp và câu trả lời của anh ấy rất rõ ràng về cách tìm kiếm Nhiệt độ thủ công cũng như sử dụng giải pháp thủ công dễ sử dụng chương trình với sự hỗ trợ của mdmsr, thực tế đó là một quyết định khó khăn vì cả hai câu trả lời đều rất hữu ích, nhưng vì cả hai bạn đều đồng ý rằng câu trả lời này là tốt nhất. Tôi hoàn nguyên câu trả lời chính cho Aaron, cảm ơn bạn đã hỗ trợ. Chúc mừng săn bắn

9

Câu trả lời này là về một cách để theo dõi nhiệt độ bộ xử lý theo cách thủ công đối với một số bộ xử lý Intel thông qua việc truy cập trực tiếp vào Thanh ghi cụ thể của máy (MSR).

Điều đầu tiên cần lưu ý là, trong trường hợp này, những gì được đọc từ MSR có liên quan đến Tcc, nhiệt độ giới hạn, do đó cần phải tính toán thêm để xác định nhiệt độ thực tế.

Tham khảo Hướng dẫn dành cho nhà phát triển phần mềm kiến ​​trúc Intel® 64 và IA-32 hoặc trong trường hợp của bạn tương đương với AMD.

Trong trường hợp của tôi, tôi muốn các bit 22-16 của MSR ở 0x1B1, còn gọi là IA32_PACKAGE_THERM_STATUS. Tcc cho i7-2600K cũ của tôi là 98 độ.

Đây là một tập lệnh đơn giản để theo dõi nhiệt độ (và tần số CPU) theo cách thủ công:

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

Và đây là một số đầu ra mẫu, trong đó tôi thêm một số tải CPU sau một lúc (temp đi từ 31 đến 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

Tại sao bạn sử dụng eval?
wjandrea

@Doug: Câu trả lời tuyệt vời để sử dụng msr! Tuy nhiên, không phải là đăng ký msr đúng 0x19c ? Và nhiệt độ là TEMP = TCC - [0x19c bit 22:16]. Vì vậy cần phải đọc TCC trước.
abu_bua

@abu_bua: Tôi không biết 0x19c có hoạt động hay không, nhưng những gì tôi đang sử dụng thì có. Và vâng, tôi đã mã hóa TCC cho bộ xử lý của mình chứ không phải là giải pháp tốt hơn để đọc nó từ bộ xử lý.
Doug Smythies

1
bạn đã cài đặt sudo apt install msr-toolschưa
abu_bua

1
msr-tools là gói. Nó sẽ là man rdmsrman wrmsrcho hai trong số các lệnh riêng lẻ trong gói.
Doug Smythies

5

Tôi không biết bạn thực sự muốn gì. Chương trình cảm biến lm (và do đó là sensorslệnh) sử dụng thư viện libsensor ; trong trường hợp bạn sử dụng Ubuntu 18.04 thì đó là libsensors4 , phiên bản 3.4.0-4. Đây là cùng một thư viện đọc nhiệt độ như có thể nhìn thấy trong systhư mục.

Tóm lại, cảm biến là một lựa chọn tốt. Để xem nhiệt độ liên tục sử dụng

watch -n 1 sensors

Nếu bạn muốn viết một chương trình, bạn phải xem qua libsensors với man libsensorshoặc xem trong /usr/share/doc/. Bạn phải bao gồm #include <sensors/sensors.h>. Nó sẽ sử dụng các sensors.conftập tin /etc/sensors3.conf và / hoặc /etc/sensors.conf . Cấu hình hơn nữa (người dùng) có thể được tìm thấy trong /etc/sensors.d/, nếu được sử dụng.

Nếu bạn nghĩ rằng bạn đang thiếu một số cảm biến, hãy xem /sys/class/thermalhoặc /sys/devices/virtual/thermalthư mục được liên kết .

Để có được nhiệt độ của tất cả các vùng nhiệt sử dụng

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

77000
66000
67000

Nhiệt độ được đo bằng miliCelcius (mC), trong trường hợp trên 77,0, 66,0, 67,0 ° C.

Để xem liên tục sử dụng

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

Trong thư mục này, bạn cũng có thể tìm thấy thông tin về các thiết bị làm mát (quạt) của mình và cách các bộ điều chỉnh PID được lập trình.

Tôi cũng muốn nói rằng một số bảo vệ quá nhiệt độ được mã hóa dựa trên phần cứng (đây là một ý tưởng tốt), nơi dữ liệu được đặt trong bios của bạn.


tôi biết có các chương trình, nhưng tôi đang tìm cách để tự tìm kiếm etemps

1
Bạn có ý nghĩa gì bằng tay? Tất cả những thứ in nhiệt độ là chương trình.
abu_bua

tôi không có một thermal_zone, tất cả tôi có là cooling_device0 1 và 2 nhưng họ không giữ một temp file, chỉ cur_state thiết bị max_state loại hệ thống phụ điện uevent

trạng thái cur và max là 0 và 10

Chính xác thì là thermal_zonesgì? CPU Intel 4 lõi của tôi dường như chỉ có một thermal_zone( sensorstuy nhiên, liệt kê chính xác tất cả nhiệt độ 4 lõi).
Gwyneth Llewelyn

5

Cài đặt Psensor ( psensor ) từ kho lưu trữ Ubuntu mặc định và định cấu hình Psensor để tự động phát âm thanh cảnh báo bất cứ khi nào nhiệt độ vượt quá mức tối đa do người dùng xác định. Mục đích của việc này là để cho bạn nghe thấy âm thanh cảnh báo trước khi hệ thống của bạn tắt mà không cần thêm chi phí ứng dụng bổ sung vào hệ thống của bạn.

Psensor hiển thị chính nó trên máy tính để bàn dưới dạng một biểu tượng nhiệt kế nhỏ trong khu vực thông báo ở góc trên bên phải của màn hình bên cạnh đồng hồ. Bạn có thể nhấp chuột phải vào biểu tượng nhiệt kế bất cứ lúc nào để hiển thị nhiệt độ phần cứng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.