इंटेल i7-1065G7 अधिकतम टर्बो बूस्ट फ़्रीक्वेंसी तक नहीं पहुंचता है
मेरे पास Intel i7-1065G7 cpu वाला एक लैपटॉप है । turbostat
रिपोर्टों
35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores
(ये 4 भौतिक / 8 आभासी कोर हैं) जब मैं mpfr
सीपीयू में एक बड़े एकल-थ्रेड लोड (पीआई के साथ गणना ) को फेंकता हूं तो मैं देखता हूं कि दो कोर (शायद एक भौतिक कोर?) बिल्कुल 3500 मेगाहर्ट्ज पर चलते हैं जबकि अन्य कम होते हैं? आवृत्ति। लेकिन वे उच्च टर्बो बूस्ट आवृत्तियों तक कभी नहीं पहुंचते हैं।
अगर मैं सीपीयू कोर के कुछ को निष्क्रिय (जैसे के साथ echo 0 > /sys/devices/system/cpu/cpu[2-7]*/online
) लैपटॉप है इसी उच्च टर्बो को बढ़ावा देने आवृत्तियों तक पहुँचते हैं, बढ़े हुए प्रदर्शन में जिसके परिणामस्वरूप (एक काम है कि औसत 18.5 सेकंड पर ले लिया से पहले अब 16.8 लेता है)।
जब सभी कोर की आवश्यकता नहीं है तो मैं अपनी अधिकतम घड़ी की गति तक पहुंचने के लिए अपना नया लैपटॉप कैसे प्राप्त कर सकता हूं?
मैं Ubuntu 20.04 का उपयोग कर रहा हूँ कर्नेल 5.4.0 के साथ HP Envy x360 लैपटॉप पर।
मुझे क्या उम्मीद है: मेरे पुराने लैपटॉप पर i7-4712MQ turbostat
देता है
30 * 100.0 = 3000.0 MHz max turbo 4 active cores
30 * 100.0 = 3000.0 MHz max turbo 3 active cores
32 * 100.0 = 3200.0 MHz max turbo 2 active cores
33 * 100.0 = 3300.0 MHz max turbo 1 active cores
(यह एक 4/8 कोर मशीन भी है)। इस मशीन पर एक सिंगल-कोर लोड 3.2 गीगाहर्ट्ज़ पर दो-कोर लोड दो घड़ी के तहत, 3.3 गीगाहर्ट्ज तक एक कोर को बढ़ावा देता है।
मैंने विंडोज पर अलग-अलग सीपीयू आवृत्तियों की जांच नहीं की है, लेकिन कार्य प्रबंधक कभी-कभी 3.7GHz से अधिक आवृत्तियों को प्रदर्शित करता है।
अद्यतन: तो समस्या गायब हो गई ... मुझे पता नहीं क्यों। मैंने अनइंस्टॉल किया, linux-cloud-tools
लेकिन मुझे नहीं लगता कि इसका कारण होना चाहिए।
जवाब
आप ने लिखा...
जब मैं एक बड़ा सिंगल-थ्रेड लोड करता हूं
यदि आपका प्रोग्राम सिंगल थ्रेडेड है तो इसे अन्य थ्रेड्स पर अधिकतम आवृत्ति पर जाने की आवश्यकता नहीं है इसलिए ऐसा नहीं होता है।
आपका लिंक Intel® Core ™ i7-1065G7 प्रोसेसर के लिए है।
आपके द्वारा जोड़ा गया Intel दस्तावेज़ कहता है कि अधिकतम 3900 MHz है। आपका डेटा ऐसा प्रतीत होता है कि 3900 मेगाहर्ट्ज पर एक कोर है इसलिए मुझे नहीं पता कि आपको क्यों लगता है कि यह अधिकतम हिट नहीं हुआ। आपने इसे पोस्ट किया है ...
35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores
सामान्य तौर पर यदि रीडिंग अधिकतम आवृत्ति नहीं है क्योंकि यह या तो यह केवल रुक-रुक कर होता है तो माप केवल यह दिखाएगा कि रुक-रुक कर या अन्यथा इसे अधिकतम आवृत्ति पर होने की आवश्यकता नहीं है क्योंकि कुछ बाधाएं हैं जैसे कि IO। इसके बारे में चिंता मत करो। यदि आप एक प्रोग्राम लिखते हैं जिसमें कोई बाधा नहीं है, तो दूसरे शब्दों में, यह एक गणना बाध्य धागा है, मैं गारंटी देता हूं कि यह अधिकतम आवृत्ति पर जाएगा।
18.5 सेकेंड का बीता हुआ समय यादृच्छिक प्रभावों के कारण सार्थक नहीं हो सकता है जिसे आप निष्कर्ष निकालने के लिए उपयोग नहीं करना चाहते हैं। 200 सेकंड या उससे अधिक समय तक चलने वाली नौकरियां आपको अधिक सार्थक डेटा दे सकती हैं।
मैंने कुछ इसी तरह का अनुभव किया, एक समान सेटअप (i7-9700K CPU, Ubuntu 18.04) पर। और मुझे लगता है कि मेरी मशीन का उपयोग समान हो सकता है: यह एक डेस्कटॉप मशीन है जिसका उपयोग मैं कुछ गहन (लेकिन एकल-थ्रेड) अनुप्रयोगों को चलाने के लिए करता हूं, जबकि संभवतः एक वेब ब्राउज़र और कुछ मैसेजिंग ऐप भी खुले हैं। मुझे काम करने के लिए मूल पोस्ट के तहत टिप्पणियों में सुझाव मिला - प्रक्रियाओं के लिए सीपीयू आत्मीयता स्थापित करना। मैं taskset
इसे करता था [1]।
पहला परीक्षण (आत्मीयता सेटिंग्स में कोई बदलाव नहीं): ~ 10% उपयोग पर सभी 8 कोर 'सुस्ती'। मैं एक थ्रेड शुरू करता हूं, सीपीयू गहन कार्य। एक कोर 100% तक कूदता है, मैं सभी कोर का उपयोग करके 3.6 गीगाहर्ट्ज़ (टर्बो के बिना अधिकतम) देखता हूं i7z
।
दूसरा परीक्षण: सीपीयू कोर 0 और 1 के लिए सभी चल रही प्रक्रियाओं को प्रतिबंधित करें, इसके साथ :। अब वे 2 कोर 30-40% बैठते हैं, बाकी 0% पर (हालांकि कुछ अन्य कोर ओएस शुरू होने पर गतिविधि शुरू कर सकते हैं)। फिर उसी एकल थ्रेड को शुरू करें, सीपीयू गहन कार्य। एक कोर 100% तक कूदता है, लेकिन अब मैं इसे 4.9 गीगाहर्ट्ज़ की अधिकतम टर्बो आवृत्ति तक पहुंचता हूं। बाद में, मैंने अपने मामले में, रेंज के साथ सभी कोर का उपयोग करने के लिए आत्मीयता को वापस सेट किया ।for i in `sudo ps -aux | awk '{ print $2 }'`; do sudo taskset -a -p -c 0-1 $i; done
0-1
0-7
[1] http://manpages.ubuntu.com/manpages/focal/man1/taskset.1.html