Nedaří se mi formulovat cgroups cgexec command

Nedaří se mi formulovat cgroups cgexec command
« kdy: 06. 06. 2021, 22:47:17 »
Ahoj, snažím se omezit aplikaci memory limitem přes cgroups.

Dělám to takto:
Kód: [Vybrat]
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á:

Kód: [Vybrat]
cgexec -g memory:cgApp App
Jenže takhle já aplikaci nespouštím, nýbrž takto:

Kód: [Vybrat]
cd /home/user/app/ && . ./run
Jenže jak to spustit přes cgexec? Takto mi to nefunguje:

Kód: [Vybrat]
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. :-)


Re:Nedaří se mi formulovat cgroups cgexec command
« Odpověď #1 kdy: 07. 06. 2021, 10:23:45 »
Takto mi to funguje parádně:
Kód: [Vybrat]
cgexec -g memory:cgApp ls -la
Takto mi to ale bohužel nefunguje:
Kód: [Vybrat]
cgexec -g memory:cgApp 'cd /home/user/app/ && . ./run'

Re:Nedaří se mi formulovat cgroups cgexec command
« Odpověď #2 kdy: 07. 06. 2021, 21:53:03 »
Takto mi to funguje parádně:
Kód: [Vybrat]
cgexec -g memory:cgApp ls -la
Takto mi to ale bohužel nefunguje:
Kód: [Vybrat]
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?

RDa

  • *****
  • 1 424
    • Zobrazit profil
    • E-mail
Re:Nedaří se mi formulovat cgroups cgexec command
« Odpověď #3 kdy: 08. 06. 2021, 01:21:17 »
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.
« Poslední změna: 08. 06. 2021, 01:23:33 od RDa »

Re:Nedaří se mi formulovat cgroups cgexec command
« Odpověď #4 kdy: 08. 06. 2021, 10:21:25 »
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


Re:Nedaří se mi formulovat cgroups cgexec command
« Odpověď #5 kdy: 08. 06. 2021, 18:59:49 »
joo, vlastně jsem chtěl jen source, máš pravdu.

Ale jak to použít například na firefox?

Spouštím ho takto:
Kód: [Vybrat]
DISPLAY=:0 firefox
Ale tak, jak bych očekával že to půjde to bohužel nejde:
Kód: [Vybrat]
[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.

Re:Nedaří se mi formulovat cgroups cgexec command
« Odpověď #6 kdy: 08. 06. 2021, 19:54:06 »
no ten DISPLAY je proměnná shellu, buď na začátek řádku

Kód: [Vybrat]
DISPLAY=:0 cgexec -g memory:cgFirefox6GB firefox
nebo to dát jako export
Kód: [Vybrat]
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

Re:Nedaří se mi formulovat cgroups cgexec command
« Odpověď #7 kdy: 09. 06. 2021, 20:13:22 »
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. :-)