2009-10-29 11 views
8

मेरी उबंटू मशीन पर, चल रही डिफ़ॉल्ट कर्नेल छवि smp (CONFIG_SMP=y) के लिए बनाई गई है। लेकिन इस मशीन में केवल 1 सीपीयू है।क्या एक-सीपीयू मशीन पर एसएमपी कर्नेल के स्पिन_लॉक और spin_unlock को चोट पहुंचाने का प्रयास करें?

एसपीपी कर्नेल के विपरीत, यूनी-प्रोसेसर कर्नेल पर, spin_lock/unlock शून्य कार्य हैं। तो spin_lock() और spin_unlock() इस सेटअप में कैसे व्यवहार करता है?

क्या ऐसे एसएमपी विशिष्ट कोड के कारण कोई प्रदर्शन प्रभाव है?

+1

यह सुपरसुर – Amirshk

+0

पर संबंधित है I सहमत हैं। यह निश्चित रूप से मेरे लिए सुपर-उपयोगकर्ता-आईश लगता है। –

+0

प्रोग्रामिंग परिप्रेक्ष्य से सवाल संपादित किया !!! –

उत्तर

0

हां (और शायद नहीं)।

हां: ए स्पिन लॉक/अनलॉक लॉकिंग और अनलॉकिंग का वास्तविक कोड चलाएगा क्योंकि जब आप इसे संकलित करते हैं तो संकलक यह नहीं जानता कि आप इसे एक या अधिक CPUs वाली मशीन पर चलाने के लिए जा रहे हैं या नहीं। बी। हालांकि आपके पास एक सीपीयू है, लेकिन यदि आप थ्रेड का उपयोग करते हैं तो भी आप इसका उपयोग करना चाहेंगे।

शायद नहीं: मैं आपको यह पूछ रहा हूं कि आप लॉक करने के लिए आवश्यक भाग के लिए धागे का उपयोग नहीं करते हैं, और आपके पास केवल एक सीपीयू है। उस स्थिति में स्पिन लॉक कभी स्पिन में नहीं होना चाहिए। तो प्रदर्शन ओवरहेड नगण्य है।

3

वर्तमान लिनक्स कर्नेल में एक पैच होता है जिसे आप "एसएमपी विकल्प" शर्तों के साथ Google के लिए Google कर सकते हैं। संक्षेप में, बूट के दौरान, अगर कर्नेल का पता चलता है कि यह एक यूनिप्रोसेसर मशीनों पर चल रहा है, तो स्पिनलॉक फ़ंक्शन नो-ऑप्स के साथ हॉट-पैच किए जाते हैं।

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