mikrocontroller.net

Forum: PC-Programmierung suche Killeranwendung


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin auf der Suche nach einer(!) einfachen Anwendung welche es 
schafft bei einem Intel Multcoresystem unter Windows (7,XP) alle CPUs zu 
100% auszulasten.

z.b. für eine CPU wäre primitivst Batchdatei:

echo off
:loop
goto loop

vollkommen ausrechend.

Es sollte jedoch am besten eine exe-Datei (Anwendung) sein welche im 
Code Volllast auf allen verfügbaren Kernem produziert ohne das dieses 
Programm weitere Programme oder sich selbst startet.

Es geht in meinem Fall darum das ich windows anschauen möchte wie es 
reagiert. Ich würde beahupten wenn eine Anwendung welche für mehrere 
Kerne Entwickelt ist es schafft unter Vollast der Anwendung alle CPUs zu 
annähernd 100% auszulasten.
Ich habe eine Anwendung (proprietär) die meiner Meinung nach nicht 
Multicore tauglich ist. Der Hersteller wird aber sicherlich das 
Gegenteil behaupten. Ist das überprüfbar ?

Beispiel, die Batch datei oben ist 100% nicht Multicorefähig erzeugt 
aber im Taskmanager 50% Last aber nicht auf einem Kern sondern Verteilt 
auf alle kerne.
Ich würde behaupten das MS diesen Task von Kern zu Kern schiebt um eine 
art Lastverteilung zu erhalten. Wenn dieser Task nun von der 
Prozesshirarchie auf realtime gesetzt wird klebt er auf einem Kern fest 
da scheinbar Windows nicht wirklich mehr die Zeit hat den Task 
weiterzureichen.
Jedoch 2x gestartet habe ich auf jedem Kern einmal den Batch laufen und 
somit 100% Last.

viele Grüße
Michael

Autor: Udo Schmitt (urschmitt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schreib Dir ein Programm, das mehrere Threads öffnet und sich 
selbst beschäftigt.
Ich verstehe ehrlich gesagt dein Problem nicht so richtig.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja genau, wie sollte so ein Programm den aussehen ? Am PC hab ich bisher 
nur VB Programmiert. Zur Verfügung hab ich VS2005

viele Grüße
Michael

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
z.B. in Java...
public class KillerApp implements Runnable {
  private static final int THREAD_COUNT = 10000;

  private long cnt = 0;

  private double dblcont = 0;

  /**
   * main Methode für KillerApp startet THREAD_COUNT Threads
   * 
   * @param args
   */
  public static void main(String[] args) {
    for (int i = 0; i < THREAD_COUNT; i++) {
      Thread thread = new Thread(new KillerApp());
      thread.setPriority(Thread.MAX_PRIORITY);
      thread.start();
    }
  }

  /* (non-Javadoc)
   * @see java.lang.Runnable#run()
   */
  @Override
  public void run() {
    while (true) {
      cnt += 1;
      dblcont += Math.PI;
    }
  }
}

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
starte 4mal den Taschenrechner und lass die Fakultät von 9999999999 
berechnen.

Autor: ... (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist die Killeranwendung. Folgendes musst du machen:

1. entpacken
2. auf das JAR File clicken und starten
3. Menü Remote->Start remote server
4. Menü Remote->Calculate remote

Das Programm berechnet, zu welchem Magneten ein Pendel schwingen würde, 
wenn es von einem bestimmten Punkt losgelassen wird. In der Datei 
remote_server.txt kannst du die Anzahl der Threads verändern. (Im Moment 
32) In der Datei können noch andere Rechner angegeben werden, die sich 
dann an der Berechnung beteiligen, wenn dort das gleiche Programm läuft 
und auch der remote server gestartet wurde.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> z.b. für eine CPU wäre primitivst Batchdatei:
>
> echo off
> :loop
> goto loop

Warum sollte das 100% Last erzeugen? IMHO erzeugt das zeitlich gemittelt 
maximal die Last, die vom Multitasker des OS dem Batchinterpreter an 
Rechenzeit auf dem Kern zugestanden wird.

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise verteilt der MS-Server die Arbeit ringsum, damit nicht nur 
eine CPU "ausglüht".

Die hakligen Sachen mit 100%CPU-Last waren bei mir immer auf EINEM Kern 
und dann hing die Weiterleitung auf den nächsten Kern durch das System.

Je mehr Kerne die CPU hat, desto später fällt das Hängen auf, da oft nur 
die Gesamtlast aller Kerne in Prozent angezeigt wird. Solche Fehler sind 
mühsam zu finden. Oft hat der Techniker dann die CPU getauscht und es 
ging wieder ein paar Monate.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Ich habe eine Anwendung (proprietär) die meiner Meinung nach nicht
> Multicore tauglich ist. Der Hersteller wird aber sicherlich das
> Gegenteil behaupten. Ist das überprüfbar

man kann nur das gegenteil prüfen, wenn die anwednung nur 1Thread hat, 
dann ist sie auf jeden Fall nicht multicore fähig. Aber das heist nicht 
wenn sie mehere Threads hat, das sie sinnvoll auf mehere cores läuft.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die Beiträge. Das hilft mir schonmal weiter.
Leider brauche ich für den Code Java, aber ich denke es sollte mir nun 
möglich sein eine Anwendung zu erstellen die mehrere Threads aufmacht, 
ich hatte davon scheinbar eine falsche vorstellung wie das überhaupt zu 
funktionieren hat.

Zu der Anwendung, ich denke das diese eine wirklich alte Anwendung ist 
die nur immerwieder etwas ergänzt wurde jetzt aber bei unserem Einsatz 
aus allen nähten platzt. Der Hersteller schiebt es auf die zur Verfügung 
gestellten Hardware.
Natürlich läuft auch eine schlecht programmierte Software auf schneller 
Hardware schneller.
Aber in diesem Fall nimmt sich eben die Anwendung sich einfach nicht die 
Leistung vom System die sie haben könnte, eben bei einem 3GHz Quadcore 
Xeon nur 25% lt. Taskmanager = 1 Core
Bei der Applikation ist bei meinem Verständniss es nicht sonderlich 
schwehr diese auf Multicorefähigkeit umzuprogrammieren falls man eben 
die Zeit investieren möchte. Die Anwendung macht Berechnungen von 
Mittelwerten der Vergangenheit über 1000e Werte. Und das dauert einfach 
zu lange. Der Hersteller sagt einfach auf einer Schnelleren Hardware 
würde es schneller laufen, klar hat er recht, aber das ist doch Mist.

Für mich als haupsächlich Hardwerker ist kein Flaschenhals zu sehen was 
die Leistung bremsen könnte I/O oder RAM Zugriffe oder Netzwerk. Die 
Anwendung verarbeitet auch nicht 100MB an Daten sondern eben diese paar 
1000e bis 10000e was meiner Meinung nach nicht wirklich viel ist.

viele Grüße
Michael

Autor: Pjotr Hansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Bei der Applikation ist bei meinem Verständniss es nicht sonderlich
> schwehr diese auf Multicorefähigkeit umzuprogrammieren falls man eben
> die Zeit investieren möchte.

Vielleicht reicht dein Verständniss nicht aus?
Bist du sicher, das das Problem 100%ig parallelisierbar ist? Das ist 
nämlich längst nicht so trivial, wie es sich anhört...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Für mich als haupsächlich Hardwerker ist kein Flaschenhals zu sehen was
> die Leistung bremsen könnte I/O oder RAM Zugriffe oder Netzwerk. Die
> Anwendung verarbeitet auch nicht 100MB an Daten sondern eben diese paar
> 1000e bis 10000e was meiner Meinung nach nicht wirklich viel ist.

wenn es wirklich so trivial ist, dann könnte man ja mal ein demo 
programm schreiben und mal verlgeichen. Dafür müsste man aber etwas mehr 
wissen. Ich kenn selber genug software wo ich weiss das sie sehr 
schlecht Programmiert ist und der Hersteller es nicht einsieht. (Ich bin 
selber Programmierer!). z.b. Behauptet ein Hersteller das man zur Hash 
berechnung in Java die komplette Datei in den Ram laden muss - was bei 
2GB Dateien blöd ist.
Mein Demo program bruachte dafür nur 2MB Ram.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe vergessen zu schreiben was die Anwendung hauptsächlich macht, 
sie bildet über diese 10000e Werte welche von Mehrern Tagen, Wochen 
stammen hauptsächlich Mittelwerte, z.b. Tages- Monatsmittelwerte, da 
kann ich mir gut vorstellen in jedem Thread den zu Berechnenden Zeitraum 
durch die Anzahl verfügbarer Kerne zu teilen und berechnen zu lassen.

Autor: Ulli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Für mich als haupsächlich Hardwerker ist kein Flaschenhals zu sehen was
> die Leistung bremsen könnte I/O oder RAM Zugriffe oder Netzwerk. Die
> Anwendung verarbeitet auch nicht 100MB an Daten sondern eben diese paar
> 1000e bis 10000e was meiner Meinung nach nicht wirklich viel ist.

Es reichen schon IO-Zugriffe usw. (laden/speichern) oder halt die GUI, 
die bedient werden will, dann wird die Berechnung wohl in einem Timer 
laufen und nicht 100% Last erzeugen.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> wenn es wirklich so trivial ist

Auf die schnelle leider nicht, das Programm ist ein Unterprogramm der 
Hauptanwendung und wird dementsprechend gerufen.
Die Daten bekommt das Programm aus einer Oracle Datenbank welche sich 
nur samt Platten nur langweilt und spätestends bei der 2. identischen 
Abfrage alle Daten aus dem Cache liefert. Die Anwendung rechnet sich 
aber zu tode zum Teil bis zu 10-30 Sekunden, der Anwender sitzt davor 
und wartet.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was sind das für werte, einfache zahlen oder etwas komplexeres? Für 
welche Datenmenge braucht er wie lange? Sind es einfache Text-Dateien wo 
du mal ein beispiel hochladen könntest?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ulli schrieb:
> Es reichen schon IO-Zugriffe usw. (laden/speichern) oder halt die GUI,
>
> die bedient werden will, dann wird die Berechnung wohl in einem Timer
>
> laufen und nicht 100% Last erzeugen.

IO kann ich zu dem zeitpunt eben nicht feststellen, weder Platte noch 
Netzwerk.
Die Daten erscheinen auf einen Schwups und werden nicht nacheinander in 
die GUI geschrieben.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Die Daten bekommt das Programm aus einer Oracle Datenbank welche sich
> nur samt Platten nur langweilt und spätestends bei der 2. identischen
> Abfrage alle Daten aus dem Cache liefert.

da könnte aber schon das Problem liegen, wenn sie jeden Datesatz einzeln 
mit einem Select abrufen dann spielt die Latenz vom Netzt eine große 
rolle.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> was sind das für werte, einfache zahlen oder etwas komplexeres? Für
>
> welche Datenmenge braucht er wie lange? Sind es einfache Text-Dateien wo
>
> du mal ein beispiel hochladen könntest?

z.B. 100e Wete wie 38,32 +- 20
oder auch dreistellige Temperaturwerte 146,58

Keine riesige Wete die in die 1000000e gehen.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> da könnte aber schon das Problem liegen, wenn sie jeden Datesatz einzeln
>
> mit einem Select abrufen dann spielt die Latenz vom Netzt eine große
>
> rolle.

Ah ok danke für den Tipp das kann ich mit Wireshark anschauen, die 
Netzwerkgeschwindikkeit liegt allerdings bei 10GBit.
Es macht auch keinen unterschied wieviele User auf die DB zugreifen die 
Anwendung macht auf den Strich 25% Last.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du das select sieht könntst du die Daten ja mal in ein Excel laden 
und dort die Berechnung machen. Wenn du dort schneller bist hast du den 
Beweiss das sie mist machen.

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Ah ok danke für den Tipp das kann ich mit Wireshark anschauen, die
> Netzwerkgeschwindikkeit liegt allerdings bei 10GBit.
> Es macht auch keinen unterschied wieviele User auf die DB zugreifen die
> Anwendung macht auf den Strich 25% Last.

Kannst du die Oberfläche während der Berechnung noch bedienen ?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erwin schrieb:
> Kannst du die Oberfläche während der Berechnung noch bedienen ?

Nein das Ding ist derweil platt, Sanduhr.

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal was von prime95 gehört?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> kann ich mir gut vorstellen in jedem Thread den zu Berechnenden Zeitraum
> durch die Anzahl verfügbarer Kerne zu teilen und berechnen zu lassen.
Ja vorstellen kann man sich viel ist aber idR viel zu Aufwendig und 
Fehlerträchtig, zumal dann ggf. der Zugriff auf die Daten wieder 
syncronisiert werden muß etc. etc.
Zumal Anzahl Threads = Anzahl CPUs nicht zwangsläufig die Perfmormance 
steigern muss.

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Erwin schrieb:
>> Kannst du die Oberfläche während der Berechnung noch bedienen ?
>
> Nein das Ding ist derweil platt, Sanduhr.

Wie platt ? Die Oberfläche refresht sich nicht mehr und Win meckert das 
die Anwendung hängt ? Wenn nicht, läuft die Berechnung im Timer oder in 
der Berechnung wird die GUI refresht, was dein Problem dann ganz normal 
erklärt.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erwin schrieb:
> was dein Problem dann ganz normal
> erklärt.

und schon mal zeigt das man es auf jeden Fall etwas besser machen kann.

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Erwin schrieb:
>> was dein Problem dann ganz normal
>> erklärt.
>
> und schon mal zeigt das man es auf jeden Fall etwas besser machen kann.

Ja, das ist aber, wie der Hersteller schon sagte, CPU Abhängig. Oft 
berechnet man mehrere Werte z.B. 100 und dann refresht man die 
Oberfläche, damit der Anwender nicht denkt das die Applikation hängt. Je 
nach der Anzahl der berechneten Werte, Oberfläche/OS (Themes etc.) und 
CPU hast du auf einem Rechner 100% Auslastung und auf einem anderen nur 
25%.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erwin schrieb:
> Wie platt ? Die Oberfläche refresht sich nicht mehr und Win meckert das
>
> die Anwendung hängt ? Wenn nicht, läuft die Berechnung im Timer oder in
>
> der Berechnung wird die GUI refresht, was dein Problem dann ganz normal
>
> erklärt.

GuI refrehst sowiso erst wenn es fertig ist, keine laufende Darstellung.
Windows meldet nicht das die Anwendung hängt.
Mann kann die Anwendung noch problemlos schließen und muss sie nicht 
abschießen.
Es gibt aber keinen "abbrechen" Knopf.

Autor: Schwarzes Tigerle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Assembler:

Start:
JMP Start

sind 2Byte die auch unter WinXP jeden Kern zu 100% auslasten
daher bei 2 Kernen und zweimal gestartet gibt's 'nen durchgehenden 
Strich bei 100%. (Bei Windows 9x geht der ganze Rechner in die Knie:)

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
son 3GHz müßte theoretisch 38GFlops haben. Das heißt 38 Giga Flißkomma 
Operationen pro Sekunde. Also ein Core könnte dann so um die 10GFlops.
Jetz sagen wir es ist ganz schlecht Programmiert und wir schaffen nur 
1GFlop dann würde er immer noch 1 Miliarde Werte pro Sekunde verabeiten 
können. Du hast aber 1000e Werte in 30 Sekunden ??!!!
Wenn ich das jetzt zurückrechne bist du 1000000*30 mal langsamer !! Also 
30 Millionen mal langsammer als ne 1GFlop CPU -> 1GFlop/30000000=
Also  33 Fließkomma Operationen pro Sekunde ?????
Da ist nen C64 Schneller.
OMG da helfen 4 Cores auch nicht.
Tut mir leid ist nicht bös gemeint aber ich muß gerade echt Grinsen.
Irgedetwas anderes ist da nicht OK

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> z.b. Behauptet ein Hersteller das man zur Hash
> berechnung in Java die komplette Datei in den Ram laden muss - was bei
> 2GB Dateien blöd ist.
> Mein Demo program bruachte dafür nur 2MB Ram.

...und ein C Programm hätte nur 2kB gebraucht scnr

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe schrieb:
> son 3GHz müßte theoretisch 38GFlops haben. Das heißt 38 Giga Flißkomma
> Operationen pro Sekunde. Also ein Core könnte dann so um die 10GFlops.

Blöde frage, wie kommst du auf 12,66 Floatingpointoperationen pro Takt?

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> z.b. Behauptet ein Hersteller das man zur Hash
> berechnung in Java die komplette Datei in den Ram laden muss - was bei
> 2GB Dateien blöd ist.
> Mein Demo program bruachte dafür nur 2MB Ram.

kann wir den gleichen Herstellen? Fängt der mit ES an?

Mir glaubt der Hersteller auch nicht - schon peinlich was sich andere 
erlauben und dann noch nich mal einsichtig.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
4xSSE Einheiten a 3GHz is nur ca. (hab den Wert mal gelesen für irgen 
nen 3GHz Quad). Muß man mal googlen. Aber 33 Flops/s das sind 33 Werte 
die PRO SEKUNDE ADDIERT WERDEN !!!! selbst wenn es 30000Flops/s wären 
das kann nicht sein !!!!! Und als lösung 4 Cores zu nehmen ist 
schwachsinnig dann sind es 100000 Werte pro Sekunde , das ist doch 
lachhaft. Die Software könnte in ein paar Millisekunden das Ergebnis 
liefern bzw. Microsekunden.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> z.b. Behauptet ein Hersteller das man zur Hash
> berechnung in Java
Kommt auf die Blocklänge an ;P
Auch Java kann aber ganz normal einen Stream hashen... nutze ich sleber 
zur Überprüfung von heruntergeladenen Dateien.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.