CPU-gazdálkodás?

Fórumok

Kedves HUP-osok!

Van egy 8 core-os masinánk, ami jó gyors, de néha zavaró, hogy a processzek azonos core-ra kerülnek és belassítják egymást. Azt már olvasta, hogy CPU-affinity segítségével meg tudom mondani egy-egy processznek, hogy mely CPU-khoz vonzódjon, de lehet-e olyasmit beállítani, hogy mondjuk csak 2 adott core-on futhatnak a rendszerprogramok (bőven elég nekik) és a többi 6 core csak a felhasználók nagy számításigényű processzeit szolgálják ki.

Elsősorban Linuxos megoldások érdekelnek.

Előre is kösz!

Hozzászólások

Kösz!

Egyes processzbeállításokra ez jó, de hogy mondom meg, hogy a rendszer cuccai (mindenféle démonok, fájl-adatbázis indexelők, ...) csak a 0-s és 1-es procikat használhassák? Egyesével nehéz végigzongorázni őket. Azt reméltem, van erre központosított megoldás.

Meg lehet hackelni az init scripteket, hogy boot elejen beallitsa initre a megfelelo affinityt, onnantol az osszes child (= a rendszer cuccok) azt fogja orokolni. Loginnal meg be lehet allitani a maskot az osszes tobbi processre, igy ami shellbol indul, az mar a tobbi procin fog futni.

Elkepzelheto, hogy ez megoldhato nagy ganyolas nelkul, initscriptekkel es hasonlokkal, de lehet, hogy picit melyebbre kell nyulni (bar szerintem valoszinubb, hogy megoldhato anelkul).

Mondjuk nem vagyok benne 100% biztos, hogy ez ilyen formaban mukodik, de kiindulasi pontnak jo lehet talan az elkepzeles. Mindenesetre erdekes otlet, ugyhogy alkalmasint majd elszorakozom vele en is, koszi a tippet! :D

Ajaj! Régen hegesztettem már rendszer szkripteket (amikor még nem voltak grafikus telepítők és floppykról ment a Linux telepítés), nem vagyok képzett informatikus és időm sincs sok, hogy doksikat olvassak.

El lehet szúrni a rendszert, ha belebénázok az init scriptekbe effél schedtool-ozással?

Elvileg nem, de én nem tennék olyat, hogy tömegesen írjak beléjük emiatt, mert rendszerfrissítéskor, amikor új initscriptek jönnek, mindegyikben lehet kézzel újra átvezetni ezeket (ha az adott disztribúcióban nincs teljesen megoldva a változáskezelés).

Viszont úgy vélem, talán ez lehet a te elgondolásodra a gyógyír: isolcpus kernelparaméter.
"[KNL,SMP] Isolate CPUs from the general scheduler.
Format:
<cpu number>,...,<cpu number>
or
<cpu number>-<cpu number>
(must be a positive range in ascending order)
or a mixture
<cpu number>,...,<cpu number>-<cpu number>

This option can be used to specify one or more CPUs to isolate from the general SMP balancing and scheduling algorithms. You can move a process onto or off an "isolated" CPU via the CPU affinity syscalls or cpuset. begins at 0 and the maximum value is "number of CPUs in system - 1".

This option is the preferred way to isolate CPUs. The alternative -- manually setting the CPU mask of all tasks in the system -- can cause problems and suboptimal load balancer performance."

Az itt említett cpusettet használtam néhány éve, nem volt vele gond.

Biztos, hogy azok egymast lassitjak?
A napokban toltam bele egy csomo adatot egy scriptbol DB-be. A script kb. 10%-ot fogott le az egyik core-bol, a postgres meg 60-at (nyilvan az I/O fogta vissza). Nem neztem, de nem csodalkoztam volna, ha ugyanarra a core-ra osztja be, mert ha a lemezre var, akkor gyorsabb ugysem lenne, viszont a tobbi core orajelet tarthatja alacsonyan (a hutes es fogyasztas miatt).
Sima bubuntu i7-es procival, semmi extra nincs benne. Bekapcsolt HT mellett meg arra is figyel, hogy melyik core-ok utik egymast.

--
To celebrate the Beatles' arrival on iTunes in 2010, I'm listening to their MP3s I downloaded from Napster in 2001.