[bglug] TinyCore Linux e quant'altro

il Katta ilkatta88@gmail.com
Ven 14 Mar 2014 20:01:07 CET


Ciao,
per occupare memoria potresti montare una porzione di memoria RAM come
filesystem ( il bello di linux che qualsiasi cosa può diventare un file ):

# mount tmpfs -t tmpfs /mnt/mem -o size=1G
Nota: tmpfs farà uso anche dello spazio SWAP ( se esiste ). Se si vuole
utilizzare solo la memoria RAM sostituire tmpfs con ramfs.

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

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

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.

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

Una alternativa per definire la quantità di memoria massima utilizzabile da
un processo o da un utente è il comando ulimit.

$ ulimit -Sv 1024
 ( limita la memoria utilizzabile dall'utente che lo esegue a 1024 kbytes )

Non saranno soluzioni "eleganti" come quelle già proposte ma sono in stile
Unix :)

Saluti,
Andrea


Il giorno 13 marzo 2014 05:02, Technical GanXta <giecsar@gmail.com> ha
scritto:

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


Maggiori informazioni sulla lista bglug