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.
- 3366 megtekintés
Hozzászólások
strace top
- A hozzászóláshoz be kell jelentkezni
Hat nezzegetem de eggyenlore ez meg nekem nem tiszta, hogy hogyan is kellene ebbol kivennem, hogy milyen fuggveny vagy modszerrrel lehet lekerdezni a cpu idle -t.
- A hozzászóláshoz be kell jelentkezni
egyelőre
- A hozzászóláshoz be kell jelentkezni
Hello!
/proc/stat-bol csinalja szerintem top. man proc ir statrol bovebben.
- A hozzászóláshoz be kell jelentkezni
hat az biztos, hogy a /proc/stat ba benne van az idle time de nem lenne lassu ha allandoan egy filet olvasgatnek ? Nem lehetne valahogyan valamilyen beepitet fuggvenybol kinyerni ezt az adatot?
Nem szeretnek telhetetlennek tunni, de megis csak elegansabb lenne ugy megoldani.
- A hozzászóláshoz be kell jelentkezni
Egyrészt az a file nem a vinyón van, hát miért lenne lassú?
Másrészt, a top sem realtime mutatja a dolgokat, hanem frissít (kb másodpercenként).
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
cpu 3665 0 39197 703328 2239 0 7164
cpu0 3665 0 39197 703328 2239 0 7164
A /proc/stat bol kiolvasom ezeket a sorokat de ebbol hogyan kapom meg, hogy mennyit pihen a proci? Annyit mar sikerult kideriteni, hogy a 4. oszlop lesz az ami nekem kell. De ebbol, hogyan jonn ki mondjuk 99%???
- A hozzászóláshoz be kell jelentkezni
Szervusz!
http://sourceforge.net/projects/unixtop
Nézd meg itt a sourcebol, hogy hogy csinálják.
Nem hiszem, hogy ez a rész sebesség kritikus lenne.
- A hozzászóláshoz be kell jelentkezni
Nem néztem meg komolyabban, de ezekkel a kulcsszavakkal: "get system load average" és persze C nyelvre szűkítve a keresést elég bíztató találatok jöttek ki.
Pl (ez már konkrét forrás):
http://www.koders.com/c/fidA178217F4E61872585E25B716DF784D301389E41.asp…
De lesz jó sok találat arrafelé.
kl223
- A hozzászóláshoz be kell jelentkezni
/proc/stat-bol valami ilyesmi lesz (ez egy perl script atirata) : http://rafb.net/paste/results/b3o50G89.html
- A hozzászóláshoz be kell jelentkezni
Ez a megoldas egesz jonak tunik. Mert ugye ugy mukodik, hogy lekeri a cpu_stat -ot majs var sleep(2) es utana megint lekeri a cpu_stat -ot es a ketto kulonbsege lesz a kivant eredmeny.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Mikor új volt a hűtő, akkor is ennyire melegedett. CPU idle átállításával kb -10 ˚C-ot lehet nyerni.
Egyébként találtam ilyen progit, hogy athcool (ami AMD Athlon/Duron processzorokhoz jó), most már olyan 68-72 ˚C-os átlagban.
- A hozzászóláshoz be kell jelentkezni
Nekem egy 2400-am volt pár évig, az nagyobb órajelen ment, de nem volt melegebb 40 foknál. Nálad valami nagyon nem oké hűtésileg.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ezt mar nezted?:
http://www.daniel.nofftz.net/linux/Athlon-Powersaving-HOWTO.html
- A hozzászóláshoz be kell jelentkezni
Igen, köszi. Athcool és a coolrun ugyanazt a setpci parancsot hajtja végre.
Ezért kipróbáltam az FVCoolt amivel be lehet vinni ugyanezt az idle-loop-ba mostmár idle hőmérséklet 50 és 54 fok között van.
- A hozzászóláshoz be kell jelentkezni