<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix"><br>
      <div class="moz-signature">
        <style>a {color: #F7</style>On 14/03/2014 20:01, il Katta wrote:<br>
      </div>
    </div>
    <blockquote
cite="mid:CAH7uX0bzfbu-G_YZivgvNMKYnNmms1YGo6J5Mgcf-BQ2qX4EeA@mail.gmail.com"
      type="cite">
      <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 moz-do-not-send="true"
              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 moz-do-not-send="true"
              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 moz-do-not-send="true"
                  href="mailto:giecsar@gmail.com">giecsar@gmail.com</a><br>
                BitMessage: BM-2cU9vsEQWWJ9RUpjhV2xHkrZzUn7gyRCpZ<br>
                <br>
                --<br>
                Sito BgLUG: <a moz-do-not-send="true"
                  href="http://www.bglug.it" target="_blank">http://www.bglug.it</a><br>
                Mailing list: <a moz-do-not-send="true"
                  href="http://lists.linux.it/listinfo/bglug"
                  target="_blank">http://lists.linux.it/listinfo/bglug</a><br>
              </font></span></blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
    Grazie mille Andrea, quando avrò un attimo di tempo farò una prova!<br>
    <br>
    Saluti,<br>
    A presto<br>
  </body>
</html>