aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/SUMMARY.md2
-rw-r--r--src/process/README.md2
-rw-r--r--src/process/nice.md15
-rw-r--r--src/process/taskset.md46
4 files changed, 65 insertions, 0 deletions
diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index 53de8e5..6d401d3 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -36,6 +36,8 @@
- [ps](./process/ps.md)
- [pmap](./process/pmap.md)
- [pstack](./process/pstack.md)
+ - [taskset](./process/taskset.md)
+ - [nice](./process/nice.md)
- [Trace and Profile](./trace_profile/README.md)
- [time](./trace_profile/time.md)
diff --git a/src/process/README.md b/src/process/README.md
index 5b07038..8abbdfb 100644
--- a/src/process/README.md
+++ b/src/process/README.md
@@ -6,3 +6,5 @@
- [ps](./ps.md)
- [pmap](./pmap.md)
- [pstack](./pstack.md)
+- [taskset](./taskset.md)
+- [nice](./nice.md)
diff --git a/src/process/nice.md b/src/process/nice.md
new file mode 100644
index 0000000..bda743d
--- /dev/null
+++ b/src/process/nice.md
@@ -0,0 +1,15 @@
+# nice(1)
+
+Adjust `niceness` of a new command or running process.
+
+Niceness influences the scheduling priority and ranges between:
+- `-20` most favorable
+- `19` least favorable
+
+```sh
+# Adjust niceness +5 for the launched process.
+nice -n 5 yes
+
+# Adjust niceness of running process.
+renice -n 5 -p PID
+```
diff --git a/src/process/taskset.md b/src/process/taskset.md
new file mode 100644
index 0000000..aca93b8
--- /dev/null
+++ b/src/process/taskset.md
@@ -0,0 +1,46 @@
+# taskset(1)
+
+Set cpu affinity for new processes or already running ones.
+
+```sh
+# Pin all (-a) tasks of new command on cores 0,1,2,4.
+taskset -ac 0-2,4 CMD [ARGS]
+
+# Pin all tasks of running PID onto cores 0,2,4.
+taskset -ac 0-5:2 -p PID
+```
+
+### Example
+Utility script to extract cpu lists grouped by the last-level-cache.
+```python
+import subprocess
+
+res = subprocess.run(["lscpu", "-p=cpu,cache"], capture_output=True, check=True)
+
+LLC2CPU = dict()
+
+for line in res.stdout.decode().splitlines():
+ if line.startswith("#"):
+ continue
+
+ cpu, cache = line.split(",")
+ llc = cache.split(":")[-1]
+
+ LLC2CPU.setdefault(llc, list()).append(int(cpu))
+
+LLC2RANGE = dict()
+
+for llc, cpus in LLC2CPU.items():
+ first_cpu = cpus[0]
+ prev_cpu = cpus[0]
+ for cpu in cpus[1:]:
+ if cpu != prev_cpu + 1:
+ LLC2RANGE.setdefault(llc, list()).append(f"{first_cpu}-{prev_cpu}")
+ # New range begins.
+ first_cpu = cpu
+ prev_cpu = cpu
+ # Trailing range.
+ LLC2RANGE.setdefault(llc, list()).append(f"{first_cpu}-{prev_cpu}")
+
+print(LLC2RANGE)
+```