Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: 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á).
-
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. :)
-
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
-
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:
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
-
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 taktosleep 10m & PID=$!
renice +19 $PID
ionice -c3 -p $PID
-
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.
-
Určitě se to po renice nedědí?
~ $ 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ě)