2009-02-16 9 views
6

मैं प्रतिशत में CPU उपयोग की गणना के लिए जीएनयू कोरुटिल टॉप के सूत्र का उपयोग करने की कोशिश कर रहा हूं। लेकिन शीर्ष प्रतिशत की गणना करने के लिए शीर्ष कुछ आधा_टोटल का उपयोग कर रहा है, जो प्रतिशत में 0.5 जोड़ रहा है।शीर्ष कमांड का सीपीयू उपयोग गणना

शीर्ष के source की utils.c में, निम्न पंक्ति (: 459 3.8 beta1 में, यह लाइन नंबर में है): -

* बाहर ++ = (int) ((* डिफ ++ * 1000 + half_total)/total_change);

यह अनुवाद करता है: ((* diffs ++ * 1000)/total_change) + 1/2 तो, यह हमेशा एक संख्या देता है, जो है: "10 गुना प्रतिशत, प्लस 0.5"। तो यदि प्रतिशत एक्स है, तो यह 10x + 0.5 वापस आ जाएगा।

क्या कोई यह समझा सकता है कि यह औसत गणना कैसे की जाती है? या कम से कम कुछ सूचक जहां मुझे सहायता मिल सकती है?

पीएस: हम आवश्यक प्रतिशत प्राप्त करने के लिए (*diffs++/total_change) * 100 का उपयोग क्यों नहीं कर सकते?

शीर्ष के स्रोत कोड स्थित है पर: - http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

उत्तर

6

इस तरह पूर्णांक मूल्यों के लिए गोलाई करने के लिए है, क्योंकि विभाजन आंशिक भाग को छोड़ देता है।

जब आप आधा विभाजक जोड़ते हैं तो यह एक फ़्लोटिंग पॉइंट डिवीजन के बराबर होता है और यदि आंशिक भाग 0.5 या अधिक होता है तो गोलाकार होता है।

+0

लेकिन "10x" भाग के बारे में क्या? – Sabya

+0

क्योंकि मान प्रतिशत के दसवें हिस्से में है। – starblue

संबंधित मुद्दे