2010-08-05 14 views
11

में बनाओ इस ध्वज मौजूद है:gnu मेक का उपयोग कर लोड-औसत के लिए एक अच्छा मूल्य निर्धारित करने के लिए कैसे करें?

-l [लोड], --load-औसत [= लोड] निर्दिष्ट करता है कि कोई नए रोजगार (आज्ञा) अगर वहाँ दूसरों चल नौकरियों और लोड कर रहे हैं शुरू किया जाना चाहिए औसत कम से कम लोड (एक फ्लोटिंग-पॉइंट नंबर) है। कोई तर्क नहीं के साथ, पिछली लोड सीमा को हटा देता है।

क्या आपके पास लोड सीमा के लिए उपयोग करने के लिए मूल्य के लिए एक अच्छी रणनीति है? ऐसा लगता है कि मेरी मशीनों के बीच बहुत कुछ अलग है।

उत्तर

3

स्वीकार्य लोड CPU कोर की संख्या पर निर्भर करता है। यदि एक कोर है, तो भार से अधिक औसत 1 से अधिक अधिभार है। यदि चार कोर हैं, तो लोड से अधिक चार से अधिक औसत भार अधिभार है।

लोग अक्सर -जे स्विच का उपयोग कर कोर की संख्या निर्दिष्ट करते हैं। https://stackoverflow.com/a/17749621/412080

+2

प्रयोगात्मक (मुझे लगता है -l विकल्प के लिए मूल कारण एक समय की वजह से उपजी जब एकाधिक प्रोसेसर दुर्लभ थे और मैं/हे वास्तव में धीमी थी।) हालांकि मैं एक मशीन पर देखा -j मैं के विभिन्न उपयोग के समय जबकि एक 4 कोर मशीन पर -j8 का उपयोग कर सबसे तेज़ संकलन मिला। – Zitrax

+2

मेरे पास समान अनुभव है। शायद क्योंकि संकलन के कुछ I/O- बाध्य चरण हैं, ताकि जब I/O के लिए एक कंपाइलर प्रक्रिया ब्लॉक हो, तो कोई भी उस समय संकलन के लिए उपयोग कर सकता है। –

3

मैं -l विकल्प का उपयोग करने के खिलाफ सलाह देते हैं:

यहाँ कुछ अनुभवजन्य संख्याएँ देखें।

सिद्धांत रूप में, -l-j से बेहतर लगता है। -j कहता है, यह कई नौकरियां शुरू करें। -l कहता है, सुनिश्चित करें कि यह कई नौकरियां चल रही हैं। अक्सर, वे लगभग एक ही चीज हैं, लेकिन जब आपके पास I/O बाध्य नौकरियां अन्य विषमताएं हैं, तो -l बेहतर होना चाहिए।

उस ने कहा, लोड औसत की अवधारणा थोड़ा संदिग्ध है। यह जरूरी है कि सिस्टम पर क्या चल रहा है। तो यदि आप make -j -l N चलाते हैं (कुछ N के लिए) और आपके पास एक अच्छी तरह से लिखित मेकफ़ाइल है, तो सिस्टम लोड के पहले नमूने को लेने से पहले तुरंत बड़ी संख्या में नौकरियां शुरू करेंगी और फाइल डिस्क्रिप्टर या मेमोरी से बाहर हो जाएंगी। साथ ही, भार औसत का लेखांकन ऑपरेटिंग सिस्टम में भिन्न होता है, और कुछ अस्पष्ट लोगों के पास यह बिल्कुल नहीं होता है।

प्रैक्टिस में, आप -j का उपयोग करके भी बंद हो जाएंगे और कम सिरदर्द होंगे। निर्माण से अधिक प्रदर्शन प्राप्त करने के लिए, अपनी मेकफ़ाइल ट्यून करें, कंपाइलर विकल्पों के साथ खेलें, और सीसीएच या इसी तरह का उपयोग करें।

+1

क्या आपने वास्तव में हाल ही में यह कोशिश की है? जीएनयू के अनुसार 3.81 (2006 में जारी) जीएनयू ने पिछले सेकंड में किए गए नौकरियों की संख्या के आधार पर सिस्टम लोड औसत के अपने विचार को समायोजित करने के लिए एल्गोरिदम लागू किया है। यह बिल्कुल आदर्श नहीं है क्योंकि यह सिर्फ एक अनुमान है, लेकिन इसे शुरू होने पर तुरंत 100 नौकरियों को बुलाए जाने से रोकना चाहिए। – MadScientist

+1

मुझे नहीं पता कि यह आंतरिक रूप से कितना स्मार्ट हो गया है, लेकिन यह व्यवहार अभी भी बहुत सारी नौकरियों को शुरू करने जा रहा है, फिर भी आसानी से पुन: उत्पन्न होता है। –

+1

दुर्भाग्य से, मेरे अनुभव में आपको भी आवश्यकता है -एल। मुद्दा यह है कि आप अक्सर कई जटिल बनाने वाले सिस्टम होने जा रहे हैं जो एक-दूसरे के बारे में जरूरी नहीं जानते हैं, इसलिए नौकरी की संख्या साझा करने वाली तंत्र हमेशा उपयोगी नहीं होती है।(एंड्रॉइड और आईओएस के लिए ओपनएसएल, डीबीस, कर्ल, और एक दर्जन अन्य पुस्तकालयों जैसे निर्माण की कोशिश करें; आप उन बिल्डों को लात मारने जा रहे हैं जो वास्तव में आपके स्वयं के निर्माण प्रणाली का हिस्सा नहीं हैं।) –