म्यूटेक्स कार्यान्वयन का परीक्षण और बेंचमार्क कैसे करें


12

जैसा कि शीर्षक कहता है: आप c ++ में म्यूटेक्स के विभिन्न कार्यान्वयनों को कैसे ठीक से परीक्षण और बेंचमार्क करते हैं?

अनिवार्य रूप से मैंने अपना स्वयं का std :: mutex को एक 2 कोर पर चलने वाले प्रोजेक्ट के लिए वर्ग की तरह लिखा, निर्विरोध मामले में ओवरहेड को कम करने के उद्देश्य से armv7। अब मैं अधिक स्थानों और विभिन्न आर्किटेक्चर में भी म्यूटेक्स का उपयोग करने पर विचार कर रहा हूं, लेकिन इससे पहले कि मैं ऐसा करूं मैं यह सुनिश्चित करना चाहता हूं

  • यह वास्तव में सही है
  • ऐसे कोई भी रोग संबंधी मामले नहीं हैं, जिसमें यह मानक मानक :: म्यूटेक्स की तुलना में बहुत खराब प्रदर्शन करता है।

जाहिर है, मैंने कुछ बुनियादी इकाई परीक्षण और माइक्रो-बेंचमार्क लिखे और सब कुछ काम करने लगता है, लेकिन बहु-थ्रेडेड कोड में "काम करने लगता है" मुझे बहुत आराम नहीं देता है।

  • तो, क्या कोई स्थापित स्थैतिक या गतिशील विश्लेषण तकनीक है?
  • म्यूटेक्स कक्षाओं के लिए इकाई परीक्षण लिखते समय क्या सामान्य नुकसान होते हैं?
  • विशिष्ट धार वाले मामले कौन से हैं, जिन्हें (प्रदर्शन-वार) देखना चाहिए?

मैं केवल कार्यान्वयन के लिए मानक पुस्तकालय प्रकारों का उपयोग कर रहा हूं, जिसमें परमाणु पर गैर-अनुक्रमिक-संगत लोड और स्टोर संचालन शामिल हैं। हालाँकि, मैं मुख्य रूप से अज्ञेय सलाह को लागू करने में दिलचस्पी रखता हूं, क्योंकि मैं अन्य कार्यान्वयन के लिए एक ही परीक्षण दोहन का उपयोग करना चाहता हूं।


2
मुझे पता है कि इसकी आवश्यकता नहीं है, लेकिन मैं सराहना करता हूं कि अगर डाउनवोटर्स इस प्रश्न के साथ क्या समस्या है पर टिप्पणी करेंगे। मैं एसई के लिए नया हूं और इस साइट के thespecifics के साथ पूरी तरह से पारिवारिक नहीं हूं।
माइकएम

3
नीचे मतदाता नहीं है, लेकिन मैं कहूंगा कि यह साइट पूरी तरह से अच्छे सवालों पर गुमनाम डाउन वोट के लिए विशेष रूप से खराब है। यह मुझे बहुत से लोगों की तरह लगता है कि वोट के आधार पर मैं "धार्मिक" कारणों से क्या कहूंगा। उस ने कहा, एक संभावना यह है कि आप टूल पर सिफारिशों के लिए पूछ रहे हैं, जो मुझे लगता है कि यहाँ पर डूब गया है। लेकिन यह सिर्फ एक अनुमान है। और कई लोगों ने अन्य प्रश्नों में ऐसे उपकरणों पर चर्चा की है, इसलिए आप क्या करेंगे, यह सुनिश्चित करें।
user1118321

4
वास्तव में, "डाउनवोटिंग" शीर्षक वाली इस मेटा पोस्ट को देखें क्योंकि हम प्रश्नकर्ता के दृष्टिकोण या तर्क से सहमत नहीं हैं।
user1118321

@ user1118321: वह मेटा पोस्ट इस प्रश्न के लिए उपयुक्त नहीं है क्योंकि IMHO इस प्रश्न में कोई त्रुटिपूर्ण धारणा नहीं है। हालाँकि, वर्तमान में मैं जो 3 क्लोज वोट देख रहा हूँ उनमें से दो पूर्वनिर्धारित "थर्ड पार्टी रिसोर्स रिक्वेस्ट" का उपयोग कर रहे हैं। माइकएमबी, आप अपने प्रश्न को संपादित करने और उन हिस्सों को इससे हटाने की कोशिश कर सकते हैं, हालांकि वर्तमान रूप में, मुझे लगता है कि समुदाय इसे बहुत व्यापक होने के लिए भी बंद कर सकता है। यदि आप प्रश्न के फोकस को कम कर देते हैं और विशिष्ट रूप से पूछते हैं कि आप क्या परीक्षण करना चाहते हैं और आपने अब तक क्या प्रयास किया है, तो आप अपने प्रश्न के बचने की संभावना बढ़ा सकते हैं।
डॉक ब्राउन

इस प्रश्न के साथ एक समस्या यह है कि "प्रश्न हमें टूल, लाइब्रेरी, प्रोग्रामिंग लैंग्वेज, संसाधन (किताबें, ब्लॉग, ट्यूटोरियल और उदाहरण सहित) खोजने या सिफारिश करने के लिए कह रहे हैं, या परियोजनाएं शुरू करने के लिए विषय हैं, क्योंकि वे यहां दिए गए उत्तरों को आकर्षित करते हैं। दूसरों के लिए स्थायी मूल्य नहीं होगा।
डेविड हैमेन

जवाबों:


1

मुद्दा जटिल है:

जटिलता के कुछ स्रोतों में शामिल हैं:

  • कितने संदर्भ स्विच हो रहे हैं: यह उन प्लेटफ़ॉर्मों पर निर्भर करता है जो इन परीक्षणों पर चलते हैं। कुछ प्लेटफ़ॉर्म दूसरों की तुलना में इसे बेहतर तरीके से संभालते हैं
  • क्या कार्य म्यूटेक्स को इनलेट में परीक्षण किया जाता है या नहीं। यानी म्यूटेक्स केवल अच्छी तरह से अनुकूलित या अनुकूलन कोड में अच्छा प्रदर्शन करता है।
  • क्या ये म्यूटेक्स कैश इलाके के लिए डिज़ाइन किए गए हैं। क्या कैश से प्रदर्शन में कमी आएगी या अधिक संदर्भ स्विच बंद हो जाएंगे। म्यूटेक्स के पहले और बाद में प्रवेश किया जाता है।
  • क्या म्यूटेक्स खुद कैश लोकेलिटी को नुकसान पहुंचाएगा। यानी म्यूटेक्स राज्य डेटा को गतिशील रूप से आवंटित किया गया है।
  • क्या ये म्यूटेक्स अच्छा प्रदर्शन करेंगे जहां म्यूटेक्स के भीतर संदर्भ स्विच निहित हैं। यानी ओयो, मालॉक आदि।
  • क्या म्यूटेक्स अच्छा प्रदर्शन करेगा कर्नेल का समय म्यूटेक्स.आई डायनेमिक मेमोरी एलोकेशन और डीलोकेशन में समाहित है।
  • जब VM के भीतर चल रहा हो तो प्रदर्शन पकड़ में आता है
  • क्या म्यूटेक्स का विनाश या निर्माण महंगा है अर्थात राज्य डेटा गतिशील मेमोरी में स्थित है

1
यकीन नहीं होता कि मैं निर्माण / विनाश भाग से सहमत हूं। यदि कोई प्रोग्राम हर समय आपके म्यूटेक्स को बना रहा है और नष्ट कर रहा है, तो डिज़ाइन डिज़ाइन के साथ कुछ गलत है। लेकिन अन्यथा संकेत देने वालों का धन्यवाद।
माइकएम

-1

आपका विचार बहुत दिलचस्प है: एक अनुपालन बेंचमार्क जिसके खिलाफ एक म्यूटेक्स कार्यान्वयन का परीक्षण किया जा सकता है।

दुर्भाग्य से, जहां तक ​​मैं देख सकता था, म्यूटेक्स कार्यान्वयन के लिए व्यापक रूप से ज्ञात अनुपालन बेंचमार्क नहीं है। इसलिए, मुझे लगता है कि आपके हाथों में इस तरह के अनुपालन बेंचमार्क के लिए एक प्रस्ताव बनाने की बहुत दिलचस्प समस्या है।

और, जब से आप एक बेंचमार्क कार्यान्वयन के निर्माण में शामिल हुए हैं, आप आदमी हैं।

यदि आप मुझे एक सुझाव देने की अनुमति देते हैं, तो शायद आप एक पक्ष में थ्रेड्स के लिए पोसिक्स मानक के साथ इस शोध को शुरू कर सकते हैं, और समवर्ती प्रसंस्करण के सैद्धांतिक साहित्य के कुछ अध्ययन, जैसे सीएसपी, या अनुक्रमिक प्रक्रियाएं संवाद कर सकते हैं। इस तरह के पेपर्स आमतौर पर डाइनिंग फिलॉसॉफर्स की तरह शास्त्रीय समवर्ती समस्याओं से निपटते हैं।

उनका एक कार्यान्वयन आपके अनुपालन बेंचमार्क का एक दिलचस्प हिस्सा हो सकता है, मुझे लगता है।


3
मैंने आपको निराश नहीं किया, लेकिन यह मेरे किसी भी सवाल का जवाब नहीं देता है।
माइक एमबी

डाउनवॉटिंग के लिए धन्यवाद। और आपके सवालों के जवाब न देने के लिए क्षमा करें। यदि आप म्यूटेक्स के लिए एक अनुपालन बेंचमार्क बनाने पर विचार कर रहे हैं तो क्या आप बुरा मानेंगे?
हिल्टन फर्नांडिस

संभावना नहीं है। और यहां तक ​​कि अगर, मुझे एकमात्र मानक जिसकी मैं परवाह करता हूं वह है c ++ मानक (हालाँकि वह म्यूटेक्स के संबंध में पॉज़िक्स के समान हो सकता है)
माइकएम

अपने पिछले कथन को अर्हता प्राप्त करने के लिए: यदि मुझे अपने स्वयं के म्यूटेक्स के लिए एक अच्छा परीक्षण-सूट के साथ आना चाहिए, तो मैं सबसे अधिक संभावना है इसे खुला स्रोत बनाऊंगा, लेकिन मुझे बहुत संदेह है कि यह एक वास्तविक बनने के लिए गुणवत्ता या पूरी तरह से पर्याप्त होगा। "अनुपालन" बेंचमार्क - यह कुछ ऐसा हो सकता है जो वैसे भी स्थैतिक विश्लेषण द्वारा बेहतर तरीके से नियंत्रित किया जाता है।
माइक एमबी

मैं आपसे सहमत हूं कि म्यूटेक्स प्राइमेटिक्स के लिए एक अच्छा टेस्ट सूट नहीं है। मुझे लगता है कि यह तीन अलग-अलग स्रोतों से आना चाहिए: समवर्ती प्रसंस्करण का सिद्धांत, एक पोसिक्स म्यूटेक्स की विशिष्टता और म्यूटेक्स का उपयोग करके व्यक्त समवर्ती एल्गोरिदम। क्या आप इससे सहमत हैं ?
हिल्टन फर्नांडिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.