HotPlug CPU @ Linux
Bár a témában már többször megnyilvánultunk, a Linux alatti processzor kezelés — számomra — legegyszerűbb módját szeretném bemutatni.
Először is érdemes tisztázni, Linux alatt a “HotPlug CPU” képesség “csupán” a futatott kerneltől függ.
Q: How to enable my kernel to support CPU hotplug? A: When doing make defconfig, Enable CPU hotplug support "Processor type and Features" -> Support for Hotpluggable CPUs Make sure that you have CONFIG_HOTPLUG, and CONFIG_SMP turned on as well. You would need to enable CONFIG_HOTPLUG_CPU for SMP suspend/resume support as well. Q: What architectures support CPU hotplug? A: As of 2.6.14, the following architectures support CPU hotplug. i386 (Intel), ppc, ppc64, parisc, s390, ia64 and x86_64 (további információ: cpu-hotplug.txt, kernel dokumentáció)
Azaz az általánosan használt architektúrák bármelyikén használható, amennyiben legalább 2.6.14-es kernel fut a gépen és a kernel megfelelően van fordítva. A tapasztalatom szerint a hivatalos disztribúciók figyelnek arra, hogy a kernel jól legyen fordítva.
A processzorok mindegyikének — az első, azaz nulladik sorszámú kivételével — mindegyikének van egy online tulajdonsága, mely a processzor használatát jelzi.
A processzorokat a /sys/devices/system/cpu könyvtárban lehet fellelni, minden processzorhoz egy alkönyvtár tartozik. Az én egyik gépem így néz ki:
root@deb:/sys/devices/system/cpu# ls -l összesen 0 drwxr-xr-x 4 root root 0 máj 18 09.34 cpu0 drwxr-xr-x 4 root root 0 máj 18 09.34 cpu1 drwxr-xr-x 4 root root 0 máj 18 15.15 cpu2 drwxr-xr-x 2 root root 0 máj 18 09.34 cpu3 drwxr-xr-x 2 root root 0 máj 18 09.34 cpufreq drwxr-xr-x 2 root root 0 máj 18 09.34 cpuidle -r--r--r-- 1 root root 4096 máj 18 15.28 kernel_max -r--r--r-- 1 root root 4096 máj 18 15.28 offline -r--r--r-- 1 root root 4096 máj 18 15.28 online drwxr-xr-x 2 root root 0 máj 18 09.34 perf_events -r--r--r-- 1 root root 4096 máj 18 15.28 possible -r--r--r-- 1 root root 4096 máj 18 15.28 present
A processzorokat a cpu<sorszám> könyvtárakban lévő online “fájl” értékének állításával lehet engedélyezni (1) és tiltani (0). Az első processzor — a cpu0-t — természetesen érinthetetlen.
Esettanulmány, saját tapasztalat
A feni gépet (Debian, mert az a jó :]) egy processzorosként hoztam létre és természetesen engedélyeztem a konfigurációban a “Memory/CPU Hotplug” opció kettősét (mert a memória sosem lehet elég :]). A gép spam-szűrőnek készült és hamar rá kellett jönnöm, hogy bizony alul méreteztem (OFF: a hozzánk beérkező levelek 85%-a spam!!!) a hardvert. A fenti engedélyezett opciónak hála gond nélkül lehetett memóriát és processzort hozzáadni a géphez. Csak épp a processzort bár észreveszi, nem kezdi el magától használni a kernel. A használatba vételhez léteznek letölthető script-ek (volt róla szó a legutóbbi vmug-on), de lehet kézzel is csinálni, valahogy így:
- CPU meglétének ellenőrzése: ls -l /sys/devices/system/cpu
Az új processzor cpu<sorszám> formában könyvtárként látszódig. - az új CPU állapotának ellenőrzése: cat /sys/devices/system/cpu/cpu1/online
0: kikapcsolt, 1: bekapcsolt állapotban van, valószínűleg 0 lesz az eredmény - új CPU bekapcsolása echo 1 > /sys/devices/system/cpu/cpu1/online
a 2. ponttal lehet ellenőrizni a bekapcsolt voltát
Kikapcsolni hasonlóan lehet egy processzort: echo 0 > /sys/devices/system/cpu/cpu1/online. Ilyenkor természetesen a gép virtuális konfigurációjából nem törlődik a processzor, ott elvenni CPU-t továbbra sincs lehetőség, de a virtuális gép “elfelejti” azt használni.




Bár nem vagyok Linux (fel)használó, nagyon értékesnek tartom ezeket a “szösszeneteket” (megoldásokak), amivel számomra is még érdekesebbé teszitek a Linux rendszert…