<div dir="ltr">Ciao,<div>per occupare memoria potresti montare una porzione di memoria RAM come filesystem ( il bello di linux che qualsiasi cosa può diventare un file ):</div><div><br></div><div># mount tmpfs -t tmpfs /mnt/mem -o size=1G</div>

<div>Nota: tmpfs farà uso anche dello spazio SWAP ( se esiste ). Se si vuole utilizzare solo la memoria RAM sostituire tmpfs con ramfs.</div><div><br></div><div>Se il tuo intento è occupare memoria e generare carichi della cpu nello stesso tempo potresti generare  dati random e andarli a scrivere  in quella sezione di filesystem:</div>

<div>$ cat /dev/urandom > /mnt/mem/file$$.bin</div><div>Se la generazione di valori random non fosse sufficiente per per occupare tutta la cpu potresti anche pensare di comprimere i dati prima di scriverli: </div><div>

$  cat /dev/urandom | gzip -9 > /mnt/mem/file$$.gz<br></div><div>( il comando termina restituendo un errore nel momento in cui il file generato raggiunge la dimensione della "sezione" di memoria montata )</div>

<div><br></div><div>Il controllo sulla quantità di dati scritti si può avere con il comando dd<br></div><div>$ dd if=/dev/urandom of=/mnt/mem/file$$ bs=1024K count=1024</div><div>Il comando qui sopra andrà a scrivere 1GB di dati random nel file "/mnt/mem/file<pid del processo>" </div>

<div><br></div><div>Per quel che riguarda i limiti sull'utilizzo del processore esiste un comando specifico che, senza molta fantasia, si chiama cpulimit, e che permette di limitare l'utilizzo della cpu da parte di un processo specificandone la percentuale desiderata.</div>

<div><br></div><div>Quindi mettendo tutto insieme:</div><div>$ cpulimit -l 50 dd if=/dev/urandom of=/mnt/mem/file$$ bs=1024K count=1024</div><div>Il comando occupa 1G di memoria ( valore raggiunto solo alla terminazione dello stesso)  utilizzando il 50 % dei cicli di un processore. </div>

<div> </div><div>Una alternativa per definire la quantità di memoria massima utilizzabile da un processo o da un utente è il comando ulimit.</div><div><br></div><div>$ ulimit -Sv 1024</div><div> ( limita la memoria utilizzabile dall'utente che lo esegue a 1024 kbytes )</div>

<div><br></div><div>Non saranno soluzioni "eleganti" come quelle già proposte ma sono in stile Unix :)</div><div><br></div><div>Saluti,</div><div>Andrea </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">

Il giorno 13 marzo 2014 05:02, Technical GanXta <span dir="ltr"><<a href="mailto:giecsar@gmail.com" target="_blank">giecsar@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Ciao a tutti,<br>
<br>
non scrivo molto spesso ma spero che l'argomento vi piacerà.<br>
Allo scopo di eseguire dei test sto creando una farm di macchine<br>
virtuali (penso di crearne 100).<br>
<br>
Come sistema operativo utilizzerò una distribuzione molto leggera<br>
chiamata TinyCore [0] (ringrazio a Matias per il suggerimento!).<br>
E' una distribuzione decisamente particolare. Ho creato una prima<br>
macchina con successo e posso già osservare che ha un footprint<br>
davvero piccolo, infatti utilizza solo 28MB di RAM circa.<br>
<br>
Voglio simulare un ambiente "enterprise", in cui varie (e tante!)<br>
macchine virtuali competono per accedere alle risorse fisiche (stiamo<br>
parlando di due host clusterizzati con uno storage condiviso, ma non<br>
entro nei dettagli dell'infrastruttura).<br>
Ogni singola macchina virtuale avrà un processore single core, single<br>
thread e 64MB RAM.<br>
<br>
Per rendere l'ambiente "realistico" pensavo di creare dei finti<br>
carichi di lavori che sono casuali e vengono generati in automatico<br>
all'avvio di ogni macchina virtuale.<br>
I carichi di lavoro devono consumare risorse CPU e RAM, ma non DISK o NETWORK.<br>
Vorrei quindi implementare uno script in sh che venga eseguito<br>
all'avvio e funzioni in questo modo:<br>
<br>
- genera un numero casuale N tra 0 e 7<br>
- caso 0: genera un carico di lavoro che utilizza il 10% della CPU e<br>
una percentuale casuale per quanto riguarda la RAM (<= 90%)<br>
- caso 1: genera un carico di lavoro che utilizza il 25% della CPU e<br>
una percentuale casuale per quanto riguarda la RAM (<= 90%)<br>
- caso 2: genera un carico di lavoro che utilizza il 60% della CPU e<br>
una percentuale casuale per quanto riguarda la RAM (<= 90%)<br>
- caso 3: genera un carico di lavoro che utilizza il 90% della CPU e<br>
una percentuale casuale per quanto riguarda la RAM (<= 90%)<br>
- caso 4: genera un carico di lavoro che utilizza il 10% della RAM e<br>
una percentuale casuale per quanto riguarda la CPU (<= 90%)<br>
- caso 5: genera un carico di lavoro che utilizza il 25% della RAM e<br>
una percentuale casuale per quanto riguarda la CPU (<= 90%)<br>
- caso 6: genera un carico di lavoro che utilizza il 60% della RAM e<br>
una percentuale casuale per quanto riguarda la CPU (<= 90%)<br>
- caso 7: genera un carico di lavoro che utilizza il 90% della RAM e<br>
una percentuale casuale per quanto riguarda la CPU (<= 90%)<br>
<br>
Le percentuali sono diciamo indicative e non importa se variano (anzi,<br>
sarebbe ancora meglio).<br>
Come potrei generare questi carichi di lavoro? Stavo pensando di<br>
creare dei loop infiniti (while : do  <comando> done) che eseguono<br>
continuamente qualche comando standard di linux, potrebbe funzionare?<br>
<br>
Chi mi può aiutare? :)<br>
<br>
[0] <a href="http://tinycorelinux.net/" target="_blank">http://tinycorelinux.net/</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Mazilu "Technical GanXta" Teodor<br>
informatician, system administrator, geek<br>
XMPP: <a href="mailto:giecsar@gmail.com">giecsar@gmail.com</a><br>
BitMessage: BM-2cU9vsEQWWJ9RUpjhV2xHkrZzUn7gyRCpZ<br>
<br>
--<br>
Sito BgLUG: <a href="http://www.bglug.it" target="_blank">http://www.bglug.it</a><br>
Mailing list: <a href="http://lists.linux.it/listinfo/bglug" target="_blank">http://lists.linux.it/listinfo/bglug</a><br>
</font></span></blockquote></div><br></div>