boinc icon indicating copy to clipboard operation
boinc copied to clipboard

CPU temperatures monitoring

Open SETIguy opened this issue 10 years ago • 15 comments

I'd like to see CPU temperature monitoring and temperature limits in the desktop client similar to the battery temperature limits seen in the Android client. This would probably require an additional package or library to be installed (i.e. lm-senors on linux).

SETIguy avatar Aug 06 '15 17:08 SETIguy

Modern Linux kernels expose hardware temperature information via sysfs, so it should not even require a library. This applies to #1379 as well.

Here we see a system with an AMD APU (k10temp) and two Radeon cards (radeon), the second of which seems to be heavily working. (The numbers are in units of 0.001°C.)

# cat /sys/class/hwmon/hwmon*/name
radeon
radeon
acpitz
k10temp
# cat /sys/class/hwmon/hwmon*/temp1_input
38000
62000
38700
38750

The paths may differ from distribution to distribution, because they are short cuts to something like /sys/devices/pci0000\:00/0000\:00\:01.0/hwmon/hwmon0/.

# ls -l /dev/dri/card*
crw-rw----+ 1 root video 226, 0 Apr 14 20:48 /dev/dri/card0
crw-rw----+ 1 root video 226, 1 Apr 14 20:48 /dev/dri/card1
# cat /sys/devices/pci0000\:00/0000\:00\:01.0/drm/card0/dev
226:0
# cat /sys/devices/pci0000\:00/0000\:00\:01.0/hwmon/hwmon0/temp1_input
38000
# cat /sys/devices/pci0000\:00/0000\:00\:02.0/0000\:01\:00.0/drm/card1/dev
226:1
# cat /sys/devices/pci0000\:00/0000\:00\:02.0/0000\:01\:00.0/hwmon/hwmon1/temp1_input
62000

aaronpuchert avatar Apr 14 '16 22:04 aaronpuchert

On unix-like systems, you can use this script as temporary workaround.

bazarassa avatar Jan 13 '20 11:01 bazarassa

@bazarassa, yes, it looks like it's easy to do on Linux and MacOS but not so easy to do this on Windows.

AenBleidd avatar Jan 13 '20 13:01 AenBleidd

I did a quick survey of some Linux systems; On 3 out of 4, "sensors" was either not installed or didn't show CPU temp. Where is the source code for "sensors"?

davidpanderson avatar Jan 16 '20 19:01 davidpanderson

I believe it is here: https://github.com/lm-sensors/lm-sensors

On Thu, Jan 16, 2020 at 11:44 AM David Anderson [email protected] wrote:

I did a quick survey of some Linux systems; On 3 out of 4, "sensors" was either not installed or didn't show CPU temp. Where is the source code for "sensors"?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BOINC/boinc/issues/1378?email_source=notifications&email_token=ACS5ZMWQ5AO4ZWC4TSNDK2LQ6C2J7A5CNFSM4BM37O62YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJFJNSY#issuecomment-575313611, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACS5ZMXAWBNE36SEEXXYEL3Q6C2J7ANCNFSM4BM37O6Q .

-- Eric Korpela [email protected] AST:7731^29u18e3

SETIguy avatar Jan 16 '20 19:01 SETIguy

I use watch -n 5 sensors in Linux Mint to monitor CPU temps in a terminal. I only do it when I'm troubleshooting a rig that's acting up. Sure would be nice to have it as a column in BoincTasks and even better the upcoming BOINC_Fleet_Manager :1st_place_medal:

Aurum420 avatar Feb 10 '20 00:02 Aurum420

I've posted a $10 bounty on this on bountysource here. This only needs to work on linux. I plan on testing using arch linux and some dell consumer hardware. Criteria for completion are:

  • [ ] CPU temperature setting usable via the boinccmd CLI
  • [ ] CPU temperature kept indefinitely just below the set temperature point by throttling compute usage
  • [ ] Code must comply with contribution guidelines and must get merged into the boinc core

7yl4r avatar Feb 01 '21 18:02 7yl4r

Ryzen CPU on Ubuntu: /sys/class/hwmon/hwmon1/temp1_input

cminnoy avatar Feb 15 '21 11:02 cminnoy

@cminnoy, this is for Linux only and for Ryzen CPUs of AMD. But BOINC could run on Windows and OSX too using not only AMD Ryzens, but also older AMD CPU (or another model) as long as Intel CPUs. So we should have here a solution for all (or almost all) configurations that user can have

AenBleidd avatar Feb 15 '21 12:02 AenBleidd

You don't need to: embrace the concept of plug-ins. For those platforms you do know, you make for each platform that is different a separate plug-in. If you don't have the expertise for a certain platform, it will be much easier to find an expert to write a small well defined plug-in to provide that functionality than find one to add code to a big monolithic application, which the BOINC client is now. You just need a well defined API to communicate between the plug-in and the core BOINC client.

If there is no plug-in for a certain platform, than the BOINC client will not expose that functionality to the user, or use its defaults.

In that respect, you should really start modularizing the BOINC client into multiple plug-ins. I noticed that the development of BOINC goes quite slow, which may be the result that not enough people understand its inner workings, and the learning curve is too steep. Cutting the big problem in smaller chunks really helps to get others involved.

Clearly, the scheduler is a component where quite some people have good improvement suggestions, so this is a good candidate to put in a plug-in, so it becomes easy to fork and adapt to you own liking, and have the best results merged.

cminnoy avatar Feb 15 '21 12:02 cminnoy

@cminnoy, this is for Linux only and for Ryzen CPUs of AMD.

Linux yes, but I don't think it depends on the type of CPU. My earlier comment (from 2016, so before Ryzen) mentions precisely the same files. That's the idea behind sysfs: have a standardized interface for such information.

But BOINC could run on Windows and OSX too [...]

I'm not really familiar with any of these two operating systems, but perhaps other contributors know which interfaces exist there.

aaronpuchert avatar Feb 15 '21 23:02 aaronpuchert

The paths to temperatures for a client could be user configurable in BOINC Manager and boinctui. The path could be an executable program that prints the temperature to stdout. In the future OS:s should standardize how the temperatures are read.

mobluse avatar Oct 25 '24 14:10 mobluse

For anybody reading this issue and wanting a solution in the interim, you can suspend/resume BOINC based on output from a shell script, number on a web page, etc using this tool

https://github.com/makeasnek/BOINCThermostat

makeasnek avatar Nov 08 '24 03:11 makeasnek

In the future OS:s should standardize how the temperatures are read.

Since they follow very different philosophies, that seems unlikely to happen. I don't think Windows is going to introduce a sysfs equivalent.

aaronpuchert avatar Nov 12 '24 17:11 aaronpuchert

In the future OS:s should standardize how the temperatures are read.

Since they follow very different philosophies, that seems unlikely to happen. I don't think Windows is going to introduce a sysfs equivalent.

If you ask me ten years ago that there will be a native way of running Linux applications on Windows I'd never believe you but now we have WSL ;)

AenBleidd avatar Nov 12 '24 17:11 AenBleidd