CPU Auslastung ?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

CPU Auslastung ?

Beitrag von LeoManiac » 22.10.2003 14:45:01

Hi,

hab noch ne weitere Frage...

wie kann ich die CPU - Auslastung in C/C++ ermitteln ?

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 24.10.2003 07:28:37

Ich habe es zwar nicht nicht selbst implementiert, aber mir würde auf die Schnelle das Verzeichnis /proc einfallen. Dort kann man sämtliche Systeminformationen auslesen. Die Systemlast ist in /proc/loadavg zu finden.

Falls es nicht stimmt kannst du ja mal in den Quellcode des Programms xload schauen, wie es dort gemacht wird.

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 24.10.2003 18:44:37

hmm das auslesen könnte ein Problem werden man müste evl. die ausgabe von cat loadavg umlenken denn vi loadavg zeigt eine leere datei an

allerdings kann ich mit der ausgabe noch recht wenig anfangen

Code: Alles auswählen

0.00 0.00 0.00 1/29 2787
lieg ich mit current/avg/max/???/uptime richtig ?

gut ok die uptime intersiert mich nicht wirklich die kann ich ja mit der sysinfo.h wenn nötig auslesen

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 24.10.2003 19:47:02

LeoManiac hat geschrieben:hmm das auslesen könnte ein Problem werden man müste evl. die ausgabe von cat loadavg umlenken denn vi loadavg zeigt eine leere datei an
Ich denke du wolltest in C/C++ programmieren?


Die Dateien unter /proc sind keine Dateien herkömmlichen Sinn, sondern das /proc System ist ein virtuelles Filesystem. Siehe das Debian Handbuch dazu:
Debian GNU/Linux Anwenderhandbuch hat geschrieben:..
/proc ist nicht tatsächlich auf einer Festplattenpartition abgelegt, sondern wird vom Kernel ständig aktualisiert und in den Verzeichnisbaum eingeblendet.
Du kannst aber lesend auf die Dateien zugreifen. Ein cat /proc/loadavg zeigt dir die entsprechenden Informationen. Du könntest also unter C die Datei lesend öffnen und den Inhalt einlesen.

Zur Art der Darstellung habe ich folgendes gefunden: :google:
The load average equals the average of the number of tasks running or in a runnable state at any instant, as opposed to zombie tasks, tasks waiting on an operation uch as I/O, suspended tasks, etc. The three different numbers represent that average as measured over the lastminute, the last five minutes, and the last fifteen minutes, respectively.

Optimally, then, you want to have the load average stay below the number of CPUs in your machine. So, on a dual box, it's best if the load average is below 2.
When the load average goes over the number of CPUs on the system, this means that there are tasks left sitting and waiting for CPU time. This may or may not be a problem depending on what the system is doing, how good the kernel scheduler is, and other things. For example, if you're running something like distributed.net or SETI@home, your load average will never go below the number of processes you've got running for those projects; this isn't a problem because the priority for those tasks is low and there's no deadline for finishing those tasks.

So there's no magic rule about load averages. You could have two single-CPU boxes, and the one with a 1.5 load average could perform much worse than the one with a 4 load average. I've heard of boxes with load averages in the three-digit range (before the decimal) that are still usable.

Incidentally, the same information that's displayed in /proc/loadavg is also displayed with the "uptime" command; the output from that command is pretty standard, so your code will be more portable if you parse uptime's output instead of parsing /proc/loadavg.
Viel Spass beim Programmieren :) .

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 24.10.2003 20:34:40

eagle hat geschrieben:Die Dateien unter /proc sind keine Dateien herkömmlichen Sinn, sondern das /proc System ist ein virtuelles Filesystem. Siehe das Debian Handbuch dazu:
Debian GNU/Linux Anwenderhandbuch hat geschrieben:..
/proc ist nicht tatsächlich auf einer Festplattenpartition abgelegt, sondern wird vom Kernel ständig aktualisiert und in den Verzeichnisbaum eingeblendet.
Du kannst aber lesend auf die Dateien zugreifen. Ein cat /proc/loadavg zeigt dir die entsprechenden Informationen. Du könntest also unter C die Datei lesend öffnen und den Inhalt einlesen.
Achso das war mir neu
naja ich beschäftige mich grad mal seit einen Monat mit Debian vorher SUSE (Schulbedingt)

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 24.10.2003 22:06:32

LeoManiac hat geschrieben: naja ich beschäftige mich grad mal seit einen Monat mit Debian vorher SUSE (Schulbedingt)
Ist aber eigentlich nicht Debianspezifisch. Und dafür das man Suse benutzt (hat) braucht man sich auch nicht immer zu rechtfertigen :lol:

cu

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 26.10.2003 02:55:41

[quote="tylerD"]Und dafür das man Suse benutzt (hat) braucht man sich auch nicht immer zu rechtfertigen :lol: /quote]
Insbesondere, wenn man mittlerweile auf den richtigen Weg gefinden hat und Debian benutzt ;-)

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Antworten