के तहत CGEventPost का कमजोर प्रदर्शन हमने क्वार्ट्ज घटनाओं के साथ एक प्रदर्शन समस्या पर ठोकर खाई है, अधिक विशेष रूप से CGEventPost: भारी GPU लोड CGEventPost के दौरान ब्लॉक कर सकते हैं। हमने a small benchmark application to demonstrate the issue बनाया है। यह एप्लिकेशन केवल एक लूप है जो ईवेंट बनाता है, पोस्ट करता है और रिलीज़ करता है।GPU लोड
नीचे आप एप्लिकेशन चलाने के परिणाम देख सकते हैं। पहला रन निष्क्रिय प्रणाली पर है। दूसरा रन फुरमार्क (जीपीयू तनाव परीक्षण) के साथ डायल के साथ जितना संभव हो उतना क्रैंक किया गया है।
- इनर कब तक भीतरी पाश, लेता है मूल रूप से बस, बनाने पोस्टिंग और क्वार्ट्ज घटनाक्रम के साथ एक घटना को रिहा है।
- बाहरी यह है कि हमारा कार्यक्रम कितने समय तक जागने का इंतजार कर रहा है (नींद)। हमारे सोने के समय के करीब होना चाहिए, लेकिन यदि सिस्टम दबाव में है तो इसमें देरी हो सकती है।
- पोस्ट यह है कि ईवेंट पोस्ट कितनी देर तक लेता है।
18:58:01.683 EventPerformance[4946:707] Measurements: (outer should be close to 10)
18:58:01.684 EventPerformance[4946:707] inner (ms): 0.04, outer (ms): 11.02, CGEventPost (ms): 0.03
18:58:01.684 EventPerformance[4946:707] inner (ms): 0.04, outer (ms): 11.02, CGEventPost (ms): 0.03
18:58:01.685 EventPerformance[4946:707] inner (ms): 0.07, outer (ms): 10.26, CGEventPost (ms): 0.03
18:58:01.685 EventPerformance[4946:707] inner (ms): 0.06, outer (ms): 10.85, CGEventPost (ms): 0.05
18:58:01.686 EventPerformance[4946:707] inner (ms): 0.07, outer (ms): 10.41, CGEventPost (ms): 0.04
18:58:01.686 EventPerformance[4946:707] inner (ms): 0.04, outer (ms): 10.39, CGEventPost (ms): 0.03
18:58:01.686 EventPerformance[4946:707] inner (ms): 0.05, outer (ms): 11.02, CGEventPost (ms): 0.03
18:58:01.687 EventPerformance[4946:707] inner (ms): 0.03, outer (ms): 10.67, CGEventPost (ms): 0.03
18:58:01.687 EventPerformance[4946:707] inner (ms): 0.08, outer (ms): 10.09, CGEventPost (ms): 0.05
18:58:01.688 EventPerformance[4946:707] Averages: (outer should be close to 10)
18:58:01.688 EventPerformance[4946:707] avg inner (ms): 0.05, avg outer (ms): 10.64, avg post (ms): 0.03
यहाँ हम देख सकते हैं कि घटना पोस्टिंग औसतन 0.03 के बारे में एमएस लेता है। ऐसा लगता है कि धागा बहुत देर तक लगभग 0.5 मिमी तक जागृत हो रहा है। CGEventPost में कोई स्पाइक्स नहीं।
19:02:02.150 EventPerformance[5241:707] Measurements: (outer should be close to 10)
19:02:02.151 EventPerformance[5241:707] inner (ms): 0.03, outer (ms): 10.23, CGEventPost (ms): 0.02
19:02:02.151 EventPerformance[5241:707] inner (ms): 0.02, outer (ms): 10.54, CGEventPost (ms): 0.02
19:02:02.151 EventPerformance[5241:707] inner (ms): 0.02, outer (ms): 11.01, CGEventPost (ms): 0.01
19:02:02.152 EventPerformance[5241:707] inner (ms): 0.02, outer (ms): 10.74, CGEventPost (ms): 0.01
19:02:02.152 EventPerformance[5241:707] inner (ms): 0.02, outer (ms): 10.20, CGEventPost (ms): 0.01
19:02:02.152 EventPerformance[5241:707] inner (ms): 10.35, outer (ms): 11.01, CGEventPost (ms): 10.35
19:02:02.152 EventPerformance[5241:707] inner (ms): 0.03, outer (ms): 10.02, CGEventPost (ms): 0.02
19:02:02.153 EventPerformance[5241:707] inner (ms): 58.90, outer (ms): 10.11, CGEventPost (ms): 58.90
19:02:02.153 EventPerformance[5241:707] inner (ms): 0.03, outer (ms): 10.12, CGEventPost (ms): 0.02
19:02:02.153 EventPerformance[5241:707] Averages: (outer should be close to 10)
19:02:02.371 EventPerformance[5241:707] avg inner (ms): 7.71, avg outer (ms): 10.44, avg post (ms): 7.71
प्रणाली भारी GPU लोड किया जा रहा है जब, एक घटना पोस्टिंग (spikes) माइक्रोसेकंड की बजाय मिलीसेकेंड ले सकते हैं। चरम जीपीयू तनाव के तहत (< 1 एफपीएस), इस मान में सेकंड लग सकते हैं। CGEventPost कभी-कभी GPU को लौटने से पहले कुछ काम खत्म करने का इंतजार कर रहा है। हमारा धागा अभी भी सामान्य रूप से कोई ध्यान देने योग्य देरी/स्पाइक्स (बाहरी) के साथ निर्धारित नहीं है।
किसी भी विचार की सराहना की जाती है।
ओपनसीएल काम की भारी मात्रा में जमा करते समय मुझे विंडोज़ में भी बुरा प्रभाव दिखाई देता है (मुझे पता है कि आप ओएसएक्स पर हैं): सभी जीपीयू ड्राइंग एक क्रॉल में धीमा हो जाती है। ऐसा लगता है कि जीपीयू के पास प्राथमिकता की कोई अवधारणा नहीं है या वेवफ़्रंट कितना पुराना है। – doug65536
यह देखने के लिए कि मंदी कहाँ हो रही है, उपकरण के साथ प्रोफाइलिंग करने का प्रयास करें। – monoxygen
आपके द्वारा चलाए गए कंप्यूटर में किस प्रकार का ग्राफिक्स कार्ड है? एकीकृत, एकीकृत + अलग, या अलग? यह देखना दिलचस्प होगा कि क्या आपको एक अलग ग्राफिक्स कार्ड कॉन्फ़िगरेशन वाले सिस्टम पर चलने वाले विभिन्न व्यवहार मिलते हैं। – monoxygen