Я пытаюсь использовать формулу GNU coreutil top для расчета загрузки ЦП в процентах.
Но top использует некоторый half_total, чтобы вычислить процент, который добавляет 0,5 к проценту.
В utils.c из top * source следующая строка (в 3.8 beta1, это номер строки: 459): -
* out ++ = (int) ((* diffs ++ * 1000 + half_total) / total_change);
Это переводится как:
((* diffs ++ * 1000) / total_change) + 1/2
Таким образом, он всегда дает число, которое равно: «10-кратный процент плюс 0,5». Так что если процент равен x, он вернется 10x + 0.5.
Может кто-нибудь объяснить, как рассчитывается это среднее? или хотя бы какой-нибудь указатель, где я могу получить помощь?
PS:
Почему мы не можем просто использовать (*diffs++/total_change) * 100
, чтобы получить требуемый процент?
Исходный код Top находится по адресу: -
http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0