Προς το περιεχόμενο

Μέτρηση average CPU load - Συζήτηση


parsifal

Προτεινόμενες αναρτήσεις

Είναι τόσο απλό που δε χρειάζεται καν σκριπτάκι. Για καταγραφή 25 ωρών π.χ., δίνουμε σε κονσόλα:

 

>logman create counter CPULoad -o CPULoad.csv -f csv -si 1 -rf 25:00:00 -c "\Processor(_Total)\% Processor Time"

 

Στον ίδιο κατάλογο, θα δημιουργηθεί το αρχείο CPULoad_000001.csv (ή με μεγαλύτερη αρίθμηση, αν υπάρχει ήδη από προηγούμενη καταγραφή) όπου καταγράφονται οι μετρήσεις ως comma seperated values. Από εκεί κι έπειτα, θα είναι εύκολο να σκαρώσω ένα μικρό προγραμματάκι σε C που να βγάζει το μέσο όρο. Ένα μικρό δείγμα του log:

 

"(PDH-CSV 4.0) (GTB Standard Time)(-120)","\\CORE2DUO\Processor(_Total)\% Processor Time"

"10/28/2007 13:32:53.703","99.999989409894383"

"10/28/2007 13:32:54.703","0.78125"

"10/28/2007 13:32:55.703","0.78125"

"10/28/2007 13:32:56.703","0"

"10/28/2007 13:32:57.703","0"

"10/28/2007 13:32:58.703","0"

"10/28/2007 13:32:59.703","0.78125"

"10/28/2007 13:33:00.703","1.5625"

"10/28/2007 13:33:01.703","0"

 

Με 35 χαρακτήρες ανά γραμμή, υπολογίζω ότι απαιτούνται περίπου 123KB/ώρα μέτρησης. Αν κάτι πάει στραβά, ο counter με το όνομα CPULoad μπορεί να σταματήσει χειροκίνητα με την εντολή:

 

>logman stop CPULoad

 

και να σβηστεί εντελώς ως οντότητα collection με:

 

>logman delete CPULoad

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 36
  • Δημ.
  • Τελ. απάντηση

Μετά από μέτρηση 25 ωρών που έγινε με την εντολή που έδωσα σε προηγούμενο post, πήρα ένα αρχείο CSV μεγέθους 3.1 ΜΒ. Αποφάσισα οι 2 πρώτες γραμμές του αρχείου να αγνοούνται (η πρώτη δεν είναι μέτρηση καν, ενώ η 2η παρουσιάζει περίεργο αριθμό δεκαδικών ψηφίων σε σχέση με όλες τις επόμενες και απλά μου την έσπασε!). Οπότε, ανοίξτε το δικό σας CSV με έναν text editor, σβήστε τις και ξανασώστε το αρχείο.

 

Πέρασα λοιπόν το αρχείο από ένα προγραμματάκι C (CPUAvg, ελέγxθηκε με updated Avira AntiVir). Ο πηγαίος κώδικας για όσους ενδιαφέρονται είναι ο παρακάτω:

 

 

>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
FILE *logfile;
char linebuffer[50], sample_as_string[10], *index1, *index2;
int VERBOSE_MODE = 0, num_samples = 0, num_quotes = 0;
float sample_as_float = 0, sum = 0, cpuavg = 0;

if(argc == 1) {
	printf("\nPROGRAM USAGE:\n    CPUAvg <Logfile> [-verbose]\n\n");
	return 1;
}

if(argc == 3 && !strcmp(argv[2], "-verbose")) VERBOSE_MODE = 1;

if(!(logfile = fopen(argv[1], "r"))) {
	printf("\nERROR: File %s not existant or could not be opened.\n\n", argv[1]);
	return 2;
}

while((fgets(linebuffer, 50, logfile))) {
	num_samples++;
	index1 = linebuffer;
	num_quotes = 0;

	while(num_quotes < 3) {
		if(index1[0] == '\"') num_quotes++;
		index1++;
	}

	index2 = sample_as_string;

	while(index1[0] != '\"') {
		index2[0] = index1[0];
		index1++;
		index2++;
	}

	index2[0] = '\0';
	sample_as_float = atof(sample_as_string);
	if(VERBOSE_MODE) printf("Sample %d: %f\n", num_samples, sample_as_float);
	sum += sample_as_float;
}

cpuavg = sum / num_samples;

printf("\nTotal CPU usage sum: %f\n\n", sum);
printf("Number of samples in logfile: %d\n\n", num_samples);
printf("Average CPU load estimation: %f\n\n", cpuavg);

fclose(logfile);
return 0;
}

 

 

Είναι στην ουσία ένας πρωτόγονος parser που σκάρωσα βιαστικά για να πάρουμε τις τιμές μεταξύ των 2 τελευταίων double quotes (") κάθε γραμμής του CSV και στο τέλος βγάζει το μέσο όρο. Τα δικά μου αποτελέσματα:

 

C:\Programming\Projects\CPUAvg\Release>CPUAvg.exe C:\Temp\CPULoad_000001.csv

 

Total CPU usage sum: 2357335.000000

 

Number of samples in logfile: 90003

 

Average CPU load estimation: 26.191738%

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι, γιατί όχι; Τα βήματα κωδικοποιημένα έχουν ως εξής:

 

 

1. Κατεβάζουμε το miniBench. Κλείνουμε όλα τα προγράμματα που μπορεί να καταναλώνουν επεξεργαστικούς πόρους, ανοίγουμε κονσόλα και τρέχουμε:

>[font="Fixedsys"]miniBench.exe Dhrystone Whetstone iterations=10[/font]

Καταγράφουμε και ποστάρουμε* το αποτέλεσμα, μαζί με info για τον επεξεργαστή μας αν θέλουμε (τύπος, χρονισμός). Δεν κλείνουμε την κονσόλα.

 

 

2. Δίνουμε:

>[font="Fixedsys"]logman create counter CPULoad -o C:\CPULoad.csv -f csv -si 1 -rf 25:00:00 -c "\Processor(_Total)\% Processor Time"[/font]

Θα αρχίσει αυτόματα καταγραφή που θα διαρκέσει 25ωρο (ή παραπάνω, αν θέλουμε να πειράξουμε την παράμετρο 25:00:00).

 

 

3. Όταν περάσουν οι 25 (ή όσες ορίσαμε) ώρες, ανοίγουμε το αρχείο CSV με έναν text editor, σβήνουμε τις 2 πρώτες γραμμές και το σώζουμε.

 

 

4. Τρέχουμε το πρόγραμμα CPUAvg που έφτιαξα γι' αυτόν το σκοπό. Παράδειγμα εκτέλεσης:

>[font="Fixedsys"]CPUAvg.exe C:\CPULoad_000001.csv[/font]

 

 

5. Ποστάρουμε** το αποτέλεσμα.

 

 

*Προαιρετικό...

**Επίσης...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάτι μάλλον σου πάει πολύ στραβά, μόλις το ξαναέτρεξα με τις ίδιες παραμέτρους και τελειώνει στον Intel μου σε 21 sec:

 

 

>[font="Fixedsys"]C:\Temp>miniBench.exe Dhrystone Whetstone iterations=10
Hello!  Starting miniBench benchmark version 1.0...

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 641
Dhrystone MIPS: 17758.3
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1484

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 594
Dhrystone MIPS: 19163.4
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1484

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 594
Dhrystone MIPS: 19163.4
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1500

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 593
Dhrystone MIPS: 19195.7
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1485

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 594
Dhrystone MIPS: 19163.4
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1485

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 593
Dhrystone MIPS: 19195.7
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1500

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 594
Dhrystone MIPS: 19163.4
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1484

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 594
Dhrystone MIPS: 19163.4
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1484

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 594
Dhrystone MIPS: 19163.4
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1500

Executing Dhrystone( 20000000 )...
constructor called for 20000000 iterations.
Elapsed time (ms) 594
Dhrystone MIPS: 19163.4
destructor called

Executing Whetstone( 50000 )...
Elapsed time (ms) 1484

=== miniBench benchmark version 1.0===
        *** SUMMARY  ***
=====================================
Dhrystone test  4047.22
Whetstone test  2021.56
=====================================
=====================================
Total elapsed time: 20.94 s.
CLOCKS_PER_SEC: 1000

miniBench benchmark completed.

C:\Temp>[/font]

 

Κάνε copy/paste την εντολή για να είσαι σίγουρος ότι δεν κάνεις λάθος...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1. Κατεβάζουμε το miniBench. Κλείνουμε όλα τα προγράμματα που μπορεί να καταναλώνουν επεξεργαστικούς πόρους, ανοίγουμε κονσόλα και τρέχουμε:

>[font="Fixedsys"]miniBench.exe Dhrystone Whetstone iterations=10[/font]

Καταγράφουμε και ποστάρουμε* το αποτέλεσμα, μαζί με info για τον επεξεργαστή μας αν θέλουμε (τύπος, χρονισμός). Δεν κλείνουμε την κονσόλα.

 

ορίστε το πρώτο βήμα το κατάφερα αλλα με λίγο χειμαδιό το μηχάνημα καθώς δοκίμαζα μια mnhmoula 512Mb 667Mhz Cl5 5-5-15 να δω μέχρι που πάει και έμεινα πραγματικά έκπληκτος για τα 20 ευρώ που είχα δώσει :P

 

http://valid.x86-secret.com/show_oc.php?id=261490

6671000qy6.jpg

58811816dm6.jpg

 

το average load θα στο βγάλω μόλις τελειώσω με τα tweaks στο Bios :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με γεια το board! Στήσε το πρώτα όπως θες και μετά τρέχεις τα benches και την καταγραφή, δε βιαζόμαστε. Ούτως ή άλλως, πρέπει να έχεις uptime τουλάχιστον 25 (ή όσες παραπάνω επιλέξεις) ώρες για να ολοκληρωθεί...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ευχαριστώ :lol: το bench το έτρεξα τώρα γιατί και να το σκίσω στα tweaks άντε να βγάλω πολύ λίγο παραπάνω την σταθερότητα κοιτάω πιο πολύ τώρα και μετά τα ξεζουμίσματα πιάστηκα και με μια μνημούλα που πήρα και κάνω κάτι δοκιμες αλλα και το average load το σαββατοκύριακο πιστεύω θα στο έχω ;)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.


  • Δημιουργία νέου...