all'inizio comando calcolo dell'utilizzo della CPU
-
23-08-2019 - |
Domanda
Sto cercando di usare GNU coreutil formula di top per il calcolo usi CPU in percentuale. Ma in alto sta usando qualche half_total, per calcolare la percentuale, che è l'aggiunta di 0,5 alla percentuale.
In utils.c del top di fonte , la seguente riga (a 3.8 beta1, è nel numero di riga: 459): -
* fuori ++ = (int) ((* diff ++ * 1000 + half_total) / total_change);
Questo si traduce in: ((* Diff ++ * 1000) / total_change) + 1/2 Così, si dà sempre un numero, che è il seguente: "10 volte la percentuale, più 0.5". Quindi, se la percentuale è x, si tornerà 10x + 0,5.
Qualcuno può spiegare come è questo media calcolata? o almeno alcuni puntatore dove posso ottenere l'aiuto?
PS:
Perché non possiamo semplicemente usare (*diffs++/total_change) * 100
per ottenere la percentuale richiesta?
Il codice sorgente di Top si trova a: - http://downloads.sourceforge.net/unixtop /top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0
Soluzione
Questo è il modo di fare arrotondamento per valori interi, perché la divisione scarta la parte frazionaria.
Quando si aggiunge metà il divisore questo è equivalente ad una divisione in virgola mobile e per eccesso se la parte frazionaria è di 0,5 o maggiore.