Hallo,
ich will den Strom, den mein Rechner aufnimmt messen.
Dabei will ich nicht nur Ruhezustand und Volllast, sondern auch die Stufen dazwischen messen.
Hat jemand eine Idee wie ich das mit Python umsetze?
Ich dachte daran md5 Checksummen berechnen zu lassen, dabei hab ich aber wieder das Problem, dass die CPU 100% läuft.
Des weiteren ist das eine Multicore CPU ... das Script müsste alle CPUs gleichmäßig belasten.
Für Ideen oder Schnippsel wäre ich dankbar.
Con
CPU load erzeugen
Vllt. sowas hier:
und das in mehreren Prozessen starten.
Code: Alles auswählen
while True:
time.sleep(0.01)
1+1
-
- User
- Beiträge: 41
- Registriert: Samstag 20. Juni 2009, 18:12
http://majorgeeks.com/Toast_d867.html
Mit Toast bringst du jede CPU auf 100%. Pro CPU/Kern einmal öffnen.
Mit Toast bringst du jede CPU auf 100%. Pro CPU/Kern einmal öffnen.
Grüße[b]
start_with_python[/b]
Lust auf [url=https://www.dropbox.com/referrals/NTE5OTQ5Mjk5]DropBox[/url]? (RefLink)
start_with_python[/b]
Lust auf [url=https://www.dropbox.com/referrals/NTE5OTQ5Mjk5]DropBox[/url]? (RefLink)
Also, das Problem ist nicht die CPU auf 100% zu bekommen. Dazu hab ich was schickes auf irgend eine Seite gefunden.
Damit werden alle CPUs in einem System schön auf 100% gebracht. BurnCPU wird übrigens nicht mehr weiterentwickelt und belastet nur eine CPU. Man könnte höchstens einen zweiten Prozess starte, hab ich aber nicht ausprobiert.
Mein Problem ist, ich möchte z.B eine CPU auf 40%, 60% und 80% bringen.
@SchneiderWeisse
Leider belastet das, meine CPU überhaupt nicht .... da müsste ich wahrscheinlich 100 Prozesse aufmachen.
Hat noch jemand Ideen?
Code: Alles auswählen
dd if=/dev/zero bs=100M | gzip | gzip -d | gzip | gzip -d | gzip | gzip -d > /dev/null
Mein Problem ist, ich möchte z.B eine CPU auf 40%, 60% und 80% bringen.
@SchneiderWeisse
Leider belastet das, meine CPU überhaupt nicht .... da müsste ich wahrscheinlich 100 Prozesse aufmachen.
Hat noch jemand Ideen?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wozu sollte das gut sein???conloos hat geschrieben:Mein Problem ist, ich möchte z.B eine CPU auf 40%, 60% und 80% bringen.
Spontane Idee: Aus Zufallsdaten einen Hash berechnen lassen (MD5 oder SHA). Erst lässt man es mit time.sleep(0) laufen, um den Maximum Durchsatz zu erhalten. Danach regelt man den sleep Wert solange, um auf den Gewünschten Prozentsatz kommt.
Dennoch bleibt das Problem, das man erstmal nur ein CPU Core auslasten kann.
-
- User
- Beiträge: 79
- Registriert: Montag 12. Oktober 2009, 11:50
Steht doch ganz oben, Leistungsaufnahme messen.jens hat geschrieben:Wozu sollte das gut sein???conloos hat geschrieben:Mein Problem ist, ich möchte z.B eine CPU auf 40%, 60% und 80% bringen.
http://cpulimit.sourceforge.net/ kann das.
Die Leistungsaufnahme der Strufen zwischen Nichtstun und voller Auslastung kannst du doch einfach berechnen. Wenn der Prozessor nicht zwischen verschiedenen Taktungen springt, dann dürfte die Aufnahme wohl näherungsweise linear sein.
Das Leben ist wie ein Tennisball.
Code: Alles auswählen
while True:
time.sleep(0.000005)
1+1
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Was die Leistungsaufnahme anbelangt, muss man denke ich mehr machen. Ansonsten wird nur ein recht kleiner Teil der CPU belastet. Einen Hash zu berechnen oder irgendwas zu komprimieren ist da IMHO ein besserer Ansatz.SchneiderWeisse hat geschrieben:sowas hier bringt meine CPU zumindest auf ziemlich konstante CPU-WerteCode: Alles auswählen
while True: time.sleep(0.000005) 1+1
Erstmal, danke für die viele Hilfe,
@jens: Vollkommen richtig, das Problem ist, das diese Berechnungen von der FPU Einheit übernommen werden. Aber wie lastet man die komplette CPU reproduzierbar aus?
@mkesper: Leider ist die reale Arbeit nicht so einfach reproduzierbar. siehe unten ich beschreibe erstmal um was es genau geht.
@Gabelmensch: Hatte ich schon probiert, hatte es damit nicht ohne Probleme hingekommen (sorry ist jetzt Monate her).
Ich habe schreibe an eine Arbeit für meine UNI. Ich hab als Leihgabe 4 Server zu, wo ich die Leistungsaufnahme im Leerlauf ca. 1% und unter Vollast gemessen hab. Ich messe dazu parallel die Temperatur der CPUs mit einer Thermokamera.
Ich erwarte nämlich, das die Leistungsaufnahme nur in den CPUs stattfindet (Serveranwendung ohne GPU support), solange die die Festplatten ausgeklammert werden können.
Deshalb keine reelle Betrachtung unter Office- Anwendungen, sondern Berechnungen, wo die Festplatte raus gehalten wird.
Und da das verschiedene Architekturen sind, muss es 1:1 reproduzierbar sein.
Con
@jens: Vollkommen richtig, das Problem ist, das diese Berechnungen von der FPU Einheit übernommen werden. Aber wie lastet man die komplette CPU reproduzierbar aus?
@mkesper: Leider ist die reale Arbeit nicht so einfach reproduzierbar. siehe unten ich beschreibe erstmal um was es genau geht.
@Gabelmensch: Hatte ich schon probiert, hatte es damit nicht ohne Probleme hingekommen (sorry ist jetzt Monate her).
Ich habe schreibe an eine Arbeit für meine UNI. Ich hab als Leihgabe 4 Server zu, wo ich die Leistungsaufnahme im Leerlauf ca. 1% und unter Vollast gemessen hab. Ich messe dazu parallel die Temperatur der CPUs mit einer Thermokamera.
Ich erwarte nämlich, das die Leistungsaufnahme nur in den CPUs stattfindet (Serveranwendung ohne GPU support), solange die die Festplatten ausgeklammert werden können.
Deshalb keine reelle Betrachtung unter Office- Anwendungen, sondern Berechnungen, wo die Festplatte raus gehalten wird.
Und da das verschiedene Architekturen sind, muss es 1:1 reproduzierbar sein.
Con
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das ist halt nicht so einfach, weil eine CPU mittlerweile einen ganzen Haufen an "speziellen Sektionen" bereit hält. Wenn man es richtig machen will, muß man IMHO verschiedene CPU Typen auch mit verschiedenen Aufgaben belasten. Das ist wohl auch der Grund, warum es CPUBurn in verschiedenen Varianten gibt.conloos hat geschrieben:Vollkommen richtig, das Problem ist, das diese Berechnungen von der FPU Einheit übernommen werden. Aber wie lastet man die komplette CPU reproduzierbar aus?
Dennoch möchte ich da einhaken. Mal für Nichtinformatiker: Ich dachte immer ein eine CPU *ist* ausgelastet (100 %) oder *ist nicht* ausgelastet (0%) - und Werte dazwischen zeigen nur ein zeitliches Mittel an. Ist das - zumindest grob - korrekt?jens hat geschrieben:Wozu sollte das gut sein???conloos hat geschrieben:Mein Problem ist, ich möchte z.B eine CPU auf 40%, 60% und 80% bringen.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Bin da jetzt auch nicht der super Experte. Aber IMHO ist 100% Auslastung != max. Leistungsaufnahme
Also nicht in allen Fällen verballert die CPU den meisten Strom.
Abgefahren wird die ganze Sache dann noch wenn der Takt sich dynamisch ändern kann, wenn Teile Schlafen gelegen werden kann usw.
Also nicht in allen Fällen verballert die CPU den meisten Strom.
Abgefahren wird die ganze Sache dann noch wenn der Takt sich dynamisch ändern kann, wenn Teile Schlafen gelegen werden kann usw.
-
- User
- Beiträge: 108
- Registriert: Sonntag 7. Februar 2010, 14:16
Vielleicht solltest du einen Thread laufen lassen, der irgend eine sehr ausgewogene Arbeit macht (oder auch nur Pi-Nachkommastellen berechnet), dabei aber zwischen den verschiedenen Arbeitsschritten von außen festlegbare Pausen ( z.B. sleep(timetosleep) ) einhält.
In deinem Hauptprogramm betrachtest du dann live die Prozessorauslastung deines Programms und passt den "timetosleep" Wert in einer Art Regelschleife an. So könntest du die Auslastung genau zu deiner gewünschten Prozentzahl hintrimmen. Bei zu viel Auslastung erhöhst du den timetosleep-Wert und bei zu wenig reduzierst du ihn..
In deinem Hauptprogramm betrachtest du dann live die Prozessorauslastung deines Programms und passt den "timetosleep" Wert in einer Art Regelschleife an. So könntest du die Auslastung genau zu deiner gewünschten Prozentzahl hintrimmen. Bei zu viel Auslastung erhöhst du den timetosleep-Wert und bei zu wenig reduzierst du ihn..
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Je nach Ansicht ist die CPU solange der Computer läuft auch immer ausgelastet. Wenn die CPU nicht ausgelastet ist, arbeitet sie einfach NOPs ab. Die Auslastung der CPU ist somit einfach die Zeit welche nicht vom Leerlaufprozess geschluckt wird. So gesehen ist deine aussage Richtig. In wirklichkeit ist natürlich alles viel komplexer.CM hat geschrieben:Dennoch möchte ich da einhaken. Mal für Nichtinformatiker: Ich dachte immer ein eine CPU *ist* ausgelastet (100 %) oder *ist nicht* ausgelastet (0%) - und Werte dazwischen zeigen nur ein zeitliches Mittel an. Ist das - zumindest grob - korrekt?jens hat geschrieben:Wozu sollte das gut sein???conloos hat geschrieben:Mein Problem ist, ich möchte z.B eine CPU auf 40%, 60% und 80% bringen.

http://de.wikipedia.org/wiki/Leerlaufprozess
Edit: Na toll nun habe ich einen ausgegrabenen thread ausgegraben.

[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann