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