2009-07-14 18 views
5

मैंने देखा कि एक छोटा टेस्ट प्रोग्राम जो नैनोस्ली को कॉल करता है, वह 2.6.22 से अधिक कर्नेल के साथ लिनक्स मशीनों पर चलने पर CPU उपयोग में एक बड़ा अंतर दिखा रहा है।नैनोस्लीप उच्च सीपीयू उपयोग?

#include <time.h> 
int main (void) 
{ 
    struct timespec sleepTime; 
    struct timespec returnTime; 
    sleepTime.tv_sec = 0; 
    sleepTime.tv_nsec = 1000; 
    while (1) 
    { 
     nanosleep(&sleepTime, &returnTime); 
    } 
    return 0; 
} 

(हाँ, मुझे पता है इस कार्यक्रम के कुछ नहीं करता है) यदि मैं यह संकलन और एक openSUSE 10.3 मशीन (2.6.22.19-0.2-डिफ़ॉल्ट) पर चला

, कार्यक्रम भी दिखाई नहीं देता "शीर्ष" द्वारा उत्पन्न प्रक्रिया सूची पर, मुझे इंगित करता है कि यह बहुत कम CPU समय का उपयोग कर रहा है। अगर मैं इसे ओपनएसयूएसई 11.1 मशीन (2.6.27.23-0.1-डिफ़ॉल्ट) पर चलाता हूं, तो शीर्ष प्रोग्राम को 40% CPU समय लेता है। Fedora 9 (2.6.25-14.fc9.i686) पर चल रहा है और फेडोरा 10 ने "शीर्ष" में एक ही उच्च CPU उपयोग को भी दिखाया है।

क्या कर्नेल में कोई बदलाव आया है जो इसे प्रभावित करता है?

उत्तर

2

मैं एक निश्चित जवाब नहीं है ... लेकिन पहली बात मैं देखेंगे config विकल्प है जिसके साथ कर्नेल संकलित किया गया है:

cat /boot/config-`uname -r` 

विकल्प मैं प्रासंगिक हो सकता है लगता है CONFIG_HZ हैं कि , CONFIG_HPET_TIMER और CONFIG_HIGH_RES_TIMERS। हो सकता है कि वे आपके कर्नल के बीच भिन्न हों ... जो आपको इसे कम करने में मदद कर सकता है।

यह 2.4 कर्नेल कि नैनोस्लीप 2 के अंतर्गत एमएस की प्रतीक्षा करता है के लिए व्यस्त इंतजार करेंगे, तो वास्तविक समय अनुसूचक नीतियों के तहत चल रहा (SCHED_FIFO या SCHED_RR, nanosleep man page देखें) पर हुआ करता था, लेकिन जब से कर्नेल के सभी कर रहे हैं 2.6, यह एक कारक प्रतीत नहीं होता है।

18

यह मुख्य लाइन शेड्यूलर में NO_HZ की शुरूआत के कारण है।

पहले, आपकी 1,000 एनएस नींद आमतौर पर पूरे टिक के लिए सो रही थी - 1,000,000 एनएस। अब, जब मशीन अन्यथा निष्क्रिय होती है, तो यह वास्तव में केवल आपके लिए जो भी मांगती है उसके लिए सो रही है। तो यह थोड़ी देर() लूप और syscall लगभग 1000 गुना अधिक चल रहा है - इसलिए बहुत अधिक CPU उपयोग। यदि आप tv_nsec बढ़ाते हैं तो आपको CPU उपयोग में कमी दिखाई देनी चाहिए।

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