linux + cgroups

 ( Pontscho | 2012. március 27., kedd - 12:40 )

Remélem ez csak terv, mert viccnek túl durva lenne.

Értem én, h a setrlimit(RLIMIT_RSS) túl bonyolult, de ez a cgroups ez elképesztő.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

ez regota benne van a kernelben - vagy nem ertem a kerdest?

A cgroups egy baromi jó dolog, sokkal több, mint az ulimit. Egy rakat use case van amit csak cgroups-al lehet szépen megoldani szerveren és desktopon is. Ráadásul nagyon egyszerű használni, bár a kernelbe nagyon mélyen belenyúl, azért szokták bírálni az ellenzői, de szerintem az előnyei megérik az árát.

Nem az alapproblemara vonatkozo megoldasi szendekkal van bajom, mert speciel pont egy hasonlo igenybe futottam bele, hanem ezzel a kreten interface-szel. Mountolj fel egy valamit, majd csinalj bele egy konyvtarat es echozz ossze-vissza minden fele fajlokba, majd akkor tortenik valami magia. Eleg durva "ezt igy hogy" erzesem volt mikor atolvastam a doksit.

---
pontscho / fresh!mindworkz

> hanem ezzel a kreten interface-szel

'X=Y' helyett 'echo Y > X' ?

az tenyleg eleg retard, de vagy meg kell baratkozni vele, vagy kesziteni hozza valami jobb toolt, mert a cgroupok ugy nez ki, velunk lesznek. igencsak abba az iranyba haladnak a dolgok, hogy egy atlag disztro fel lesz konfigolva a hasznalatukra - egy opensuse 12.1 -en mar igy nez ki a mount kimenete:

lc0012:~ # mount | grep cgrou
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)

Ez egyszerre gusztustalan es rohejes. :)

---
pontscho / fresh!mindworkz

Van hozzá userspace tool ami elfedi, cgcreate, stb. :)

Amúgy nemtom' - a fájlrendszer hierarchiája szépen megfeleltethető a cgroups -nak, szóval miért ne. A VFS pedig néhány dolgot talán még le is egyszerűsít a kódban, bár ebbe a részébe soha nem néztem még bele, de el tudom képzelni.

Amikor tc -vel menedzselem az ordenáré HTB fákat, nem érzem azt, hogy ez a jól megtervezett netlink API megváltja a sorsom, sőt.. mennyivel jobb lenne néha mc-vel átszaladni a fán és echo-val megváltoztatni egy paramétert a kilóméteres cmd helyett.. mc-hatereknek meg a shell kiegészítése segít be.

Szóval szerintem duck test: passed.

Nem userspace tool-ra lett volna szuksegem hozza, hanem valamilyen formaban egy ertelmes API-ra, mint mondjuk a prlimit(). Ehelyett kaptam egy kobmeter taknyolast. Netlink-rol szinten jot vagy semmit, bar ott mondjuk inkabb a tragya kisero interface libbel volt bajom amig ujra nem irtam nullarol.

Eleg nagy baj az, h kernelt ilyen szoveges szaron keresztul kell maceralni, "kicsit" tobb bof/buf lehetoseget ad, valamint minden, csak nem gyors. Egyetlen szerencseje az, h ennek a maceralasa nem epp teljesitmeny igenyes. Meg lehetett volna ezt ennel sokkal szebben is csinalni ugy, h az ember nem hanyja el magat tole.

---
pontscho / fresh!mindworkz

"Those who don't understand Unix^WSolaris are doomed to reinvent it, poorly." :))

--
Java apps are nothing more than sophisticated XML-to-exception converters.

teljesen jo dolog stringeket parsolni a kernelben, meg vfs-esen keresztulbaszni mindent egy sima sysctl (gyak egy SWI meg egy struct atpakolasa) :)))

--
NetBSD - Simplicity is prerequisite for reliability

Nyugalom. Senki sem várja el, hogy a megoldásból kikövetkeztesd a tervezési elveket.

A miket? :))

--
Java apps are nothing more than sophisticated XML-to-exception converters.

A Linuxszal egyre inkább az az érzésem, hogy a kezdeti, hülyegyerekekjátékszere-stádiumból kezd fölnőni és most már kisebb-nagyobb cégek, illetve az általuk alkalmazott előbb említett hülyegyerekek játsszák ugyanezt tovább vele. :)

--
Java apps are nothing more than sophisticated XML-to-exception converters.

Mindezt ugy, h a hatulgombolos hulyegyerekek is megmaradtak.

---
pontscho / fresh!mindworkz