Templaty v cgroups
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Úterý Srpen 5 17:28:23 CEST 2014
Letos v lednu se tady Martin Kraus ptal, jak zprovoznit pam_cgroup.
Pochopil jsem to tak, že podstata problému byla v tom, že nefungovaly
templaty. V /etc/cgrules.conf bylo něco jako:
* * /%u
a v cgconfig.conf pak
template %u {
freezer {
}
}
ale nějak to nefungovalo dohromady.
Nedávno jsem to na jednom počítači zprovozňoval a také mi to nechtělo
fungovat. Při té příležitosti jsem zjistil dvě věci, které by někoho mohly
zajímat:
Za prvé jsem zjistil, že je dobré ladit to tak, že si vyrobím specifické
pravidlo pro nějaký program (*:program ...) a pak pouštím následující
příkaz (volitelně pod strace)
CGROUP_LOGLEVEL=DEBUG cgexec program
Ta proměnná způsobí, že cgexec bude poměrně sdílný ohledně toho, co se
snaží dělat, včetně toho, jaká pravidla z cgrules.conf aplikuje a jak.
Jakmile začne správně fungovat cgexec, tak je velmi pravděpodobné, že se
to podaří zprovoznit i s cgrulesengd a možná i tím pam_cgroup.
Druhá věc, kterou jsem zjistil, byla ta, že proste nefunguje kombinace
templatů a hvězdičky v druhém sloupci cgrules.conf (to je výběr
kontrolérů). Pokud je tam hvězdička, tak se to sesype v libcgroup
ve funkci cgroup_test_subsys_mounted(), protože to usoudí, že filesystém
pro cgroupy není namontovaný.
Řešením je explicitně vyjmenovat kontroléry, kterých se to má týkat.
V mém konkrétním případě fungovalo něco jako:
@skupina cpu,memory,blkio cesta/%u
Pravděpodobně by se to mělo nahlásit jako chyba, protože ta hvězdička mu
vadí, jen když je v třetím sloupci odkaz na template, ale ještě jsem na to
neměl náladu.
--
Pavel Kankovsky aka Peak "Que sais-je?"
Další informace o konferenci Linux