A nice és renice parancsok segítségével finomhangolhatod, hogyan kezelje a kernel a folyamataidat a prioritások beállításával. Olvassa el ezt az oktatóanyagot, hogy megtanulja, hogyan használhatja őket Linux és Unix-szerű operációs rendszerekben, például a macOS-ben.
Tartalomjegyzék
Ez mind folyamat kérdése
A Linux vagy Unix-szerű számítógépen belül számos folyamat fog futni, még mielőtt elindítaná a használni kívánt alkalmazást. E folyamatok többsége magának a Linuxnak vagy a grafikus asztali környezet támogató folyamatainak létfontosságú eleme. Sok minden történik a színfalak mögött. Természetesen csak annyi rendszererőforrás és CPU-idő áll rendelkezésre. A Linux kernel az összes ilyen folyamat vezérlője.
A kernelnek kell eldöntenie, hogy mely folyamatok kapnak most figyelmet és erőforrásokat, és melyek várnak. A kernel folyamatosan zsonglőrködik a folyamatokkal és a prioritásokkal annak érdekében, hogy a számítógép a lehető legzökkenőmentesebben fusson, és minden folyamat megkapja a megfelelő részesedést. Egyes eljárások kedvezményes elbánásban részesülnek. Annyira fontosak a számítógép általános működése szempontjából, hogy az ő igényeiknek kell az első helyen állniuk, mondjuk a böngészőjénél.
A szép érték
Az egyik kritérium annak meghatározására, hogy a kernel hogyan kezel egy folyamatot, a szép érték. Minden folyamatnak van szép értéke. A szép érték egy -19 és 20 közötti egész szám. Minden szabványos folyamat nulla szép értékkel indul.
Itt az a trükk, hogy minél magasabb a szép érték, annál szebb a folyamata a többi folyamathoz képest. Más szóval, a magas szép érték azt jelzi a kernelnek, hogy ez a folyamat szívesen vár. A negatív szám ellentéte annak, hogy szép. Minél nagyobb a negatív szép érték, annál önzőbb a folyamat. Megpróbál annyi CPU-időt begyűjteni, amennyit csak tud, figyelmen kívül hagyva a többi folyamatot.
A nice paranccsal beállíthatjuk a szép értéket, ha a folyamat elindul és a renice segítségével állíthatjuk be a szép értéket egy futó folyamatról.
A szép parancs
A nice paranccsal beállíthatjuk a szép értékét egy program indításakor. Ez lehetővé teszi, hogy növeljük vagy csökkentsük a rendszermag által a folyamatnak adott prioritást a többi folyamathoz képest.
Tegyük fel, hogy egy programozó írt egy Ackermann nevű programot. Ez kiszámítja Ackerman függvények. CPU- és memóriaigényes. A programozó a következő paranccsal indíthatja el a programot:
./ackermann
A top paranccsal megtekinthetjük a futó programot.
top
Az ackermann program részleteit fent láthatjuk. A szép érték az „NI” oszlopban lévő szám. Nullára állt, ahogy vártuk.
Indítsuk újra, és ezúttal tegyük kevésbé igényessé. A 15-ös szép értéket az ackermann programhoz a következőképpen állítjuk be. Írja be a nice, egy szóközt, -15-öt, egy másik szóközt, majd az elindítani kívánt program nevét. Példánkban a fiktív programozónk a ./ackermann fájlt használja.
nice -15 ./ackermann
Ügyeljen arra, hogy a „-15” nem negatív tizenöt. Ez pozitív tizenöt. A „-” szükséges annak jelzésére, hogy egy paramétert adunk át. Negatív szám jelzéséhez két „-” karaktert kell begépelnie.
Ha most újra felülről indulunk, láthatjuk a változást Ackermann viselkedésében.
top
Szép 15-ös értékével az Ackermann nem fogyasztja a legtöbb CPU-időt. A GNOME és a Rhythmbox is többet használ. Egy kicsit megfékeztük Ackermannt.
Most fordítsuk meg, és adjunk ackermannnak negatív szép értéket. Vegye figyelembe a két „-” karakter használatát. Ahhoz, hogy egy alkalmazást önzőbbé és kevésbé kedvessé tegye, sudo-t kell használnia. Bárki szebbé teheti az alkalmazását, de önzőbbé csak a szuperfelhasználók.
sudo nice --10 ./ackermann
Fussunk a tetejére, és nézzük meg, milyen különbséget tett ez.
top
Ackermann ezúttal szép -10-es értéket mutat. Újra a csúcsra került, és több CPU-időt fogyaszt, mint korábban.
A renice parancsnokság
A renice parancs segítségével beállíthatjuk egy futó folyamat szép értékét. Nem kell leállítanunk, és újra kell indítanunk. Menet közben beállíthatunk új értéket.
A renice parancs a folyamat folyamatazonosítóját vagy PID-jét veszi fel parancssori paraméterként. A folyamatazonosítót kivonhatjuk a felül található „PID” oszlopból, vagy a ps és grep segítségével kereshetjük meg nekünk, az alábbiak szerint. Nyilvánvalóan dave helyett a felhasználó nevét, ackermann helyett pedig annak a folyamatnak a nevét írja be, amelyik érdekel.
ps -eu dave | grep ackermann
Most, hogy megvan a PID, használhatjuk a renicével. Visszaállítjuk Ackermannt egy szebb viselkedésre, szép ötös értékkel. A futó folyamat szép értékének megváltoztatásához sudo-t kell használnia. Vegye figyelembe, hogy az 5-ös paraméteren nincs „-”. A pozitív számokhoz nem kell egy, a negatív számokhoz pedig csak egy kell, nem kettő.
sudo renice -n 5 2339
Megerősítést kapunk, hogy Renice megváltoztatta a szép értéket. Megmutatja nekünk a régi és az új értéket.
A kernel általában nagyszerű munkát végez a prioritások kezelésében, valamint a CPU-idő és a rendszererőforrások kiosztásában. De ha hosszú, CPU-igényes feladatot kell futtatnia, és nem érdekli, hogy mikor fejeződik be, akkor a számítógépe egy kicsit gördülékenyebbé válik, ha magasabb értéket állít be a feladathoz. Így mindenkinek szebb lesz.