Gå til innhold

[Løst] Kode for å lage CPU/RAM aktivitet


Anbefalte innlegg

Hei!

 

Jeg trenger å simulere CPU og RAM aktivitet på en VM.

Noen som har f.eks noen enkle kodesnutter som lager forskjellig CPU load og RAM bruk?

 

F.eks CPU aktivitet som går i type sinuskurve profil, spikes etc..

Jeg har noen enkle koder selv som bare teller oppover til 100000 ved å øke med 100 for hver gjennomgang, men det er ikke heavy nok.

Skulle gjerne hatt noe kode som ga 0-100% bruk av CPU, RAM ved hjelp av matteformler ellerno.

 

 

Håper noen kan hjelpe meg!

Lenke til kommentar
Videoannonse
Annonse

Har dere forslag til en bra kode som kan gå i evig loop, og at utregningen pr. iterasjon tar en pause før den begynner på nytt?

 

Noe som tar minst 10 sekunder å jobbe på :)

 

Og bruker færrest mulige libraries. Så simplest som overhodet mulig er det jeg ønsker :)

 

Jeg er ikke noe programmerer, og søker derfor input på dette forumet. Evig takknemlig om noen har noe kode.

 

Det jeg har hittil er dette:

 

//LINUX INCLUDES
#include <time.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
  int a=1;
  while(true)
 {
    if( a==0 || a>= 100000)
	  {
		 // Sleep 5 seconds
		 sleep(5);
		 printf("Starting over\n");
		 a=1;
	  }
    else
	  {
		 printf("%i\n",a+=100);
	  }
 }
}

Lenke til kommentar

C++ da, men men. Har ikke kompila eller noe, men en måte jeg tenkte på det da ^^

 

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#define GETDIFF (clock()-start)/(double)CLOCKS_PER_SEC
int main() {
clock_t start;
double diff;

while (true) {
 //Her slenger du inn koden din som bruker ca 10 sek
 // og med max bruk av CPU, dette kan f.eks være noe som

 diff = 0;
 start = clock();
 while (diff < 10.0) {
  // OG HER GJØRES NOE "TUNG"
  // er ikke noe vits å skrive ut til
  // skjerm hva som gjøres, det bare sinker
  // cpu bruk (tar "lang" tid å måtte vise noe
  // på skjermen)
  diff = GETDIFF;
 }

 diff = 0;
 start = clock();
 while (diff < 5.0) {
  diff = GETDIFF;
 }

 cout << "Starting over\n";
}
return 0;
}

Lenke til kommentar

Takk for svaret! :)

Viser seg at jeg må lage noe som er kompatibelt med Newlib C library samtidig som at det går med GNU Standard C library.

Tenkte meg noe som bruker færrest mulig header filer etc etc. Altså noe som kanskje bare utelukkende benytter seg av stdio.h, unistdh, og time.h?

 

Jeg lurer samtidig på om det er mulig å lage en slags mattekode som klarer å generere en type sinuskurve av CPU aktivitet.

F.eks at CPUen begynner med lav aktivitet og øker jevnt og trutt opp til 100% før den går ned igjen og hviler litt før den begynner på ny.

 

Kanskje en teller som teller oppover og fôrer en formel med et stadig økende tall før telleren når et makstall og begynner da å telle nedover igjen?

Noen tanker, forslag til en supersimpel kode som ikke trenger særlig av biblioteker og headers?

 

(ja, jeg er newb)

Endret av Haavard82
Lenke til kommentar

Hva med å finne alle primtall opp til en gitt grense? Fantes vel en benchmark før som gjorde dette, så det burde være en grei og enkel måte å generere CPU aktivitet. (Som er litt mer interessant enn bare å telle oppover).

Lenke til kommentar

long fib(int n) {
if ( n &--#62; 2)
 return fib(n-1) + fib(n-2);
else
 return 1;
}
int main(void) {
fib(9001);

return 0;
}

Should do the trick.

 

Interessant. Og den kan f.eks modifiseres til å regne ut via en teller som økes? Slik at regnestykket tar stadig lengre tid å regne ut? Med hjelp av en loop f.eks?

 

VIl koden ndenfor fungere? Jeg har sett at variabler noen ganger har & foran seg. Hva betyr dette? :)

F.eks fib(&i);

 

long fib(int n) {
if ( n &--#62; 2)
 return fib(n-1) + fib(n-2);
else
 return 1;
}

int main(void) {
  int i;
  int max = 9001;
  for(i = 0; i < max; max;i++){
		fib(i);
   }
return 0;
}

Endret av Haavard82
Lenke til kommentar

Takk for gode forslag!

Fortsatt lurer jeg litt på hvordan man kan lage kode som kan lage en mer "sinuslignende" profil.

 

Fibonacci formelen hopper ganske raskt opp til 100%, og er vanskelig å styre til å bruke f.eks 50% CPU og ikke 100%.

 

Det ble dette til slutt, hvor jeg varierer mellom å sette i = 43,44,45,46 eller 47. avhengig av hvor mye jeg vil at CPUen skal arbeide.

 

#include &--#60;stdio.h&--#62;
#include &--#60;unistd.h&--#62;
#include &--#60;time.h&--#62;
long fib(int n)
{

  if ( n &--#62; 2)
 return fib(n-1) + fib(n-2);
  else
 return 1;
}

int main(void)
{
  int i;
  int max = 50;
  int sleeper = 2;
  for(i = 40; i &--#60;= max;i++)
 {

if( i == 47 )
  {
  printf("Running application: Calculating fibonacci\n");
  fib(i);
  printf("Doing nothing for %d seconds\n", sleeper);
  sleep(sleeper);
  }

if( i == 50)
  {
  i = 39;
  }
 }

return 0;
}

Endret av Haavard82
Lenke til kommentar

En prosessor jobber ganske enkelt, få en arbeidsoppgave, utfør, gå til neste. Jeg har ihvertfall aldri vært borti noen methode for å sette en prosentandel av prosessoren til nytte. Du må jo også tenke på; alle prosessorer er jo forskjellige. Klokkefrekvens, kjerner, pipelines, arkitektur, så jeg ser det vanskelig at det finnes en arkitektur og os nøytral metode for å utføre dette... For alt jeg vet kan det fint hende at det ligger noe slik ute på nettet en eller anna plass, men da må enten noen gi deg svaret her, ellers må noen harde økter med googleing til =)

 

Si ifra hvis du finner det da ;)

  • Liker 1
Lenke til kommentar

En prosessor jobber ganske enkelt, få en arbeidsoppgave, utfør, gå til neste. Jeg har ihvertfall aldri vært borti noen methode for å sette en prosentandel av prosessoren til nytte. Du må jo også tenke på; alle prosessorer er jo forskjellige. Klokkefrekvens, kjerner, pipelines, arkitektur, så jeg ser det vanskelig at det finnes en arkitektur og os nøytral metode for å utføre dette... For alt jeg vet kan det fint hende at det ligger noe slik ute på nettet en eller anna plass, men da må enten noen gi deg svaret her, ellers må noen harde økter med googleing til =)

 

Si ifra hvis du finner det da ;)

 

Du har selvfølgelig helt rett.

Det eneste jeg kan tenke på som kan gi meg sinuskurve er cpu load average.

La f.eks en CPU heavy oppgave jobbe stadig lengre. F.eks utregning av fibonacci tallene, men med et input tall som blir stadig høyere, og f.eks justering av sleep timeren for når det skal utregnes.

 

Men kanskje man kan justere CPU på en annen måte ved å f.eks angi prioritet? Så kan man endre prioriteten som man ønsker for å justere bruk. Jaja, bare en tanke :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...