\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. juin 15 08:53:32 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={cgconfig.conf},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Fichier de configuration utilisé par libcgroup},
CreationDate={D:20130615085332},
ModDate={D:20130615085332},
Keywords={Linux;Linux configuration;cgroups}
}}
\begin{document}
 
\begin{center}
{\Huge cgconfig.conf }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Fichier de configuration utilisé par libcgroup}
 
\vspace{10mm}
 
\hspace{1mm}  Fichier de configuration utilisé par libcgroup pour définir les cgroups, leur paramètres et leur points de montage. Il consiste de sections mount, group et default.
\vspace{5mm} \\
 
 
\hspace{1mm} la section mount a la forme:
 
{\ttfamily
mount \{\\ \hspace{2mm}<controller> = <path>;\\ \hspace{2mm}...\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm}  où \textbf{controller} est le nom du sous-système. Une hiérarchie nommée peut être spécifiée comme contrôleur avec "name=<somename>". \textbf{path}, le chemin où la hiérarchie cgroup associée devrait être montée.
\vspace{5mm} \\
 
 
\hspace{1mm} La section group a la forme:
 
{\ttfamily
group <name> \{\\ \hspace{2mm}\texttt{[}permissions\texttt{]}\\ \hspace{2mm}<controller> \{\\ \hspace{2mm}\hspace{2mm}<param name> = <param value>;\\ \hspace{2mm}\hspace{2mm}...\\ \hspace{2mm}\}\\ ...\\ \}\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} name]{Nom du cgroup. le cgroup root est toujours créé automatiquement. Il peut être spécifié dans ce fichier de configuration en utilisant '.' comme nom de cgroup}
\item[\hspace{1mm} permissions]{Les permissions du cgroup. root a toujous les permissions de faire tout avec les cgroups Ils ont la syntaxe suivante:}
\end{description}
 
{\ttfamily
perm \{\\ \hspace{2mm}task \{\\ \hspace{2mm}\hspace{2mm}uid = <task user>;\\ \hspace{2mm}\hspace{2mm}gid = <task group>;\\ \hspace{2mm}\hspace{2mm}fperm = <file permissions>\\ \hspace{2mm}\}\\ \hspace{2mm}admin \{\\ \hspace{2mm}\hspace{2mm}uid = <admin name>;\\ \hspace{2mm}\hspace{2mm}gid = <admin group>;\\ \hspace{2mm}\hspace{2mm}dperm = <directory permissions>\\ \hspace{2mm}\hspace{2mm}fperm = <file permissions>\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} task user/group]{Nom de l'utilisateur et du group propriétaire du fichier tasks du cgroup}
\item[\hspace{1mm} admin user/group]{Nom de l'utilisateur et du group propriétaire des autres fichiers du cgroup}
\item[\hspace{1mm} controller]{Nom du sous-sytème kernel. Permet de spécifier le nom du fichier à définir et sa valeur}
\end{description}
 
\hspace{1mm} La section default a la forme:
 
{\ttfamily
default \{\\ \hspace{2mm}perm \{\\ \hspace{2mm}\hspace{2mm}task \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = <task user>;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = <task group>;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}fperm = <file permissions>\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}admin \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = <admin name>;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = <admin group>;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}dperm = <directory permissions>\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}fperm = <file permissions>\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm}  Cette section a la même forme que la section group
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Exemple 1:
 
{\ttfamily
mount \{\\ \hspace{2mm}cpu = /mnt/cgroups/cpu;\\ \hspace{2mm}cpuacct = /mnt/cgroups/cpu;\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Créé la hiérarchie contrôlée par 2 sous-sytèmes. Correspond à: \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu} \\
 
\hspace{1mm} Exemple 2:
 
{\ttfamily
mount \{\\ \hspace{2mm}cpu = /mnt/cgroups/cpu;\\ \hspace{2mm}"name=scheduler" = /mnt/cgroups/cpu;\\ \hspace{2mm}"name=noctrl" = /mnt/cgroups/noctrl;\\ \}\\ group daemons \{\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\hspace{2mm}cpu.shares = "1000";\\ \hspace{2mm}\}\\ \}\\ group test \{\\ \hspace{2mm}"name=noctrl" \{\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Créé 2 hiérarchies. une 'scheduler' contrôlée par le sous-système cpu avec le group daemons en enfant. L'autre est nommée noctrl sans contrôleur, avec un groupe test. Correspond à: \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpu,name=scheduler cpu /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mount -t cgroup -o none,name=noctrl none /mnt/cgroups/noctrl} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons} \\
\hspace{1mm} \textbf{echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/noctrl/tests} \\
 
\hspace{1mm} Exemple 3:
 
{\ttfamily
\hspace{2mm}mount \{\\ \hspace{2mm}cpu = /mnt/cgroups/cpu;\\ \hspace{2mm}cpuacct = /mnt/cgroups/cpu;\\ \}\\ \hspace{2mm}\\ group daemons/www \{\\ \hspace{2mm}perm \{\\ \hspace{2mm}\hspace{2mm}task \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = webmaster;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}fperm = 770;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}admin \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}dperm = 775;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}fperm = 744;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\hspace{2mm}cpu.shares = "1000";\\ \hspace{2mm}\}\\ \}\\ \hspace{2mm}\\ group daemons/ftp \{\\ \hspace{2mm}perm \{\\ \hspace{2mm}\hspace{2mm}task \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = ftpmaster;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}fperm = 774;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}admin \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}dperm = 755;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}fperm = 700;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\hspace{2mm}cpu.shares = "500";\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Créer la hiérarchie contrôllée par 2 sous-système avec un group et 2 sous-groupes. Correspond à: \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons/www} \\
\hspace{1mm} \textbf{chown root:root /mnt/cgroups/cpu/daemons/www/*} \\
\hspace{1mm} \textbf{chown root:webmaster /mnt/cgroups/cpu/daemons/www/tasks} \\
\hspace{1mm} \textbf{echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons/ftp} \\
\hspace{1mm} \textbf{chown root:root /mnt/cgroups/cpu/daemons/ftp/*} \\
\hspace{1mm} \textbf{chown root:ftpmaster /mnt/cgroups/cpu/daemons/ftp/tasks} \\
\hspace{1mm} \textbf{echo 500 > /mnt/cgroups/cpu/daemons/ftp/cpu.shares} \\
 
\hspace{1mm} Exemple 4:
 
{\ttfamily
mount \{\\ \hspace{2mm}cpu = /mnt/cgroups/cpu;\\ \hspace{2mm}cpuacct = /mnt/cgroups/cpuacct;\\ \hspace{2mm}\}\\ \hspace{2mm}\\ group daemons \{\\ \hspace{2mm}cpuacct\{\\ \hspace{2mm}\}\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Créé 2 hiérarchies et un group commun Correspond à: \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpuacct} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpu cpu /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpuacct cpuacct /mnt/cgroups/cpuacct} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpuacct/daemons} \\
 
\hspace{1mm} Exemple 5:
 
{\ttfamily
mount \{\\ \hspace{2mm}cpu = /mnt/cgroups/cpu;\\ \hspace{2mm}cpuacct = /mnt/cgroups/cpuacct;\\ \}\\ \hspace{2mm}\\ group daemons \{\\ \hspace{2mm}cpuacct\{\\ \hspace{2mm}\}\\ \}\\ \hspace{2mm}\\ group daemons/www \{\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\hspace{2mm}cpu.shares = "1000";\\ \hspace{2mm}\}\\ \}\\ \hspace{2mm}\\ group daemons/ftp \{\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\hspace{2mm}cpu.shares = "500";\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Créé 2 hiérarchies avec quelqes groupes dedans. un de ces groupes est créé dans les 2 hiérarchies. Correspond à: \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpuacct} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpu cpu /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpuacct cpuacct /mnt/cgroups/cpuacct} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpuacct/daemons} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons/www} \\
\hspace{1mm} \textbf{echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons/ftp} \\
\hspace{1mm} \textbf{echo 500 > /mnt/cgroups/cpu/daemons/ftp/cpu.shares} \\
 
\hspace{1mm} Exemple 6:
 
{\ttfamily
mount \{\\ \hspace{2mm}cpu = /mnt/cgroups/cpu;\\ \hspace{2mm}cpuacct = /mnt/cgroups/cpu;\\ \}\\ \hspace{2mm}\\ group . \{\\ \hspace{2mm}perm \{\\ \hspace{2mm}\hspace{2mm}task \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = operator;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}admin \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = operator;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\}\\ \}\\ \hspace{2mm}\\ group daemons \{\\ \hspace{2mm}perm \{\\ \hspace{2mm}\hspace{2mm}task \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = daemonmaster;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\hspace{2mm}admin \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}uid = root;\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}gid = operator;\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \hspace{2mm}cpu \{\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Créé la hiérarchie contrôlée par 2 sous-sytèmes avec un groupe ayant des permissions spéciales. Correspond à: \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu} \\
\hspace{1mm} \textbf{chown root:operator /mnt/cgroups/cpu/*} \\
\hspace{1mm} \textbf{chown root:operator /mnt/cgroups/cpu/tasks} \\
\hspace{1mm} \textbf{mkdir /mnt/cgroups/cpu/daemons} \\
\hspace{1mm} \textbf{chown root:operator /mnt/cgroups/cpu/daemons/*} \\
\hspace{1mm} \textbf{chown root:daemonmaster /mnt/cgroups/cpu/daemons/tasks} \\
\end{flushleft}
\end{document}
