-
Programm zur Simulation speicherintensiver Anwendungen
Hallo!
Im Prinzip möchte ich ein kleines Testprogramm schreiben, mit Hilfe dessen ich verschiedene Rechner auf ihre Geschwindigkeit bei Speicherintensiven Anwendungen testen kann.
Ich habe ein kleines Programm geschrieben, das mir 10-mal ca. 16 MB Speicher mit Zufallswerten füllt und anschließend 1000x verschiedene dieser Speicherstellen in andere kopiert.
Den Speicher habe ich mit "alloc()" reserviert und anschließend mit "rand()" und "srand()" mit Inhalt gefüllt, wobei es im Augenblick keinen Unterschied macht, ob da nun Inhalt drin steht oder nicht.
Das kopieren der Speicherstellen wird durch "memcpy()" durchgeführt.
Ich stelle allerdings fest, das der Kern, auf dem die Anwendung läuft, teilweise bis zu 100% belastet ist. Die CPU sollte aber eigentlich nicht der limitierende Teil (Bottleneck) des Tests sein. Meine Frage ist daher: Ist das normal oder habe ich einen gravierenden Denkfehler in dem Verfahren?
VG Wishy
-
Registrierter Benutzer
Das Problem in deinem Fall könnte darin liegen, dass die Werte andauernd zwischen den verschiedenen Speicherebenen kopiert werden müssen (was für eine übliche speicherintensive Anwendung wenig Sinn macht...).
Evtl. etwas realistischer: Matlab/Octave nehmen und grosse Zufallsmatrizen miteinander multiplizieren. Dürfte aber unter Umständen die CPU auch auslasten
MfG Bischi
"There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams
--> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...
-
Danke für deine Antwort!
Was genau meinst du mit verschiedenen Speicherebenen? Also welche Ebenen sind das? Hast du vllt. einen Link, wo ich etwas darüber nachlesen kann?
Ist C evtl. einfach die falsche Sprache für so einen Test?
-
Registrierter Benutzer
Speicherebenen: L1 Cache, L2 Cache, Ram, Swap auf HDD (ich hoffe, ich hab jetzt nichts übersprungen ). Und zur Sprache / Anwendung: Kommt halt sehr darauf an, was genau du machen willst. Ob die Anwendung eher realitätsbezogen sein soll, ob es nur auf den Speicher ankommt (bspw. Zugriffszeiten,...).
MfG Bischi
"There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams
--> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...
-
Ah okay, also wenn das herumkopieren, zwischen diesen Speicherebenen soviel CPU Last erzeugt, dann ist es genau das, was ich haben möchte. Ich dachte es gibt vielleicht noch logische Ebenen und der Code arbeitet dort auf der falschen Ebene.
Der Code soll in der Tat einfach nur testen, wie schnell das System bestimmte Speicherblöcke hin- und herkopieren kann.
-
Literaturhinweis
What every programmer should know about memory
Die CPU ist zu 100% ausgelastet weil sie hauptsächlich auf die Daten aus dem RAM wartet.
Gruss, Andy
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen