boinc
boinc copied to clipboard
CPU temperatures monitoring
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).
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
On unix-like systems, you can use this script as temporary workaround.
@bazarassa, yes, it looks like it's easy to do on Linux and MacOS but not so easy to do this on Windows.
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"?
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
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:
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
boinccmdCLI - [ ] 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
Ryzen CPU on Ubuntu: /sys/class/hwmon/hwmon1/temp1_input
@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
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, 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.
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.
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
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.
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
sysfsequivalent.
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 ;)