Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: alfonz19 14 Února 2012, 11:11:33

Název: tak-nějak automaticky uplatňované nice & ionice
Přispěvatel: alfonz19 14 Února 2012, 11:11:33
Ahoj,
mám program A, který je nějak napsán, a nemám (čti zatím nevidím) možnost jak ovlivňovat způsob, jakým spouští program B. B je poměrně výpočetně náročný a hodně pracuje s diskem, takže PC začne být poněkud méně responsivní. Mohu nastavit nice a ionice, ale umím to jen na základě pid. Je nějaká možnost, jak nastavit, že např. všechny firefoxy poběží s ionice -c 3 ? (jde o příklad, firefox pochopitelně problém nedělá).
Název: Re:tak-nějak automaticky uplatňované nice & ionice
Přispěvatel: Milhouse 14 Února 2012, 11:21:30
To by mě taky zajímalo. Ale třeba v Kubuntu u programu BOINC nevidím při změně "nice" změnu. Videa a vykreslování obecně je stejně velice pomalé, musím tedy úkoly pozastavit.

Nj vím, že mluvím o něčem jiném. :)
Název: Re:tak-nějak automaticky uplatňované nice & ionice
Přispěvatel: daysleeper 14 Února 2012, 11:37:48
Pokud není možnost ovlivnit způsob, jakým se spouští B, pak bude asi nejjednodušší spustit A s určitým nice a ionice: všechny jeho děti pak tyto hodnoty podědí.

Druhou možností je soustavně sledovat děti A a měnit jejich hodnoty, ale...   :P
Název: Re:tak-nějak automaticky uplatňované nice & ionice
Přispěvatel: alfonz19 14 Února 2012, 18:23:58
díky za odpovědi. Pokud se nastavení propaguje z rodiče na děti, pak by mi to nejspíš i postačovalo. Tak ale mám trochu problém s nastavením priority toho rodiče. Přišel čas být trochu konkrétní. Obojí jsou javové procesy. A teď kde je problém:
Kód: [Vybrat]
java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)

nice -n 19 ionice -c 3 java -version
java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
martin@MM-PC:~$

jakým způsobem ionice interpretuje "command" parametr? Nebo je to problém s nastavení PATH? ten je exportován v /etc/profile
Název: Re:tak-nějak automaticky uplatňované nice & ionice
Přispěvatel: daysleeper 14 Února 2012, 19:23:53
Mně ten tvůj příkaz funguje. Když použiješ nice a ionice zvlášť, který příkaz způsobuje ten problém?

Nebo to udělej takto
Kód: [Vybrat]
sleep 10m & PID=$!
renice +19 $PID
ionice -c3 -p $PID
Název: Re:tak-nějak automaticky uplatňované nice & ionice
Přispěvatel: alfonz19 14 Února 2012, 19:52:15
hledal jsem už prve, ale nemám ponětí kde je chyba. problém dělá ionice. Pozoruhodné je, že když dám
ionice -c 3 java -version
java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

tak dostanu jinou chybu než

ionice -c 3 "java -version"
ionice: funkce execvp selhala: No such file or directory

pozn. na okraj: java není instalována z deb ale je stažena ručně a rozbalena do odpovídajících adresářů a ručně byl nastaven JAVA_HOME, PATH atp. (důvod: 64b systém + požadovaná 32b java; a těch JVMek tady mám poněkud víc a toto se mi jevilo jako nejsnazší cesta; přesto myslím že toto by neměl být zdroj problémů).

jinak renice a ionice na již vytvořený proces funguje. Jen následně vytvářené procesy ignorují tuto změnu priorit --> nepropaguje se to. Předpokládal jsem tedy, že ten prvotní java proces musí být spuštěn rovnou s požadovanými nice a ionice, aby k propagování docházelo.
Název: Re:tak-nějak automaticky uplatňované nice & ionice
Přispěvatel: daysleeper 14 Února 2012, 21:01:54
Určitě se to po renice nedědí?
Kód: [Vybrat]
~ $ ps -o pid,nice,comm -p $$
  PID  NI COMMAND
 8039   0 bash
~ $ renice +19 $$
8039: old priority 0, new priority 19
~ $ ps -o pid,nice,comm -p $$
  PID  NI COMMAND
 8039  19 bash
~ $ sleep 1m &
[1] 8120
~ $ ps -o pid,nice,comm -p $$ -p 8120
  PID  NI COMMAND
 8039  19 bash
 8120  19 sleep
(pokud v terminálu spuštěnému bashi měním prioritu pomocí renice, násl. spuštěný proces sleep podědí novou hodnotu nice; pro ionice mi to vychází stejně)