कर्नेल / शेड्यूल / loadavg.c देखें, जिसमें प्रारंभ में एक लंबी और उत्कृष्ट टिप्पणी है, जो रनिंगेबल थ्रेड्स ("रन कतार") की संख्या के घातीय रूप से क्षय औसत से लोड औसत की व्युत्पत्ति की व्याख्या करता है, साथ ही अबाधित थ्रेड्स की संख्या (प्रतीक्षा) I / O या लॉक पर प्रतीक्षा कर रहा है)।
यहाँ टिप्पणी का सार है, लेकिन यह पूरी तरह से पढ़ने में सार्थक है:
* The global load average is an exponentially decaying average of
* nr_running + nr_uninterruptible.
*
* Once every LOAD_FREQ:
* nr_active = 0;
* for_each_possible_cpu(cpu)
* nr_active += cpu_of(cpu)->nr_running +
* cpu_of(cpu)->nr_uninterruptible;
* avenrun[n] = avenrun[0] *
* exp_n + nr_active *
* (1 - exp_n)
वास्तविक जीवन कोड को कुछ हद तक जटिल बनाता है: प्रति-सीपीयू काउंटरर्स, टिकलेस गुठली, हॉटस्पैप सीपीयू, फ्लोटिंग पॉइंट कोड की कमी, एक्सप-एन के निश्चित-बिंदु कार्यान्वयन की आवश्यकता होती है। लेकिन यह देखना आसान है कि ये सभी टिप्पणी में वर्णित विधि को ईमानदारी से लागू करने की दिशा में काम कर रहे हैं।
आप ध्यान देंगे कि लिनक्स केवल प्रक्रियाओं को नहीं, बल्कि आपके प्रश्न का उत्तर देने वाले थ्रेड्स को गिनता है ।