जब मैं (फिर से) एक डेस्कटॉप / लैपटॉप कंप्यूटर पर बड़े सिस्टम का निर्माण करता हूं, तो मैं make
संकलन गति को बढ़ाने के लिए एक से अधिक थ्रेड का उपयोग करने के लिए कहता हूं , जैसे:
$ make -j$[ $K * $C ]
कहाँ $C
की संख्या का संकेत माना जाता है कोर , मशीन है (जिसे हम एक अंक के साथ एक नंबर होने के लिए मान सकते हैं), जबकि $K
कुछ मैं से भिन्न है 2
करने के लिए 4
, मेरे मूड पर निर्भर करता है।
इसलिए, उदाहरण के लिए, मैं कह सकता हूं कि make -j12
अगर मेरे पास 4 कोर हैं, तो make
12 धागे तक उपयोग करने का संकेत मिलता है ।
मेरा तर्क यह है कि अगर मैं केवल $C
धागे का उपयोग करता हूं , तो कोर बेकार हो जाएगा जबकि प्रक्रियाएं ड्राइव से डेटा लाने में व्यस्त हैं। लेकिन अगर मैं थ्रेड्स की संख्या (यानी make -j
) को सीमित नहीं करता हूं, तो मैं समय स्विचिंग संदर्भों को बर्बाद करने के लिए जोखिम को चलाता हूं, स्मृति से बाहर चला जाता हूं, या इससे भी बदतर । मान लेते हैं कि मशीन में $M
मेमोरी की गिग्स है (जहां $M
10 के क्रम में है)।
इसलिए मैं सोच रहा था कि चलाने के लिए सबसे कुशल थ्रेड चुनने के लिए एक स्थापित रणनीति है या नहीं।