cpu idle + c

Fórumok

Hello

Olyan kérdésem lenne, hogy hogyan tudom lekérdezni C -ben linux alatt a cpu kihasználtságát, meg a többi dolgot amit a top kiir. Nem kellen minden de ami fontos lenne a cpu kihasználtság meg az idle. Amit gondolom ugy kapnék meg, hogy 100 -bol kivonnám a kihasználtságot de ha van rá függvény annak is örülnék.
Nézzegettem már libc referenciat de nem tudom, kideriteni, hogy nekem mely fuggvenyek kellenek.

Előre is köszönöm.

Hozzászólások

Hello!

/proc/stat-bol csinalja szerintem top. man proc ir statrol bovebben.

Sziasztok!

Egy AMD 2500+ (barton) procit nyúzok már évek óta egy Nf2-es alaplappal. A gondom az vele (már régóta), hogy nagyon melegszik a CPU, most pl. 74 ˚C-os
Windows alatt S2kCtl-t használtam, ami a cpu Idle-t haltból cpu disconnectre rakta.

Röviden:
"A WinNT-k (Win2k, XP) - és Linux - esetében van egy kernel-programszál, aminek Idle a neve. Ő a legalacsonyabb prioritású kernelközeli szál, azaz ha más program nem "viszi el" a cpu-időt, akkor ő kapja meg. Ő pedig berakja a cput egy "nop" ciklusba, ami annyit tesz, hogy a proci, bár egy "nem túl" számításigényes műveletet végez, azért csak tekeri magát.
A CpuIdle, CpuCool szerű hűtők ezt az idle szálat veszik át, és "halt", vagy "stop grant"-állapotba hozzák a cpu-t. Ez jó is, csak nem eléggé hatékony, mert amint valamit csinál a humanoid létforma a géppel max fújhatjuk a cpu-t, ugyanis a proci egy része aktív marad, és továbbra is termeli a hőt. A reakcióképességük pocsék, tehát részleges terhelésnél szinte használhatatlanok.
A cpu-disconnect elven működő hűtők (C2NGO, S2kCtl) pedig annyit csinálnak, hogy az idle-idő teljes időtartamára "kikapcsolják" a CPU-t, majd ha kell (akár az opredszer, akár az alkalmazások igényelet cpu használat idejére) akkor újra be. Minthogy ezt másodpercenként akár többezerszer is megtehetik, ezért csak a tényleges terheléskor melegszik a proci, az üresjárat nem fűti."

Tehát Linuxon valahogy meg lehet változatni a idle sleep state-t cpu disconnect-re?

1) Nem igazan vagy ontopic. Attol, mert matchel a cimhez, meg nem leszel az.
2) A Linux nem Windows. Itt kisse mashogy mennek a dolgok.
3) Bar csak felig ertem mit akarsz, az mindenkepp vilagos, hogy ez kernelkozeli dolog. Ajanlom a Linux kernel forrasat mint olvasmanyt.
4) Aztan szerintem egy kis assembly nyelv tanulas is sokat tud dobni a dolgon. (Utasitasok atfordulasa C-rol, a processzor az asm utasitasokat hogy utemezi es dolgozza fel, az user interakcion kivul meg mi dobhatja fel a CPU statusat onra, ilyenek)
5) Vegul pedig mar tobbet fogsz tudni, mint a kernelresz eredeti fejlesztoje, akar ki is javithatnad ezt a viselkedest a kernelbe. Bekuldhetned patchkent, es mindenki orulne.

Amugy szerintem megy tonkre a coolered, vagy nagyon koszos mar a cooler alatti passziv borda. Erdemes a CPU coolert par evente cserelni, illetoleg evente-felevente a cpu cooler alatti bordakat kifujni suritett levegovel, ha ilyen gondok vannak.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Házhűtő kb. 3 éve bemondta az unalmast, lekaptam a ház oldalát azóta így megy. Megfelelő programmal átlag 54-58 fokos hőmérsékleten. Egyébként ez a ~70 fok még nem vészes, 85 foknál füstöl el. :)

Szerk.:

Végre megtaláltam, FVCool a progi neve. Egy 2008. júniusi orosz levelezést kaptam el, amit google translate-el lefordítottam, és ott ajánlották az fvcoolt.

Felraktam forrásból, majd fvcool -e -v -i és 68-74 fokról lement szépen 54-58 fokra.
Readmeben meg le van írva, hogy ha progi nélkül szeretném használni, akkor meg kell változtatnom a kernel kódot amihez 00READMEkt133.txt-ben találok leírást.