तापमान सीमा से पहले मल्टी थ्रेडेड सीपीयू इंटेंसिव थ्रू सीपीयू तरीका


21

मैंने एक बहुत ही सीपीयू गहन थ्रेडेड कार्य लिखा है जो मेरे 2012 मैकबुक प्रो क्वाड कोर पर अपेक्षित रूप से काम करता है। मैं इसे 20 थ्रेड्स के साथ ढीला कर देता हूं और तापमान लगभग 100 ° C तक हो जाता है क्योंकि न्यूनतम थ्रॉटलिंग के साथ Intel Power Gadget से मापा जाता है।

एक ही कार्यक्रम और डेटा फ़ाइलों को मेरे 2016 13 "मैकबुक प्रो पर ले जाएं, एक दोहरे कोर मशीन के साथ और इसे शुरू करें, मैं उम्मीद करूंगा कि यह 3.3-3.4 गीगाहर्ट्ज तक भी रहेगा जब तक कि तापमान 100 डिग्री सेल्सियस के निशान के पास नहीं हो जाता। शीर्ष कमांड 350% पर कार्य दिखाता है (2 कोर प्रत्येक ड्यूल थ्रेडेड), लेकिन सीपीयू फ्रीक्वेंसी 1.6-1-8 गीगाहर्ट्ज तक कट जाती है, जबकि तापमान केवल 60 डिग्री सेल्सियस या इतने पर शांत मृत प्रशंसकों के साथ होता है। अगर मैं 4 अलग शुरू करता हूं। सिंगल थ्रेडेड सीपीयू कार्य, मशीन 3.3-3.4 गीगाहर्ट्ज तक रखने के साथ ही अपेक्षित व्यवहार करती है जब तक कि यह 100 डिग्री सेल्सियस तक हिट न हो जाए और प्रशंसकों को क्रेंक न मिले। सवाल यह है कि मेरा सीपीयू क्यों थ्रॉटल किया जा रहा है?

दोनों मशीनें आज तक हैं और जीसीसी के समान संस्करण चला रही हैं। अगर मैं भी काम करने वाली मशीन से बाइनरी लेता हूं और 2016 मैक पर डाल देता हूं, तो यह एक ही समस्या है।

अगर मैं 3 या 4 सीपीयू सिंगल थ्रेड चलाता हूं तो मशीन पूरी गति से चल रही है, तो थ्रेडेड प्रोग्राम शुरू करें, यह फ्रीक्वेंसी को भी धीमा कर देता है।

दोनों मशीनों में 16 जीबी की रैम है।

संपादित करें

कोड के साथ खेलने के बाद, मुझे संदेह है कि यह तब थ्रॉटल हो रहा है जब कोई कार्य बहुत सारे थ्रेड बनाता है। इस कार्यक्रम में, मैं अपने द्वारा पढ़े गए प्रत्येक रिकॉर्ड को लेता हूं और इसके लिए एक सूत्र बनाता हूं। मैंने केवल 20 या इतने ही थ्रेड्स को एक बार में जाने दिया ताकि कोई भी समय 21 थ्रेड्स से अधिक न हो, लेकिन 30 मिनट से अधिक समय तक संसाधित करने के लिए 14,400,000 रिकॉर्ड हैं या तो प्रत्येक रिकॉर्ड को एक अलग थ्रेड द्वारा संसाधित किया जाएगा।

मैंने एक तुच्छ preadread प्रोग्राम बनाया जो CPU समय को चूसता था और उनमें से 10 को चलाता था। समस्या लैपटॉप ने चलाया और बिना मुद्दों के 95 सी तक गर्म हो गया।

मुझे लगता है कि मैं उन्हें नष्ट करने और उन्हें फिर से शुरू करने के बजाय एक ही धागे का पुन: उपयोग करने के लिए अपने कोड को फिर से लिखूंगा।

अद्यतन 5/13/17

कई घंटों के काम के बाद, यह अब केवल एन थ्रेड बनाता है और बस उन्हें पुन: उपयोग करता है, इससे मदद नहीं मिली। सीपीयू तापमान के अलावा, इस मशीन के कारण क्या होगा?


1
मुझे यह सवाल बहुत पसंद है! कैसे एक अलग विशिष्ट multithreaded कार्य चलाने के बारे में? मैं सुझाव दूंगा कि एक ffmpeg टास्क (1080p या 4K वीडियो पर), यह सुनिश्चित करने के लिए कि यह सभी उपलब्ध सीपीयू संसाधनों का उपयोग करता है) और देखें कि क्या यह नीचे गिरता है। यह समस्या को या तो कम कर सकता है: उस मशीन में आपका प्रोग्राम या उस मशीन पर सभी मल्टीथ्रेडेड प्रोग्राम
NoahL

1
यदि मैं सिनेबेंच आर 15 बेंचमार्क चलाता हूं, तो यह थ्रेडेड कार्यों का उपयोग करता है और अपेक्षा के अनुसार चलता है, तापमान लगभग 100C तक हो जाता है और प्रशंसक ऊपर आते हैं। Intel Power गैजेट दिखाता है कि CPU आवृत्ति अभी भी 3.3Ghz के पास है। तो यह एक हार्डवेयर मुद्दे की तरह नहीं दिखता है। सभी कोड कुछ भी नहीं के साथ सी कोड है कि फैंसी p_threads और न्यूनतम म्यूटेक्स ताले का उपयोग कर रहे हैं। कार्यक्रम ज्यादातर डीएनए अनुक्रम प्रसंस्करण है जिसमें एक धागा 16 गीगा डेटा की तरह खींचता है और भारी संख्या में क्रंचिंग के लिए इसे अलग-अलग थ्रेड में भेजता है।
अंकतालिका

1
ऐसा लगता है कि अन्य कार्यक्रम उस छत से टकरा सकते हैं जिसका आप लक्ष्य बना रहे हैं? यदि समस्या अकेले आपके विशेष कोड से है, तो हमें उस कोड पर अधिक जानकारी की आवश्यकता हो सकती है। यद्यपि, आपका डेटा कहाँ संसाधित किया जाना है? बाहरी? कितना काम करता है kernel_task रिपोर्ट? अन्य अस्थायी सेंसर?
LаngLаngС

1
आपके CPU में 8 तार्किक कोर हैं, 4 नहीं, इसलिए 4 धागे 50% कुल CPU उपयोग के रूप में दिखाई देंगे। मुझे आश्चर्य है कि अगर यह आपके सिस्टम के लोड अनुमान को प्रभावित करता है।
सूदो

मुझे नहीं पता कि आप परेशानी से गुजरना चाहते हैं, लेकिन आप डिबग कर्नेल के साथ कर्नेल स्तर पर डिबगिंग का प्रयास कर सकते हैं। यदि आप ऐप्पल देव साइट पर डाउनलोड में अधिक क्लिक करते हैं तो आप इसे प्राप्त कर सकते हैं।
user3052786

जवाबों:


1

यह एक लॉन्गशॉट हो सकता है, लेकिन शायद 2012 और 2016 के सीपीयू पैकेजों के बीच सिंगल-कोर परफॉर्मेंस और / या कैश परफॉर्मेंस में अंतर इतना बड़ा है कि कोर डेटा-स्टैवर्ड हो जाते हैं और थ्रॉटलिंग तक बंद हो जाते हैं जब तक कि वे फिर से काम करने में सक्षम नहीं होते?

मैं यह अनुमान लगा रहा हूं क्योंकि आप इंगित करते हैं कि सभी एकल-थ्रेड प्रक्रियाएं सभी कोर पर पूर्ण गति से चल सकती हैं, और एक साधारण मल्टी-थ्रेड प्रोग्राम सभी कोर पर पूर्ण गति चला सकता है।

इससे मुझे लगता है कि आपके वास्तविक वर्कलोड बनाम टेस्ट मल्टी-थ्रेड वर्कलोड के प्रोग्राम डिज़ाइन में कुछ ऐसा है जो सीपीयू को काम नहीं करने देता है


0

कर्नेल एक्सटेंशन / सिस्टम / सीमाएँ / एक्स्टेंशन / एपलेकपिप्लिट रिकॉर्डर.टेक्स्ट बहुत सारे तापमान और सीपीयू सुरक्षा उपायों को नियंत्रित करता है। यह आपके सिस्टम पर पहले से ही, स्पष्ट रूप से संकलित है, लेकिन यह https://opensource.apple.com पर उपलब्ध हो सकता है (मुझे यह नहीं मिल सकता है, लेकिन मैंने केवल इसे एक त्वरित रूप दिया)। यह मुझे आश्चर्य नहीं होगा अगर Apple CPU क्षमता पर बहुत रूढ़िवादी सेटिंग्स था।


3
AFAIK Apple kexts ओपन सोर्स नहीं हैं। (अजीब तरह से?) इस पर जानकारी के लिए सबसे अच्छा संसाधन Hackintoshing समुदाय है क्योंकि ड्राइवरों को इंजेक्ट करने की आवश्यकता है।
JMY1000

बिल्कुल अजीब नहीं! टिंकरर सबसे अच्छी सलाह देते हैं क्योंकि वे पहले से बहुत अधिक जानते हैं कि उन्हें पहले हाथ लगाना चाहिए। रूढ़िवादी सीपीयू सेटिंग्स के लिए के रूप में, याद रखें कि एमबीपी में फट प्रदर्शन के लिए एक महान हीट सिंक है, लेकिन निरंतर चक्र के लिए इतना बढ़िया नहीं है। यह काफी संभावना है कि यह समस्या ऐप्पल के नीचे है पूर्व-खाली करने के लिए अपने पैरों को खाना पकाने से रखना चाहते हैं। मैंने 2012MBP के साथ उस पर कुछ मुकदमों के बारे में सुना।
user1901982

0

जब भी ओएस थ्रेड्स को अप्रत्याशित के रूप में पहचानता है और नियंत्रण से बाहर होता है तो यह हार्डवेयर और सिस्टम स्थिरता बनाए रखने के लिए थ्रॉटल करेगा, 2012 मॉडल अलग व्यवहार करता है और सबसे खराब स्थिति में लॉक हो सकता है। मेरे लिए खराब कार्यान्वित धागा नियंत्रण, मेरी गलती के साथ हुआ। बस एक दोहरे कोर पर कई धागे नहीं चलते हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.