CPU kullanımlarını yüzde olarak hesaplamak için GNU coreutil top formülü kullanmaya çalışıyorum. Ancak, üst yüzde, yüzde yüzdesini ekleyen yüzdesini hesaplamak için bazı half_total kullanıyor. En en source arasında utils.c olaraküst komutun CPU kullanımı hesaplaması
, aşağıdaki satırı (3.8 beta1 de, bu satır numarası şöyledir: 459): -
* üzerinden ++ = (int) ((* diffs ++ x 1000 + half_total)/total_change);
Bu şöyle açıklanabilir: "10 kez yüzdesi, artı 0.5": ((* diffs ++ x 1000)/total_change) + 1/2 Yani, her zaman, bir dizi sağlar. Yani yüzde x ise, 10x + 0,5 dönecektir.
Bu ortalama nasıl hesaplandığını açıklayabilir mi? ya da en azından yardım alabileceğim bir işaretçi mi?
PS: Neden gerekli yüzdeyi almak için (*diffs++/total_change) * 100
'u kullanmıyoruz? bölünme fraksiyonel bölümünü atar çünkü bu, tam sayı değerleri için yuvarlama yapmak yoludur http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0
ama "10x" parçası ne olacak? – Sabya
Çünkü değer yüzde onda. – starblue