howieD Skrevet 3. april 2012 Del Skrevet 3. april 2012 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
GeirGrusom Skrevet 3. april 2012 Del Skrevet 3. april 2012 I utgangspunktet spiller det ingen rolle hva et program gjør, bare den gjør det hele tiden. For å øke eller minske CPU-bruken må du bare gi den varierende pusterom. PWM-ish opplegg. Lenke til kommentar
Valkyrex Skrevet 3. april 2012 Del Skrevet 3. april 2012 Må nok også se litt på threading, for å virkelig dra igang hele processoren. For å bruke ram er det bare å allokere noen dynamiske arrays med tilfeldig data. Lenke til kommentar
howieD Skrevet 4. april 2012 Forfatter Del Skrevet 4. april 2012 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
Valkyrex Skrevet 5. april 2012 Del Skrevet 5. april 2012 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
howieD Skrevet 6. april 2012 Forfatter Del Skrevet 6. april 2012 (endret) 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 6. april 2012 av Haavard82 Lenke til kommentar
Vice Skrevet 6. april 2012 Del Skrevet 6. april 2012 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
puse Skrevet 6. april 2012 Del Skrevet 6. april 2012 long fib(int n) { if ( n > 2) return fib(n-1) + fib(n-2); else return 1; } int main(void) { fib(9001); return 0; } Should do the trick. 1 Lenke til kommentar
howieD Skrevet 7. april 2012 Forfatter Del Skrevet 7. april 2012 (endret) 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 7. april 2012 av Haavard82 Lenke til kommentar
howieD Skrevet 10. april 2012 Forfatter Del Skrevet 10. april 2012 (endret) 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 10. april 2012 av Haavard82 Lenke til kommentar
Valkyrex Skrevet 10. april 2012 Del Skrevet 10. april 2012 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 1 Lenke til kommentar
howieD Skrevet 10. april 2012 Forfatter Del Skrevet 10. april 2012 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå