[bglug] TinyCore Linux e quant'altro

Technical GanXta giecsar@gmail.com
Ven 18 Apr 2014 20:14:12 CEST


On 20/03/2014 23:56, Technical GanXta wrote:
>
>
> 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!
>
>

Ciao Katta,

tralasciando il discorso della bash e di cpulimit (che penso di 
installare), l'utilizzo della CPU non risulta stabile. Anzi mi risulta 
100% casuale.
Ho fatto le prove su una macchina virtuale con Fedora 20.
Potrebbe essere colpa dello scheduler che è troppo intelligente e, 
ottimizzando l'esecuzione dei thread, riduce (o comunque fa variare 
costantemente) l'utilizzo della CPU?

--
Mazilu Teodor "Technical GanXta"
IT afficionado & FOSS evangelist

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


Maggiori informazioni sulla lista bglug