2012-08-17 22 views
5

मैं वर्तमान में कंप्यूटर पर कई प्रकार के लोड बनाने के लिए एक छोटे से घर परीक्षण परीक्षण पर काम कर रहा हूं ताकि हम देख सकें कि हमारा सॉफ्टवेयर लोड के तहत कैसे काम करता है। मैं एक अनुरोध पर लटका रहा हूं, जिसमें उपयोगकर्ता प्रोग्राम चलाने से पहले CPU (प्रतिशत, 40%) का प्रतिशत उपयोग निर्दिष्ट करने के लिए कुछ प्रकार का तरीका बनाता है, और उम्मीद है कि सीपीयू को एक श्रेणी में रखें + - उन्होंने जो कुछ भी रखा है, उनमें से 10%। मुझे बताया गया है कि उन्होंने कार्यक्रमों को पहले किया था, लेकिन मैंने जो देखा था, वह ऐसा करने का दावा नहीं करता था। मैं औसत उपयोग पढ़ने और थ्रेड चलने की कोशिश कर रहा हूं ताकि CPU उपयोग कम हो जाए, लेकिन मुझे पता चला है कि यह सटीक नहीं है। यह कई सर्वरों पर भी इस्तेमाल किया जा रहा है, प्रत्येक अलग-अलग CPUs के साथ, इसलिए मैं बहुत कठिन कोडिंग नहीं कर सकता क्योंकि इसे प्रत्येक सर्वर पर काम करने की आवश्यकता होगी। मैं व्यक्तिगत रूप से यह नहीं सोचता कि यह सही तरीके से करना संभव है, लेकिन मैं यह देखने के लिए आखिरी खाई के प्रयास के रूप में पूछ रहा हूं कि कोई और इस तरह के सॉफ़्टवेयर में आया है, और जानता है कि यह कैसे लिखा जाएगा।सी # परीक्षण प्रयोजनों के लिए नामित प्रतिशत उपयोग पर सीपीयू रखें/

संपादित करें: मैंने निम्न प्राथमिकता धागे का उपयोग करने का प्रयास किया है, और यह भी बताया गया था कि उनके लिए उपयोगी नहीं होगा (हालांकि मेरे पास अनुरोध किए जाने से पहले परीक्षण के उद्देश्य के लिए बनाया गया विकल्प था)।

+0

मुझे कैप्चर करने के किसी भी तरीके से पता नहीं है कि आप कितनी सीपीयू पावर का उपभोग कर सकते हैं, यह ओएस का कार्य है, शेड्यूलिंग निर्धारित करता है; सीमित करने के अलावा यह कितने कोर का उपयोग कर सकते हैं। आप क्या कर सकते हैं प्रक्रिया की प्राथमिकता को बदलना है, मैं इसे सोने का उल्लेख करने जा रहा था, लेकिन आप पहले से ही ध्यान दिया है कि यह एक अपूर्ण समाधान है। –

उत्तर

3

हमने कुछ समय पहले एक एप्लिकेशन सर्वर को ट्यून करने के समान कुछ किया था। हमने पाया कि सीपीयू लगभग 70% था जब हमारा समग्र थ्रूपुट सबसे अच्छा था। वांछित भार तक पहुंचने तक हमारा समाधान अतिरिक्त धागे को स्पिन करना था, प्रत्येक के बीच देरी के साथ। यदि सीपीयू 80% से ऊपर चला गया, तो हमने चलने वाले धागे की संख्या को कम कर दिया (इसके वर्तमान काम को समाप्त करने के लिए धागे को संकेत दिया और फिर समाप्त कर दिया)। अगर सीपीयू 60% से नीचे गिर गया, तो हमने एक नया धागा निकाल दिया।

आप कृत्रिम भार बनाने के लिए समान तर्क लागू कर सकते हैं जिसे आप लक्ष्य CPU उपयोग के लिए ट्यून कर सकते हैं। ठीक ट्यूनिंग की अनुमति देने के लिए आपके धागे को सीपीयू और गैर-सीपीयू (आईओ, या सिर्फ सोना) को संतुलित करने की आवश्यकता होगी। यदि आपके धागे बहुत सीपीयू गहन हैं, तो प्रत्येक 1 सीपीयू कोर का लगभग 100% उपभोग करेगा।

+0

यदि आपको मुझसे कोई फर्क नहीं पड़ता है, तो आपका धागा कैसा दिखता है? वर्तमान में मेरे पास एक अनंत लूप में निरंतर जोड़ और घटाव है, और वह अपने पूरे कोर को खाती है (हालांकि जिस समय मैं इस मशीन पर काम कर रहा हूं वह बहुत शक्तिशाली नहीं है) – wgallon

+0

@ बिलीगलन, अनंत सीपीयू बाध्य लूप किसी भी मशीन पर कोर का 100% खाएगा (जब तक ओएस स्तर शेड्यूलिंग प्राथमिकता या अन्य सीमाओं के कारण या तो थ्रेड को शेड्यूल नहीं करेगा यानी –

+0

हमारे मामले में धागे वास्तविक दुनिया के काम करते थे, डेटा से चयन करते थे एक डीबी टेबल और फिर उस पर गणना प्रदर्शन। मुझे संदेह है कि थ्रेड को छेड़छाड़ करना। सीपीयू गहन गणना के साथ नींद कॉल (यादृच्छिक लेकिन काफी कम अंतराल के लिए सोना) आपको एक थ्रेड बनाने की अनुमति देनी चाहिए जो औसत मामूली सीपीयू उपयोग करता है ताकि आपके पास कई धागे से उत्पन्न कुल भार को नियंत्रित करने की उचित क्षमता हो । –