Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Stress Tool für CPU und HD - Anfänger

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.07.2006, 17:02 Uhr
raptor



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++ 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, 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 gute 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ß...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.07.2006, 17:17 Uhr
(un)wissender
Niveauwart


Äh, wenn das mehr als eine rein akademische Aufgabe ist, dann würde ich unbedingt vorhandene Tools verwenden. Ansonsten steht nämlich erstmal ein paar Jahre Hardwarereferenzen lesen an...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.07.2006, 18:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


also, speichertest ist kein problem:


C++:
char *memory = new char[wantedmemorysize];
while(true)
{
  // irgendne abbruchbedingung, nen sleep oder z.b irgendwas cpu-intensives.
}
delete[] memory;



zumindest belegst du da den memory, "stressen" tust du ihn da noch nicht.

Ansonsten wie unwissender schon sagt, hardwarereferenzen lesen ist angesagt, oder eben ein fertiges benutzen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.08.2006, 12:31 Uhr
ao

(Operator)



Zitat von raptor:
als absoluter Programmieranfänger ... ein Stress-Tool zu programmieren ...

Da bekommt das Wort Stress-Tool doch eine ganz neue Bedeutung

Im Ernst: Wirkliche Stress-Tools erfordern genaue Programmier- und Systemkenntnisse. Vielleicht solltest du doch ein fertiges Tool verwenden.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.08.2006, 23:49 Uhr
Co



ein key hook mit GetAsyncKeyState lahmt die cpu auf 100.
--
Wer später stirbt, hat mehr vom Leben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.08.2006, 15:35 Uhr
Hans
Library Walker
(Operator)


Hi,

ist zwar kein Stresstool im eigentlichen Sinne, aber eine Beschäftigungstherapie für die CPU, ob und inwiefern der Speicher mit betroffen ist, kannn ich nicht wirklich sagen. Hier jedenfalls mal das Programm:

C++:
/* Datei: longcalc.c

   Sinn und Zweck: Dient einfach nur dazu, den Computer lange rechnen
   zu lassen.

   V0.8 - nach einer Vorlage von F. Rieg in "Grafikprogrammierung
   für Windows", ISBN 3-446-40009-5, Seite 70
*/


#include <stdio.h>
#include <math.h>
#include <time.h>


#define MAXSIZE 500000
                /* Hier ggf. anpassen; - 500 zum testen, dann 5.000.000
                      (5 Mio.) für den Einsatz */


double vektor(void);
void meldung();
void fortschritt(long);
int prozent(long);

double     x[MAXSIZE], y[MAXSIZE], z[MAXSIZE],
         s[MAXSIZE];

int main()
{
  double x;
  time_t first, second;

  first = time(NULL);   /* Erhält die Systemzeit */

  meldung();
  x=vektor();

  second = time(NULL);  /* Erhält noch einmal die Systemzeit */
  printf("Die Therapie dauerte: %f Sekunden.\n",difftime(second,first));

  return 0;
}


/**********************************************************
* Die Function vektor sorgt nur fuer langes "Rechnen"
* Mit #pragma option sämtliche Optimierungen abstellen; - zumindest  
* beim Borland Compiler
**********************************************************/

#pragma option -Od
double vektor(void)
{
   extern double x[], y[], z[], s[];
   double pi;
   long i;

   pi = 4*atan(1.);

   printf ("Longcalc Meldung: initialisiere x.\n");
   for (i= 0; i< MAXSIZE; i++)
     { x[i]= (double) i;
       fortschritt(i);
     }
   printf ("Longcalc Meldung: Vektor x initialisiert.\n");

   printf ("Longcalc Meldung: initialisiere y.\n");
   for (i= MAXSIZE-1; i>0; i--)
     { y[i]= (double) i;
       fortschritt(i);
     }
   printf ("Longcalc Meldung: Vektor y initialisiert.\n");

   printf ("Longcalc Meldung: berechne z, das kann etwas länger dauern...\n");
   for (i= 0; i< MAXSIZE; i++)
     { z[i]= sqrt(pow(x[i],2.) + pow(y[i],2.));
       fortschritt(i);
     }
   printf ("Longcalc Meldung: Vektor z bearbeitet.\n");

   printf ("Longcalc Meldung: berechne s, das kann etwas länger dauern...\n");
   for (i= 0; i<MAXSIZE; i++)
     { s[i]= sin((double) i * pi / 180.) + cos(((double) MAXSIZE-i) * pi /180.) ;
       fortschritt(i);
     }
   printf ("Longcalc Meldung: Vektor s bearbeitet.\n");

   return(z[MAXSIZE-1]);
} /* vektor */
/* Optimierungsoption wieder auf den ursprünglichen Wert zurück setzen */
/* #pragma option -Od.    // gibt leider 'ne Fehlermeldung.
*/


void meldung()
{
   printf ("Prozessorbeschäftigungstherapie \"Longcalc\" am Werk...\n");
}

void fortschritt(long i)
{
  int pz;

  if (i%10)
     return;
  else
     pz = prozent(i),    // ist wahrscheinlich unsauberer Stil...
     printf ("%3d%% erledigt...\r", pz);
}

int prozent(long pw)
{
  return (pw * 100 / MAXSIZE);
}



Soweit das; das liefert bei mir folgende Ausgabe:

Code:
D:\Borland\work>longcalc
Prozessorbeschõftigungstherapie "Longcalc" am Werk...
Longcalc Meldung: initialisiere x.
Longcalc Meldung: Vektor x initialisiert.
Longcalc Meldung: initialisiere y.
Longcalc Meldung: Vektor y initialisiert.
Longcalc Meldung: berechne z, das kann etwas lõnger dauern...
Longcalc Meldung: Vektor z bearbeitet.
Longcalc Meldung: berechne s, das kann etwas lõnger dauern...
Longcalc Meldung: Vektor s bearbeitet.
Die Therapie dauerte: 57.000000 Sekunden.



Dazu hab ich später noch mal ein paar fragen, die stell ich aber in der Borland-Rubrik, weil sie Borland-spezifisch sind.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 07.08.2006 um 15:39 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.08.2006, 15:42 Uhr
(un)wissender
Niveauwart


Nur weil der Windows Task Manager 100% anzeigt, ist die CPU noch lange nicht voll ausgelastet.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.08.2006, 16:39 Uhr
ao

(Operator)


Ein Stress-Tool schreibt man nicht als Selbstzweck zum sinnlosen Verbraten von Rechenleistung, Speicherplatz oder Bandbreite. Du musst mal genauer erklären, was das Ergebnis dieses Stresstests sein soll.

Willst du Performance-Messungen machen oder testen, wie ein Programm mit künstlich verknappten Resourcen zurechtkommt oder noch was anderes?

Für aussagekräftige und vergleichbare Resultate reicht es wohl nicht, den Speicher wegzufressen oder die CPU durch wildes Herumrechnen an den Anschlag zu bringen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: