Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: tak-nějak automaticky uplatňované nice & ionice  (Přečteno 1407 krát)

alfonz19

  • Aktivní člen
  • *
  • Příspěvků: 219
tak-nějak automaticky uplatňované nice & ionice
« kdy: 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á).

Milhouse

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5726
Re:tak-nějak automaticky uplatňované nice & ionice
« Odpověď #1 kdy: 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. Á. V. O. D. Y.
 "...naše práce není vidět, ale je důležitá!"

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:tak-nějak automaticky uplatňované nice & ionice
« Odpověď #2 kdy: 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

alfonz19

  • Aktivní člen
  • *
  • Příspěvků: 219
Re:tak-nějak automaticky uplatňované nice & ionice
« Odpověď #3 kdy: 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

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:tak-nějak automaticky uplatňované nice & ionice
« Odpověď #4 kdy: 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

alfonz19

  • Aktivní člen
  • *
  • Příspěvků: 219
Re:tak-nějak automaticky uplatňované nice & ionice
« Odpověď #5 kdy: 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.

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:tak-nějak automaticky uplatňované nice & ionice
« Odpověď #6 kdy: 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ě)
« Poslední změna: 14 Února 2012, 21:03:51 od daysleeper »

 

Provoz zaštiťuje spolek OpenAlt.