Stress-Tool f. CPU und HD bauen - Anfänger
-
Hallo,
als absoluter Programmieranfänger möchte ich eine grundlegende Frage stellen. Mein Boss hat mich damit "beauftragt" ein Stress-Tool zu programmieren, indem es möglich ist, die CPU, den Speicher, sowie Festplatte und Netzwerk zu "stressen" (ich weiss...es gibt fertige Tools, aber er möchte ein eigenes *g*). An der Uni habe ich zwar ein wenig Java programmiert, hatte bisher aber noch nichts mit C++/C# am Hut. Deswegen würde mich eure Meinung über folgende Punkte interessieren.
- Bietet es sich an, das Projekt in C++ zu programmieren, oder ist es mit einem Java-Hintergrund eher besser das Ganze mit C# zu realisieren (würde ich lieber), bzw. ist es damit überhaupt möglich (Stichwort Garbage Collection bei Speichertests)?
- Wie würdet ihr an die Sache grundsätzlich ran gehen? Habt ihr eine gutes Buch und/oder Webseitenempfehlung? Über welche technischen Hintergründe müsste ich mich schlau lesen (Threads, etc.). So aus dem Stehgreif weiss ich nämlich nicht, wie man generell die CPU oder Festplatte dazu bringen kann, unter Vollast zu arbeiten.
- wie schätzt ihr den Zeitaufwand für die Realisierung eines einfachen Tools ab, das CPU, Festplatte und ggf. Netzwerk stressen kann. Die CPU soll 100%ig ausgelastet werden, wieviel MB der Speicher belegt, soll anpassbar sein.
Ich bin gespannt auf eure Meinungen...
Gruß...
-
Hallo,
Die anderen, erfahrerenen Progger können dir bezüglich diesem Thema sicha ne bessere Auskunft geben aba ich stell ma das mal so vor (ne einfachere Lösung):
Du nimmst nen Algo der in jeder Routine sehr viel ausführen muss.
Zb.: Kopierst Riesengroße Arrays herum und/oder machst komplexe Aufgaben.
Viell ne Funktion, die was ausführt, dann ab einem bestimmten Punkt ne andere ausfürt die ein ergebniss holen soll, die die die vorherige braucht und so weiter.
Während die nächste läuft, werden von der ersten aber auch weiterhin noch Langsame Sachen ausgeführt.Für den Festplattentest stell ich mir vor, dass viele Sachen von einer Adresse zu einer anderen transferiert werden, neue Sachen angelegt werden, und all das mit großen Dateien.
Und das alles gleichgzeitig.
-
noch was:
Lass dir viell mehrere schleifen gleichzeitig laufen (falls möglich) und in jeder dieser routinen sollen 10 Funktionen oder mehr aufgerufen werden.
Wie gesagt mach sowas wie Primfakorzerlegung mit hohen Primzahlen.Frage ist natürlich willst du auch eine Analyse?
oder ihn einfach nur crashen indem du siehst ab wievielen Operationen er abtsürzt?
-
c-newling schrieb:
noch was:
Frage ist natürlich willst du auch eine Analyse?
oder ihn einfach nur crashen indem du siehst ab wievielen Operationen er abtsürzt?Hi,
danke schon mal für den Gedankenanstoß.
Analyse ist übrigens nicht nötig, es geht darum, den Rechner gut zu beschäftigen mit dem Hintergrund, dass dann noch zusätzlich eine andere Applikation läuft, um zu beobachten, wie sich diese verhält, wenn das Stress-Test Tool 100% CPU Last (oder Festplatten- oder Netzlast) z.B. erzeugt. Das BS muss dann ja der neuen Applikation auch CPU Zeit zuweisen mit Round-Robin, oder ähnlichen Mechanismen.
-
geh mal bei Dir in die MSDN und gib als Suche folgendes ein:
Leistungsindikator
Lies dort gleich unter den vielen aufgeführten Treffern
unter dem Punkt:Einführung in die Überwachung von Leistungsschwellenwerten
sowie
Überwachen von Leistungsschwellenwerten
Das gibt Dir dann erstmal Aufschluss über Funktionalitäten die das .NET mitbringt um bestimmte Paramter des laufenden System zu überwachen.
Unter anderem die PerformanceCounter-Klasse.
1. Du müsstes dann nur noch solche Messindikatoren codetechnisch setzen und in Gang setzen
2. Stresstest codetechnisch umsetzen
Zum PerformanceCounter existieren nat. in der MSDN auch gleich dokumentierte Codeschnippsel
P.S.: mögliche naive Suchquerys für google für Stressalgorithmen
Performancetest + programmieren + C#
Stresstest + programmieren + C#http://www.google.de/search?hl=de&q=Performancetest+%2B+programmieren+%2B+C%23&btnG=Suche&meta=lr%3Dlang_de
http://www.codeproject.com/info/search.asp?cats=3&searchkw=PerformanceCounter&Submit1=Search&author=&sd=15+Nov+1999&ed=26+Jul+2006es würde aber z.B. auch schon reichen wenn Du einfach nur in deinem Programm
nur die PerformanceCounter benutzt/umsetzt. Den Stressalgorithmus würde ich nicht mit in diesen Code giessen. Um den Rechner dann auszulasten/testen lädst Du aus dem Netzt zum Beispiel einen aktuelles 3D-Benchmarkprogramm/Test startest den und führst parallel dazu Dein performanctestprogramm aus. So ist Dein Leistungstestprogramm flexibeler.