Avatar billede mustafa_temiz Nybegynder
21. januar 2005 - 07:37 Der er 7 kommentarer og
2 løsninger

CPU idle i % via Java

Jeg har et spørgsmål som jeg ønsker svar på indenfor nogledage, ellers er det forsent.

Uden at jeg ønsker kommentarer om at Java er platformsuafhængig, ønsker jeg at få fat på hvor stor procentdel af cpuen der er ledig.

Ved dette er platformsafhængig. Jeg ønsker at vide hvordan dette kan gøres i Windows (haster) og Linux.

Kan forestille mig at jeg skal køre et ekstern program eller benytte JNI til at kalde systemfiler. Vil gerne helst vide hvordan jeg kan gøre det med en lille program Java kalder (inklusiv hvordan denne lille program skrives).

Svar konkret med programkode som jeg umiddelbart kan køre og få til at virke. Jeg er slet ikke Linux haj og skal til denne del få påpeget præcis hvordan evt script skal kodes/kompileres/køres.
Avatar billede mikkelbm Nybegynder
21. januar 2005 - 08:11 #1
Avatar billede mustafa_temiz Nybegynder
21. januar 2005 - 10:24 #2
Kan seat det er noget i den retning jeg skal bruge. Der er bare to mangler ved artiklen for mit brug.

Med hvilken kompiler skal jeg kompilere C filen under Windows så jeg får den DLL? Hvordan vil C koden være under Linux når jeg skal få fat i % samlet CPU brugt (eller ledig).

Har ikke helt gennemskuet C koden, men umiddelbart giver programmet kun % belastning en enkelt process medfører - jeg skal bruge belastning på hele CPUen. Kan forestille mig at det sikkert er næsten ligeså "nem", men skal vide hvor jeg kan finde dokumentation for systemkald i Windows. Tager lige og søger på det via Google om lidt, men imellemtiden vil jeg meget gerne få svar på to ting:
1) Hvis jeg skal gøre samme ting (få % brugt CPU) under Linux, hvordan ser C koden ud og hvordan kompiler jeg denne?
2) Hvilke C kompiler er nem at gå til via kommandopromten og hvordan skal jeg kalde denne for at få en DLL JNI kan benytte?
Avatar billede mikkelbm Nybegynder
21. januar 2005 - 11:16 #3
Jeg må indrømme at jeg ikke har gjort særlig meget i C/C++, men jeg ved at Borland har en compiler til det. De få gange jeg har haft brug for det, har jeg anvendt Visual Studio til det.
Og om koden er den samme til Linux skal jeg ikke kunne svare på. Jeg fandt linket og syntes det var interessant, men mere er jeg ikke inde i det - desværre.
Avatar billede arne_v Ekspert
21. januar 2005 - 21:24 #4
http://www.eksperten.dk/artikler/252 har noget om JNI og hvordan du builder

jeg ville nok hente mingw32 som C/C++ compiler

linux og windows koden for den slags er total forskellig

docs er her http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocesstimes.asp
Avatar billede mustafa_temiz Nybegynder
22. januar 2005 - 14:29 #5
Har hentet Dev-C++ som jeg har brugt tidligere og fundet noget C kode der desværre benytter NtQ??.dll som Microsoft opfordrer folk til ikke at bruge.

Jeg har ikke rigtig fået henvisning til Linux c/c++ kode der kan give mig CPU idle i %, men i kan få 50 hver alligevel hvis i poster et svar.
Avatar billede mustafa_temiz Nybegynder
22. januar 2005 - 14:29 #6
Jeg mente 100 point hver ;-)
Avatar billede mikkelbm Nybegynder
22. januar 2005 - 15:02 #7
Et svar fra mig :)
Avatar billede arne_v Ekspert
22. januar 2005 - 15:04 #8
Det er ret nemt at få idle time på Linux.

Du åbner "tekst filen" /proc/uptime og læser en linie med 2 floating point tal.

Det sidste tal er idle time i sekunder siden boot.

[og det er altså ikke en rigtig tekst fil]
Avatar billede arne_v Ekspert
22. januar 2005 - 15:05 #9
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester