summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ogness <john.ogness@linutronix.de>2017-10-23 12:25:43 +0200
committerJohn Ogness <john.ogness@linutronix.de>2017-10-23 12:25:43 +0200
commit6d7b47650ae1154369b36bc3b98a907c1b9579ef (patch)
treec00b807e8622f68fc552d6db2f48d83ba14a68b5
parent3097360d84ba8ae62ab69c51a5631554066698d4 (diff)
linux processes: update for a stretch kernel
The cgroup example was simplified, the example commands/output were updated for a Debian/stretch system, and various spelling/capitalization errors were corrected. Signed-off-by: John Ogness <john.ogness@linutronix.de>
-rw-r--r--linux-basics/boot-process-basics/pres_boot-process-basics_de.tex20
-rw-r--r--linux-basics/linux-processes/pres_linux-processes_en.tex70
2 files changed, 37 insertions, 53 deletions
diff --git a/linux-basics/boot-process-basics/pres_boot-process-basics_de.tex b/linux-basics/boot-process-basics/pres_boot-process-basics_de.tex
index fbc7f34..aeb291f 100644
--- a/linux-basics/boot-process-basics/pres_boot-process-basics_de.tex
+++ b/linux-basics/boot-process-basics/pres_boot-process-basics_de.tex
@@ -54,7 +54,7 @@
\begin{itemize}
\item System V Init (z.B. Debian)
\item Upstart (Ubuntu)
-\item Systemd (z.B. Fedora)
+\item systemd (z.B. Fedora)
\end{itemize}
\end{frame}
@@ -113,7 +113,7 @@ emits net-device-down
\end{frame}
\begin{frame}
-\frametitle{Systemd}
+\frametitle{systemd}
\begin{itemize}
\item Kann Prozesse parallel starten (ohne explizite Konfiguration der Abhängigkeiten):
\begin{itemize}
@@ -124,16 +124,16 @@ emits net-device-down
\end{frame}
\begin{frame}
-\frametitle{Systemd}
+\frametitle{systemd}
\begin{itemize}
\item Konfiguration durch einzelne Textdateien und nicht durch Shellscripte
-\item Aktionen werden basierend von diesen Konfigurationen von Systemd (Linux-Executable) ausgeführt. Dies vermeidet das Starten vieler einzelner Shell-Instanzen.
+\item Aktionen werden basierend von diesen Konfigurationen von systemd (Linux-Executable) ausgeführt. Dies vermeidet das Starten vieler einzelner Shell-Instanzen.
\item Administraion mittels systemctl
\end{itemize}
\end{frame}
\begin{frame}
-\frametitle{Systemd}
+\frametitle{systemd}
\begin{itemize}
\item Targets übernehmen die Rolle von Runleveln (z.B. Runlevel 0 == poweroff.target)
\item Mehrere Targets können gleichzeitig aktiv sein
@@ -142,7 +142,7 @@ emits net-device-down
\end{frame}
\begin{frame}
-\frametitle{Systemd}
+\frametitle{systemd}
\begin{itemize}
\item Kompatibel zu System V Init. Skripte, die in /etc/init.d liegen, werden wie gewohnt gestartet
\item Verwendet ''Control Groups'' zur Überwachung / Ausführung von Prozessen (daher mind. Kernel 2.6.24; und CGROUPS in .config aktivieren!!)
@@ -150,11 +150,11 @@ emits net-device-down
\end{frame}
\begin{frame}[fragile]
-\frametitle{Systemd: Integrieren eigener Services}
+\frametitle{systemd: Integrieren eigener Services}
/lib/systemd/system/training.service
\begin{verbatim}
[Unit]
-Description=Just a simple SystemD service
+Description=Just a simple systemd service
[Service]
Type=oneshot
@@ -168,7 +168,7 @@ WantedBy=multi-user.target
\end{frame}
\begin{frame}[fragile]
-\frametitle{Systemd: Integrieren eigener Services}
+\frametitle{systemd: Integrieren eigener Services}
/home/devel/systemd\_test.sh
\begin{verbatim}
#!/bin/sh
@@ -179,7 +179,7 @@ sleep 5
\end{frame}
\begin{frame}[fragile]
-\frametitle{Systemd: Integrieren eigener Services}
+\frametitle{systemd: Integrieren eigener Services}
/home/devel/systemd\_test.sh
\begin{verbatim}
$ systemctl enable training.service
diff --git a/linux-basics/linux-processes/pres_linux-processes_en.tex b/linux-basics/linux-processes/pres_linux-processes_en.tex
index a23a881..8d47f98 100644
--- a/linux-basics/linux-processes/pres_linux-processes_en.tex
+++ b/linux-basics/linux-processes/pres_linux-processes_en.tex
@@ -137,7 +137,7 @@ renice [-n] prio -u|--user user [.. user]
\frametitle{SCHED\_IDLE and SCHED\_BATCH}
\begin{itemize}
\item SCHED\_BATCH: The scheduler will always assume the process to be CPU
-intensive and therefor will apply a penalty when calculating the dynamic
+intensive and therefore will apply a penalty when calculating the dynamic
priority.
\item SCHED\_IDLE: For very low prio processes. Even the nice value is
ignored. The resulting priority will be \textbf{below} SCHED\_OTHER and SCHED\_BATCH
@@ -261,8 +261,8 @@ $ cat /proc/irq/default_smp_affinity
# Set default IRQ affinity to CPU0
$ echo 1 > /proc/irq/default_smp_affinity
-# Set affinity for specific IRQ to CPU1
-$ echo 2 > /proc/irq/
+# Set affinity for IRQ19 to CPU1
+$ echo 2 > /proc/irq/19/smp_affinity
\end{verbatim}
\end{frame}
@@ -278,50 +278,37 @@ CPU time, a specific set of CPUs, ...
\begin{frame}[fragile]
\frametitle{Using CGROUPS}
\begin{verbatim}
-$ mount -t cgroup -o defaults none /sys/fs/cgroup
+$ mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct
+
+$ mount -t cgroup -o cpuset none /sys/fs/cgroup/cpuset
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{CGROUPS: Creating new groups}
\begin{verbatim}
-$ cd /sys/fs/cgroup
-
-$ mkdir group_01
+$ mkdir /sys/fs/cgroup/cpu,cpuacct/group_nice
-$ mkdir group_02
+$ mkdir /sys/fs/cgroup/cpuset/group_cpu0only
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{CGROUPS: Setting up groups}
\begin{verbatim}
-$ cd group_01
-
-# Set allowed CPUs
-$ echo 0 > cpuset.cpus
-
-# Set allowed memory nodes
-$ echo 0 > cpuset.mems
-
# Limit CPU time
-$ echo 100 > cpu.shares
+$ echo 100 > /sys/fs/cgroup/cpu,cpuacct/group_nice/cpu.shares
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{CGROUPS: Setting up groups}
\begin{verbatim}
-$ cd group_02
-
# Set allowed CPUs
-$ echo 0 > cpuset.cpus
+$ echo 0 > /sys/fs/cgroup/cpuset/group_cpu0only/cpuset.cpus
# Set allowed memory nodes
-$ echo 0 > cpuset.mems
-
-# Limit CPU time
-$ echo 900 > cpu.shares
+$ echo 0 > /sys/fs/cgroup/cpuset/group_cpu0only/cpuset.mems
\end{verbatim}
\end{frame}
@@ -329,23 +316,22 @@ $ echo 900 > cpu.shares
\frametitle{CGROUPS: Setting up groups}
Open two shells. In shell 1 do:
\begin{verbatim}
-$ cd group_01
+# Add the current task to the cpu0only group
+$ echo $$ > /sys/fs/cgroup/cpuset/group_cpu0only/tasks
-# Add the current task to the group
-$ echo $$ > tasks
+# Add the current task to the nice group
+$ echo $$ > /sys/fs/cgroup/cpu,cpuacct/group_nice/tasks
# Create some noise
-$ while [ 1 ]; do echo bla > /dev/null; done;
+$ while true; do echo -n; done
\end{verbatim}
In shell 2:
\begin{verbatim}
-$ cd group_02
-
-# Add the current task to the group
-$ echo $$ > tasks
+# Add the current task to the cpu0only group
+$ echo $$ > /sys/fs/cgroup/cpuset/group_cpu0only/tasks
# Create some noise
-$ while [ 1 ]; do echo bla > /dev/null; done;
+$ while true; do echo -n; done
\end{verbatim}
\end{frame}
@@ -355,26 +341,24 @@ Now check the CPU usage with top
\begin{verbatim}
$ top
[...]
-4285 root 20 0 4708 1864 1524 R 89 0.2 8:59.68 bash
-4152 root 20 0 4720 1904 1548 R 10 0.2 4:02.00 bash
+PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
+871 root 20 0 22588 3480 3036 R 90.7 0.2 0:56.10 bash
+872 root 20 0 22588 3484 3044 R 9.0 0.2 0:05.45 bash
[...]
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{CGROUPS: Who is using CGROUPS?}
-SystemD uses CGROUPS! Boot with SystemD and check SysFS:
+systemd uses CGROUPS! Boot with systemd and check SysFS:
\begin{verbatim}
-$ cd /sys/kernel/cgroup
+$ cd /sys/fs/cgroup/systemd
$ ls
-blkio cpu cpuacct cpu,cpuacct cpuset devices freezer net_cls systemd
+... system.slice ... user.slice
-$ ls -1 /sys/fs/cgroup/cpu,cpuacct/system/
-cron.service
-dbus.service
-exim4.service
-[...]
+$ ls /sys/fs/cgroup/systemd/system.slice
+... networking.service ... systemd-user-sessions.service ...
\end{verbatim}
\end{frame}