[bglug] TinyCore Linux e quant'altro

Technical GanXta giecsar@gmail.com
Gio 20 Mar 2014 23:56:23 CET



On 20/03/2014 23:33, il Katta wrote:
> Purtroppo ieri ero via per lavoro, temo lo sarò anche nelle prossime 
> settimane -.-'
>
> In tinycore bash è presente nei repository ( se non sbaglio ).
> Sarebbe pensabile installarlo sulle tue macchine?
> ( non è neccesario usarlo come shell dell'utente, è sufficiente che 
> sia installato in /bin/bash ).
> Ad ash mancano funzionalità di cui lo script fa uso.
> Se dai un occhio all'ultima revisione dello script[0] sto provato ad 
> emulare il funzionamento di cpulimit.
> ( lo script utilizza cpulimit se installato, altrimenti carica la 
> funzione omonima ).
>
> Saluti
>
> [0] https://gist.github.com/il-katta/9582040
>
>
>

Hmmm.. potrebbe esser un problema.
Lo script originale che mi proponevi pesava 2.2KB circa. (ottimo!)
Il programma fatto ieri all'incontro (vedi sotto) pesa 7.5KB con 5 
librerie linkate staticamente (più che accettabile).

bash occupa 6.5MB una volta installata. Sono tanti, infatti in TinyCore 
e' stata sostituita con busybox proprio per questa ragione.

Dunque ringraziandoti ancora una volta, Dario, mi permetto di pubblicare 
il programma consume.c :

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <time.h>


int main() {
     srand(time(NULL));
     int rmem = (rand()%89)+10;
     printf("will use %d%% of free memory\n", rmem);
     int rcpu = (rand()%89)+10;
     printf("will use %d%% of cpu\n", rcpu);
     //printf("%ld",0);
     long freemem = sysconf(_SC_AVPHYS_PAGES) * sysconf(_SC_PAGE_SIZE);
     malloc((int) rmem*0.01*freemem);
     printf("%ju\n", (uintmax_t)clock()/CLOCKS_PER_SEC);
     uint64_t j = 0;
     long target = (int) rcpu*0.01*28000;
     long to_sleep = 100 * (100 - rcpu);
     while(1){
         for (long i=0; i<target; i++){
             j++;
         }
         nanosleep((struct timespec[]){{0, to_sleep}}, NULL);
     }
     //printf("%ju\n", (uintmax_t)CLOCKS_PER_SEC);
     printf("%lf\n", ((double)clock()/CLOCKS_PER_SEC));
     //while()
     return 0;
}

Come abbiamo visto c'e' qualcosa che non va in quanto l'utilizzo reale 
della CPU/memoria non combaccia con i valori settati dal programma.
Oggi ho provato ad installare un'altra macchina virtuale con Fedora e 
gcc per continuare lo sviluppo del programma, ma non sono riuscito a 
scaricare il pacchetto gcc (e putroppo non ho avuto tempo per fare 
troubleshooting).

Ora, cpulimit non sembra particolarmente pesante ma non se e' possibile 
installarlo su TinyCore in quanto la distribuzione utilizza questo 
formato particolare detto tcz.

Devo valutare bene tutto, intanto grazie ancora a tutti!


-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/bglug/attachments/20140320/c5e6cd47/attachment-0001.html>


Maggiori informazioni sulla lista bglug