From 3fb382ede6cc3930c540339cdfc3b11706a4de76 Mon Sep 17 00:00:00 2001 From: Michele Cereda Date: Thu, 19 Dec 2024 14:08:38 +0100 Subject: [PATCH] chore(boinc): improve readability, add command to snippets --- knowledge base/boinc.md | 82 +++++++++++++++++++++++++++++------------ snippets/boinc.sh | 28 ++++++++++---- snippets/systemd.sh | 2 + 3 files changed, 81 insertions(+), 31 deletions(-) diff --git a/knowledge base/boinc.md b/knowledge base/boinc.md index 9e5537e..8a4e40a 100644 --- a/knowledge base/boinc.md +++ b/knowledge base/boinc.md @@ -1,7 +1,5 @@ # BOINC -## Table of contents - 1. [TL;DR](#tldr) 1. [Client management](#client-management) 1. [Remote management](#remote-management) @@ -17,9 +15,14 @@ ## TL;DR Files are located in `/var/lib/boinc` by default.
-Some distribution (debian and derivate) use `/etc/boinc-client` for configuration files instead, and create links to them in the default location. +Some distribution (debian and derivate) use `/etc/boinc-client` for configuration files instead, and create links to +them in the default location. -The resource share property can be set anywhere from 0 to 1000 for each project, with 0 meaning it will not get any work from that project unless every other project you run is out of work. +The resource share property can be set anywhere from 0 to 1000 for each project, with 0 meaning it will not get any work +from that project unless every other project you run is out of work. + +
+ Setup ```sh # Install. @@ -28,11 +31,32 @@ sudo apt install 'boinc-client' 'boinc-manager' # or 'boinc-client-nvidia-cu sudo pacman -S 'boinc' # or 'boinc-nox' sudo zypper install 'boinc-client' 'boinc-manager' +# Enable the service. +sudo systemctl start 'boinc-client.service' + +# Allow GPU usage. +sudo gpasswd -a 'boinc' 'video' +``` + +
+ +
+ Usage + +```sh # Set the GUI RPC communications port. # Default is '31416'. boinc --gui_rpc_port '30000' + +# Open `boinc-manager` with*out* also starting the client (`-nd`). +# Connect to the instance started by the current system (`-a`). +# Allow for multiple instances of the manager (`-m`). +# Provide the connection password in the command (`-p`). +boinc-manager -nd -amp '123' ``` +
+
Laptop-like platforms energy management @@ -47,7 +71,7 @@ echo 1 | sudo tee '/sys/devices/system/cpu/intel_pstate/no_turbo' # Suspend computing when the computer is in use by giving the `boinc` user # access to the X session (so that mouse and keyboard input can be communicated # to the client). -xhost +SI:localuser:boinc +xhost '+SI:localUser:boinc' ```
@@ -60,31 +84,40 @@ xhost +SI:localuser:boinc | [boinccmd] | Command line | | [boinctui] | Text | -Local control RPCs are authenticated using the GUI RPC password. This password is located in the `gui_rpc_auth.cfg` configuration file, as the single first line, with a max length of 255 characters. +Local control RPCs are authenticated using the GUI RPC password. This password is located in the `gui_rpc_auth.cfg` +configuration file, as the single first line, with a max length of 255 characters. A password is **required** from version FIXME, and is automatically generated if the file is not found or it is empty. -Resource share is used to help BOINC determine which projects to prioritize; the larger the number, the more it will prioritize work from that project over the other projects.
-This value does **not** determine anything about how much of your CPU, GPU, etc. are used. If you want to do that, change the relative settings.
-The number for resource share can be set anywhere from `0` to `1000` for each project. Setting a project's resource share to zero means it will **not** get any work from that project **unless** every other project you run is out of work. +Resource share is used to help BOINC determine which projects to prioritize; the larger the number, the more it will +prioritize work from that project over the other projects.
+This value does **not** determine anything about how much of your CPU, GPU, etc. are used. If you want to do that, +change the relative settings.
+The number for resource share can be set anywhere from `0` to `1000` for each project. Setting a project's resource +share to zero means it will **not** get any work from that project **unless** every other project you run is out of +work. ### Remote management All remote RPCs (both status and control) are authenticated using the GUI RPC password. Quick, dirty solution: use the `--allow_remote_gui_rpc` option when starting the client.
-This will make the BOINC client accept connections from **any** host (subject to password authentication) even if the client's configuration files are set otherwise. +This will make the BOINC client accept connections from **any** host (subject to password authentication) even if the +client's configuration files are set otherwise. Better solution: -1. add the `1` **option** to the `cc_config.xml` file in the BOINC data directory -1. restart the service to make the above change effective -1. check port 31416 (or the one configured for use) is reachable from other hosts -1. specify a set of allowed hosts creating the `remote_hosts.cfg` file in the BOINC data directory; its entries must be DNS host names or IP addresses, and must be one per line +1. Add the `1` **option** to the `cc_config.xml` file in the BOINC data + directory; +1. Restart the service to make the above change effective; +1. Check port `31416` (or the one configured for use) is reachable from other hosts. +1. Specify a set of allowed hosts creating the `remote_hosts.cfg` file in the BOINC data directory; its entries must be + DNS host names or IP addresses, and must be one per line. - > the _Read config file_ action in BOINC Manager's _Advanced_ menu will also read the `remote_hosts.cfg` file, so a restart of the client is not required to enable changes to the remote host list. + > the _Read config file_ action in BOINC Manager's _Advanced_ menu will also read the `remote_hosts.cfg` file, so a + > restart of the client is not required to enable changes to the remote host list. -1. check the `gui_rpc_auth.cfg` file in the BOINC data directory to get the password for authentication +1. Check the `gui_rpc_auth.cfg` file in the BOINC data directory to get the password for authentication. ## Use the GPU for computations @@ -101,13 +134,14 @@ Number of platforms 1 If the resulting number of platform is `0`, you need to install the proprietary drivers for your card. +
+ On OpenSUSE + ### AMD drivers See [AMD Linux drivers] and [Radeon™ Software for Linux® Installation] for the AMD drivers.
If you want to install also the ROCm component, see also the [AMD ROCm™ documentation]. -
On OpenSUSE - Install the `amdgpu-install` package from [AMD's Linux drivers][amd linux drivers] page, then execute it. ```sh @@ -132,11 +166,11 @@ sudo pacman -Sy 'intel-compute-runtime' 'ocl-icd' sudo zypper install 'intel-opencl' 'ocl-icd-devel' ``` -

+
At the next restart of the BOINC client, something similar to this line should appear in the event logs: -```txt +```plaintext Oct 09 23:09:40 hostnameHere boinc[1709]: 09-Oct-2022 23:09:40 [---] OpenCL: AMD/ATI GPU 0: gfx90c:xnack- (driver version 3452.0 (HSA1.1,LC), device ve> ``` @@ -169,10 +203,11 @@ In `cc_config.xml`: ## Gotchas - It seems to work much better on debian-based distribution than on others. -- In order to suspend computing when the computer is in use, the `boinc` user should have access to your X session so that mouse and keyboard input can be communicated to the client: +- In order to suspend computing when the computer is in use, the `boinc` user should have access to your X session so + that mouse and keyboard input can be communicated to the client: ```sh - xhost +SI:localuser:boinc + xhost '+SI:localUser:boinc' ``` ## Further readings @@ -195,7 +230,8 @@ In `cc_config.xml`: - [Linux suspend when computer is in use bug] diff --git a/snippets/boinc.sh b/snippets/boinc.sh index 0bdd267..24c9cea 100755 --- a/snippets/boinc.sh +++ b/snippets/boinc.sh @@ -3,22 +3,34 @@ # sources: # - https://wiki.archlinux.org/?title=BOINC#Laptop_overheating_and_battery_duration_reduction -if ( ! cpupower frequency-info --governors | grep --quiet ondemand ) + +sudo gpasswd -a 'boinc' 'video' +xhost '+si:localuser:boinc' + + +# Save power. +if ( ! cpupower frequency-info --governors | grep --quiet 'ondemand' ) then echo "ERROR: no ondemand governor available. Aborting." fi -sudo gpasswd -a boinc video -xhost si:localuser:boinc - -sudo cpupower frequency-set --governor ondemand +sudo cpupower frequency-set --governor 'ondemand' # Do not boost the CPU frequency for niced loads. -# The governor must support it - check if the file exists. -# Usually AMD only +# The governor *must* support it - check if the file exists first. +# AMD CPUs only. echo 1 | sudo tee '/sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load' # Disable (1) turbo boost for Intel CPUs. +# Intel CPUs only. echo 1 | sudo tee '/sys/devices/system/cpu/intel_pstate/no_turbo' -sudo systemctl start boinc-client.service + +sudo systemctl start 'boinc-client.service' + + +# Open `boinc-manager` with*out* also starting the client (`-nd`). +# Connect to the instance started by the current system (`-a`). +# Allow for multiple instances of the manager (`-m`). +# Provide the connection password in the command (`-p`). +boinc-manager -nd -amp '123' diff --git a/snippets/systemd.sh b/snippets/systemd.sh index c81c82b..abeec83 100644 --- a/snippets/systemd.sh +++ b/snippets/systemd.sh @@ -9,3 +9,5 @@ sudo hostnamectl status --static sudo hostnamectl set-hostname --pretty 'prometheus' sudo systemctl list-units --state='failed' + +sudo systemctl hybrid-sleep && exit