From e3fff31d06fbe572ba42aba4a9b2edee85473c47 Mon Sep 17 00:00:00 2001 From: Frank Sundermeyer Date: Tue, 5 Aug 2025 16:14:09 +0200 Subject: [PATCH 1/2] Adding a revision dates to all chapters/parts --- images/src/png/kernel_tasks.png | Bin 46549 -> 0 bytes xml/MAIN.SLERT.xml | 38 ++++++++++++++------- xml/article_kernel_tasks.xml | 32 +++++++++++------- xml/common_copyright_gfdl.xml | 15 +++++++-- xml/common_legal.xml | 16 ++++++--- xml/slert_cpuset_manipulation.xml | 53 +++++++++++++++++------------- xml/slert_gettinghelp.xml | 16 ++++++--- xml/slert_intro.xml | 17 +++++++--- xml/slert_shielding_model.xml | 33 +++++++++++-------- xml/slert_systemd_shielding.xml | 22 ++++++++----- xml/slert_usingshortcuts.xml | 21 ++++++++---- 11 files changed, 173 insertions(+), 90 deletions(-) delete mode 100644 images/src/png/kernel_tasks.png diff --git a/images/src/png/kernel_tasks.png b/images/src/png/kernel_tasks.png deleted file mode 100644 index e31bd77cc90dc72633eb702a12f1dd4c3a1f1d7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46549 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 diff --git a/xml/MAIN.SLERT.xml b/xml/MAIN.SLERT.xml index 3b39148..d3f48de 100644 --- a/xml/MAIN.SLERT.xml +++ b/xml/MAIN.SLERT.xml @@ -1,18 +1,14 @@ - - - + %entities; ]> - + + &slert; Documentation - + &productname; &productnameshort; &productnumber; @@ -26,12 +22,30 @@ https://github.com/SUSE/doc-slert/edit/main/xml/ no - + + + 2022-11-09 + + + + + + Quick Start Guides + + + + 2022-11-09 + + + + + + diff --git a/xml/article_kernel_tasks.xml b/xml/article_kernel_tasks.xml index 3354cd1..cf62305 100644 --- a/xml/article_kernel_tasks.xml +++ b/xml/article_kernel_tasks.xml @@ -32,6 +32,14 @@ https://github.com/SUSE/doc-slert/edit/main/xml/ no + + + 2022-11-09 + + + + +
Processes and task states @@ -40,7 +48,7 @@ Each process runs through different states during its life cycle, like running or idle. - + A process might be unable to run (idle) at any time and for different reasons. @@ -49,7 +57,7 @@ the maximum amount of time units allowed and that it must yield to another process. - + The following list describes the most important task states needed for programming the Linux Kernel. @@ -69,7 +77,7 @@ The task state is not visible from the userspace. - + TASK_DEAD @@ -83,7 +91,7 @@ The task state is visible from the userspace. - + TASK_RUNNING @@ -97,7 +105,7 @@ The task state is visible from the userspace. - + TASK_INTERRUPTIBLE @@ -114,7 +122,7 @@ The task state is visible from the userspace. - + TASK_UNINTERUPTIBLE @@ -130,7 +138,7 @@ The task state is visible from the userspace. - + TASK_KILLABLE @@ -149,7 +157,7 @@ The task state is not visible from the userspace. - + TASK_IDLE @@ -168,7 +176,7 @@ The task state is not visible from the userspace. - + TASK_STOPPED @@ -181,7 +189,7 @@ The task state is visible from the userspace. - + TASK_TRACED @@ -195,7 +203,7 @@ The task state is visible from the userspace. - + TASK_PARKED @@ -231,6 +239,6 @@
- + diff --git a/xml/common_copyright_gfdl.xml b/xml/common_copyright_gfdl.xml index 87c20f5..86ae036 100644 --- a/xml/common_copyright_gfdl.xml +++ b/xml/common_copyright_gfdl.xml @@ -1,9 +1,9 @@ - - + %entities; ]> + + + + 2024-01-11 + + + + + + Copyright © 2006– SUSE LLC and contributors. All rights reserved. diff --git a/xml/common_legal.xml b/xml/common_legal.xml index 021e9d2..b041368 100644 --- a/xml/common_legal.xml +++ b/xml/common_legal.xml @@ -1,12 +1,20 @@ - - + %entities; ]> + GNU Licenses - + + + 2021-07-20 + + + + + + This appendix contains the GNU Free Documentation License version 1.2. diff --git a/xml/slert_cpuset_manipulation.xml b/xml/slert_cpuset_manipulation.xml index 189ebcf..dfe3877 100644 --- a/xml/slert_cpuset_manipulation.xml +++ b/xml/slert_cpuset_manipulation.xml @@ -1,11 +1,20 @@ - - + %entities; ]> + Full-featured cpuset manipulation commands + + + 2022-11-25 + + + + + + While basic shielding as described above is useful and a common use model for cset, there comes a time when more functionality @@ -29,7 +38,7 @@ The basic syntax of set for cpuset creation is: &prompt.user;cset set -c 1-3 -s my_cpuset1 -cset: --> created cpuset "my_cpuset1" +cset: --> created cpuset "my_cpuset1" This creates a cpuset named my_cpuset1 with a CPUSPEC of CPU1, CPU2 and CPU3. The CPUSPEC is the same concept as described in @@ -48,7 +57,7 @@ cset: --> created cpuset "my_cpuset1" omit CPU2), then issue the following command. &prompt.user;cset set -c 1,3 -s my_cpuset1 -cset: --> modified cpuset "my_cpuset +cset: --> modified cpuset "my_cpuset cset will then adjust the CPUs that are assigned to the my_cpuset1 set to only use CPU1 and CPU3. @@ -58,7 +67,7 @@ cset: --> modified cpuset "my_cpuset example: &prompt.user;cset set -s my_cpuset1 -n super_set -cset: --> renaming "/cpusets/my_cpuset1" to "super_set" +cset: --> renaming "/cpusets/my_cpuset1" to "super_set" Renames the cpuset called my_cpuset1 to super_set. @@ -68,8 +77,8 @@ cset: --> renaming "/cpusets/my_cpuset1" to "super_set" follows. &prompt.user;cset set -d super_set -cset: --> processing cpuset "super_set", moving 0 tasks to parent "/"... -cset: --> deleting cpuset "/super_set" +cset: --> processing cpuset "super_set", moving 0 tasks to parent "/"... +cset: --> deleting cpuset "/super_set" cset: done This command destroys the newly created cpuset called @@ -97,11 +106,11 @@ cset: done example: &prompt.user;cset set -c 1,3 -s top_set -cset: --> created cpuset "top_set" +cset: --> created cpuset "top_set" &prompt.user;cset set -c 3 -s /top_set/sub_set -cset: --> created cpuset "/top_set/sub_set" +cset: --> created cpuset "/top_set/sub_set" These commands created two cpusets: top_set and sub_set. The top_set uses CPU1 and @@ -112,7 +121,7 @@ cset: --> created cpuset "/top_set/sub_set" ask you to use the path. For example: &prompt.user;cset set -c 1,3 -s sub_set -cset: --> modified cpuset "sub_set +cset: --> modified cpuset "sub_set This command adds CPU1 to the sub_set cpuset for its use. Note that using the path in this case is optional. @@ -310,7 +319,7 @@ USER PID PPID SPPr TASK NAME cset: "two" cpuset of CPUSPEC(2) with 0 tasks running &prompt.user;cset proc -s two -e bash -cset: --> last message, executed args into cpuset "/two", new pid is: 20955 +cset: --> last message, executed args into cpuset "/two", new pid is: 20955 &prompt.user;cset proc -l -s two cset: "two" cpuset of CPUSPEC(2) with 2 tasks running @@ -373,8 +382,8 @@ root 21147 21118 Roth python ./cset proc -l two executed, the result may be puzzling. For example: &prompt.user;cset proc -s two -e blah-blah -cset: --> last message, executed args into cpuset "/two", new pid is: 21655 -cset: **> [Errno 2] No such file or directory +cset: --> last message, executed args into cpuset "/two", new pid is: 21655 +cset: **> [Errno 2] No such file or directory The result is no new process even though a new PID is output. The reason for the message is of course that the cset process @@ -645,11 +654,11 @@ three 3 n 0 n 10 0 /three &prompt.user;cset set -c 0 -s system -cset: --> created cpuset "system" +cset: --> created cpuset "system" &prompt.user;cset set -c 1-3 -s user -cset: --> created cpuset "user" +cset: --> created cpuset "user" &prompt.user;cset set -l @@ -688,7 +697,7 @@ system 0 n 0 n 187 0 /system proc subcommand as described above. If you also want to eliminate kernel threads from root that could interfere with user workload (to achieve a form of interrupt - shielding on a real time Linux kernel, for example), you should look + shielding on a real time Linux kernel, for example), you should look at isolcpus= kernel command line argument. @@ -781,23 +790,23 @@ root 0-3 y 0 y 344 0 / &prompt.user;cset set -c 0-3 prio_all -cset: --> created cpuset "prio_all" +cset: --> created cpuset "prio_all" &prompt.user;cset set -c 1-3 /prio_all/prio_high -cset: --> created cpuset "/prio_all/prio_high" +cset: --> created cpuset "/prio_all/prio_high" &prompt.user;cset set -c 2-3 /prio_all/prio_high/prio_med -cset: --> created cpuset "/prio_all/prio_high/prio_med" +cset: --> created cpuset "/prio_all/prio_high/prio_med" &prompt.user;cset set -c 3 /prio_all/prio_high/prio_med/prio_low -cset: --> created cpuset "/prio_all/prio_high/prio_med/prio_low" +cset: --> created cpuset "/prio_all/prio_high/prio_med/prio_low" &prompt.user;cset set -c 0 system -cset: --> created cpuset "system" +cset: --> created cpuset "system" &prompt.user;cset set -l -r diff --git a/xml/slert_gettinghelp.xml b/xml/slert_gettinghelp.xml index 6ca2888..0340200 100644 --- a/xml/slert_gettinghelp.xml +++ b/xml/slert_gettinghelp.xml @@ -1,12 +1,20 @@ - - + %entities; ]> + What to do if there are problems - + + + 2022-11-25 + + + + + + If you are using cset on a supported operating system such as &sls; &productnumber; or &slerte; &productnumber;, diff --git a/xml/slert_intro.xml b/xml/slert_intro.xml index 85b035d..d467153 100644 --- a/xml/slert_intro.xml +++ b/xml/slert_intro.xml @@ -1,12 +1,21 @@ - - + %entities; ]> + Introduction - + + + 2022-11-25 + + + + + + + cset and cgroup version The cset utility supports cpuset controller only on v1 hierarchy (legacy or hybrid in systemd lingo). On a system with the diff --git a/xml/slert_shielding_model.xml b/xml/slert_shielding_model.xml index dad28c0..f96a664 100644 --- a/xml/slert_shielding_model.xml +++ b/xml/slert_shielding_model.xml @@ -1,15 +1,20 @@ - - + %entities; ]> - + The basic shielding model - + + + 2022-11-25 + + + + + + Although any setup of &cpuset;s can really be described as shielding, there is one prevalent shielding model in @@ -107,7 +112,7 @@ processing, issue the following command. &prompt.user;cset shield -c 1-3 -cset: --> activating shielding: +cset: --> activating shielding: cset: moving 176 tasks from root into system cpuset... [==================================================]% cset: "system" cpuset of CPUSPEC(0) with 176 tasks running @@ -137,7 +142,7 @@ cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running the current status of the shield again, issue this command: &prompt.user;cset shield -cset: --> shielding system active with +cset: --> shielding system active with cset: "system" cpuset of CPUSPEC(0) with 176 tasks running cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running @@ -216,7 +221,7 @@ root 32653 25222 Roth python ./cset shield --unshield -v access to all resources on the system. For example: &prompt.user;cset shield --reset -cset: --> deactivating/reseting shielding +cset: --> deactivating/reseting shielding cset: moving 0 tasks from "/user" user set to root set... cset: moving 250 tasks from "/system" system set to root set... [==================================================]% @@ -259,7 +264,7 @@ cset: done &prompt.user;cset shield -e bash -cset: --> last message, executed args into cpuset "/user", new pid is: 13300 +cset: --> last message, executed args into cpuset "/user", new pid is: 13300 &prompt.user;cset shield -s -v @@ -328,7 +333,7 @@ cset: done and options for execution as follows. &prompt.user;cset shield --user=&exampleuser; --group=users -e bash -cset: --> last message, executed args into cpuset "/user", new pid is: 14212 +cset: --> last message, executed args into cpuset "/user", new pid is: 14212 &prompt.user;cset shield -s -v @@ -417,7 +422,7 @@ USER PID PPID SPPr TASK NAME &prompt.user;cset shield -s -p 22010-22020 -cset: --> shielding following pidspec: 22010-22020 +cset: --> shielding following pidspec: 22010-22020 cset: done @@ -431,7 +436,7 @@ cset: done &prompt.user;cset shield -u -p $$ -cset: --> unshielding following pidspec: 22018 +cset: --> unshielding following pidspec: 22018 cset: done diff --git a/xml/slert_systemd_shielding.xml b/xml/slert_systemd_shielding.xml index 64bea85..f8d8676 100644 --- a/xml/slert_systemd_shielding.xml +++ b/xml/slert_systemd_shielding.xml @@ -1,15 +1,20 @@ - - + %entities; ]> - + Shielding with systemd - + + + 2022-11-25 + + + + + + systemd has native support for the cpuset controller since &productname; 15 SP4. Shielding the sensitive workload can be achieved with the proper configuration of respective units. @@ -34,8 +39,7 @@ We must configure all of these units not to stand in the way of our main workload. For instance with following - + drop-in file(s): &prompt.root;cat /etc/systemd/system/init.scope.d/40-shielding.conf diff --git a/xml/slert_usingshortcuts.xml b/xml/slert_usingshortcuts.xml index 8ffb7d3..f6d4541 100644 --- a/xml/slert_usingshortcuts.xml +++ b/xml/slert_usingshortcuts.xml @@ -1,11 +1,20 @@ - - + %entities; ]> + Using shortcuts + + + 2022-01-17 + + + + + + The commands listed in the previous sections always used all the required options. However, cset does have a shortcut facility @@ -251,12 +260,12 @@ cset se -d myset yourset ourset ---> destroys cpusets: myset, yourset and ourset +--> destroys cpusets: myset, yourset and ourset cset se -l prio_high prio_med prio_low ---> lists only cpusets prio_high, prio_med and prio_low ---> the -l is optional in this case since list is default +--> lists only cpusets prio_high, prio_med and prio_low +--> the -l is optional in this case since list is default <command>proc</command> subcommand shortcuts From d095c9af474ee4583dc03da5579ea34ff96948f2 Mon Sep 17 00:00:00 2001 From: Frank Sundermeyer Date: Tue, 5 Aug 2025 16:18:32 +0200 Subject: [PATCH 2/2] Fixed ID --- xml/article_kernel_tasks.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xml/article_kernel_tasks.xml b/xml/article_kernel_tasks.xml index cf62305..dd53628 100644 --- a/xml/article_kernel_tasks.xml +++ b/xml/article_kernel_tasks.xml @@ -32,7 +32,7 @@ https://github.com/SUSE/doc-slert/edit/main/xml/ no - + 2022-11-09