Ahoj, snažím se omezit aplikaci memory limitem přes cgroups.
Dělám to takto:
sudo yum install libcgroup-tools
sudo cgcreate -t user:group-a user:group -g memory:/cgApp
sudo echo $(( 2048 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/cgApp/memory.limit_in_bytes #2 GB RAM
Zde je komplikace oproti manuálu, který říká:
cgexec -g memory:cgApp App
Jenže takhle já aplikaci nespouštím, nýbrž takto:
cd /home/user/app/ && . ./run
Jenže jak to spustit přes cgexec? Takto mi to nefunguje:
cgexec -g memory:cgApp 'cd /home/user/app/ && . ./run'
Jak ten cgexec prosím použít správně? Děkuji.
PS: Dal jsem to do špatné kategorie, omlouvám se, snad to tu někdo najde. :-)
Takto mi to funguje parádně:
cgexec -g memory:cgApp ls -la
Takto mi to ale bohužel nefunguje:
cgexec -g memory:cgApp 'cd /home/user/app/ && . ./run'
Citace od: scientific kdy 07. 06. 2021, 10:23:45
Takto mi to funguje parádně:
cgexec -g memory:cgApp ls -la
Takto mi to ale bohužel nefunguje:
cgexec -g memory:cgApp 'cd /home/user/app/ && . ./run'
no to druhé má dělat co? cd se může udělat před cgexec a pak . ./run udělá "source run", teda vezme z toho skriptu run (jestli to je skript) jen proměnné shellu
nemá tam být jen ./run teda bez té první tečky? aby se pustil?
Citace od: Jan Fikar kdy 07. 06. 2021, 21:53:03
no to druhé má dělat co? cd se může udělat před cgexec a pak . ./run udělá "source run", teda vezme z toho skriptu run (jestli to je skript) jen proměnné shellu
To neni pravda, ono to celej skript
vykona vcetne prikazu v aktualni session. Tj. nastavi to i funkce krome promennych.
Neco jako import/include/require v jinych jazycich.
máte pravdu, ale stejně by se to asi mohlo pustit jen ./run
u . ./run bych viděl přínos jen v tom, jestli potom nějaký jiný program bude využívat ty nastavené proměnné, ale to pravděpodobně nebude ten případ
joo, vlastně jsem chtěl jen source, máš pravdu.
Ale jak to použít například na firefox?
Spouštím ho takto:
DISPLAY=:0 firefox
Ale tak, jak bych očekával že to půjde to bohužel nejde:
[localuser@localhost ~]$ cgexec -g memory:cgFirefox6GB DISPLAY=:0 firefox
No such file or directory
[localuser@localhost ~]$
Děkuji za tip se source a prosím o tip ještě s firefoxem, pak s tímhle už dám pokoj. :-) Díky moc.
no ten DISPLAY je proměnná shellu, buď na začátek řádku
DISPLAY=:0 cgexec -g memory:cgFirefox6GB firefox
nebo to dát jako export
export DISPLAY=:0
cgexec -g memory:cgFirefox6GB firefox
na ten problém s cache ale cgroups nepůjdou použít, cache alokuje systém, ne program
Jasný no, jsem máslo. Ale jsem rád, že o cgroup vím, však ono se to bude někdy určitě hodit. Díky. :-)