जब यह पृष्ठभूमि में होता है, तो इलस्ट्रेटर को 2% गति तक क्यों फेंक दिया जाता है?


8

मैं नियमित रूप से Adobe Illustrator में एक .jsx स्क्रिप्ट चलाता हूं जो एक विशेष प्रारूप में फाइलों का एक गुच्छा बचाता है।

  • जबकि इलस्ट्रेटर सक्रिय ऐप है, स्क्रिप्ट को 5 फ़ाइलों पर चलाने में 23 सेकंड लगते हैं

  • जब इलस्ट्रेटर सबसे महत्वपूर्ण ऐप नहीं है, तो 5 फाइलों पर स्क्रिप्ट को चलाने में 5 मिनट से अधिक समय लगता है

  • एक्टिविटी मॉनिटर के अनुसार , इलस्ट्रेटर सीपीयू के लगभग 75% का उपयोग करता है जब अग्रभूमि में होता है, लेकिन पृष्ठभूमि में होने पर इसे 2% से कम तक फेंक दिया जाता है ।

  • एक्टिविटी मॉनिटर के अनुसार, ऐप नैप का इस्तेमाल नहीं किया जा रहा है

ऐसा क्यों हो रहा है, और क्या इसे बदलने का कोई तरीका है?

मैं इलस्ट्रेटर की प्रतीक्षा करते हुए अन्य कार्यों को करने में सक्षम होना चाहूंगा। जैसा कि यह खड़ा है, मैं इलस्ट्रेटर को अग्रभूमि में रखने के लिए बाध्य हूं।

कुछ चीजें जो मैंने कोशिश की हैं : मुझे पता था कि

sudo sysctl debug.lowpri_throttle_enabled=0

टाइम मशीन बैकअप में तेजी लाने के लिए काम किया है, इसलिए मैं हालांकि इस मामले में मदद कर सकता हूं। इसका कोई असर नहीं हुआ

मैंने ऐप नैप को अक्षम करने का भी प्रयास किया:

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

इसका कोई असर नहीं हुआ

मैंने TinkerTool की कोशिश की , लेकिन मेरा मानना ​​है कि यह lowpri_throttle_enabled सेटिंग को बदलने के लिए सिर्फ एक GUI है । इसका कोई असर नहीं हुआ

जवाबों:


6

यह एक Adobe मुद्दा होना प्रतीत होता है; विशेष रूप से, AI के लिए कोड-आधार बहु-थ्रेडेड नहीं है।

मैं एडोब फोरम में एक चर्चा खोजने में सक्षम था जो आपके सटीक मुद्दे को संबोधित करता है - सीपीयू पर इलस्ट्रेटेड मल्टी थ्रेडेड बनाएं

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

जोर मेरा

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

ऐसा क्यों है

आम तौर पर, पृष्ठभूमि में आवेदन "रोक" दिए जाते हैं - तकनीकी रूप से, उन्हें कम प्राथमिकता दी जाती है । इसका मतलब यह है कि जब तक सीपीयू के पास कुछ और आदेशों को निष्पादित करने का अवसर होता है, तब तक निष्पादन बंद हो जाता है; आमतौर पर एक IO लाने के दौरान। इस प्रक्रिया को प्रबंधित करने को "सीपीयू शेड्यूलिंग" कहा जाता है और यह आपके लिए कुछ हार्डवेयर हैंडल है - एप्लिकेशन को इसे अनुमति देना है (त्याग नियंत्रण)।

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

एप्लिकेशन "मल्टी-थ्रेड सक्षम" होने के कारण हार्डवेयर को सीपीयू समय को प्रबंधित करने और शेड्यूल करने की अनुमति मिलती है और इसमें अधिक सीपीयू है जिसे आवंटित किया जा सकता है, पृष्ठभूमि की नौकरियों को काम पाने के लिए अधिक संसाधन मिलते हैं।


1
क्या आप संक्षेप में बता सकते हैं कि एक गैर-बहु-थ्रेडेड एप्लिकेशन पृष्ठभूमि में धीमा क्यों होगा? मेरी कल्पना का प्रस्ताव है: एक समय में एन थ्रेड चल रहे हैं, और मैक स्वचालित रूप से "मुख्य" उपयोगकर्ता-सामना करने वाले धागे पर अपने 85% संसाधनों का उपयोग करता है और अन्य सभी थ्रेड्स के लिए 15% का विभाजन होता है। मुझे इस बारे में कुछ नहीं पता, मैं इसे बना रहा हूं।
एंड्रयू स्विफ्ट

1
आम तौर पर, सिंगल थ्रेडेड ऐप्स को बैकग्राउंड में "पॉज़" किया जाता है और अग्रभूमि में "रन" किया जाता है। पृष्ठभूमि में रहते हुए एक ऐप को जीवित रखने के लिए, यह सीपीयू को पल-पल "प्रदूषित" करेगा और कुछ कार्यों को करने के लिए कॉल करेगा (आपकी फ़ाइल सेविंग, उदाहरण के लिए)। यह "se CPU प्रति आवंटित" के बारे में नहीं है। मंचों को पढ़ने से, 8 और 16 कोर मैक प्रोस वाले लोग केवल एक कोर का उपयोग करते हुए देख रहे हैं जब एआई को चलाने का अर्थ है कि यह केवल पूर्ण संसाधनों का लाभ नहीं उठा रहा है।
एलन

1
यदि आप इस विवरण के साथ अपना उत्तर अपडेट करना चाहते हैं, तो मुझे इसे सही मानकर खुशी होगी।
एंड्रयू स्विफ्ट

1
@ एलन वाह! मुझे लगता है कि Adobe Illustrator बहु सूत्रण का समर्थन नहीं करता है कभी नहीं होगा! मेरे लिए यह बहु-सूत्रण के लिए एक संभावित उम्मीदवार लगता है। तब फिर से, एक्सेल (एक और स्पष्ट उम्मीदवार) के साथ मल्टी-थ्रेडिंग का समर्थन करने के लिए माइक्रोसॉफ्ट को एक लंबा समय लगा, और अब भी इसका कार्यान्वयन बहुत अच्छा नहीं है। इसमें कोई संदेह नहीं है कि समय के साथ-साथ अधिक से अधिक ऐप इसका समर्थन करेंगे।
Monomeeth

1
@ मोनोमेथ - मैं सहमत हूं। मैं विश्वास नहीं कर सकता था कि एआई अब तक देव वक्र के पीछे था। एक बात जो मैंने फोरम में पढ़ी, वह थी उपयोगकर्ताओं को विलाप करना कि CC अनिवार्य रूप से Adobe को राजस्व एकत्र करने और उत्पाद को ठीक न करने की अनुमति देगा। Apple अपने स्वयं के CPU में जाने और 32bit ऐप्स के लिए समर्थन को मारने के साथ, Adobe चीजों को ठीक करने के लिए मजबूर हो सकता है।
एलन

0

इस उत्तर से है Mordy गोल्डिंग , उत्पाद प्रबंधक एडोब इलस्ट्रेटर के लिए (2001-2004), पर Quora :

वेक्टर ग्राफिक्स के अपने फायदे और नुकसान हैं। यह, दुख की बात है, डाउनसाइड्स में से एक है। ऐसा इसलिए है क्योंकि वेक्टर ग्राफिक्स एक रेखीय स्टैकिंग क्रम में तैयार किए गए हैं।

एक सरल उदाहरण लें - एक एकल आयत के साथ एक परत लें। उस लेयर को 100 बार डुप्लिकेट करें। भले ही केवल ऊपरी परत दिखाई दे रही है, लेकिन इलस्ट्रेटर नीचे की सबसे परत से प्रत्येक आयत को ऊपर की ओर खींचता है। इलस्ट्रेटर लेयर 50 को तब तक नहीं खींच सकता जब तक कि पिछले 49 काम न हो जाएं। यह फ़ोटोशॉप के विपरीत है जो कि केवल उन पिक्सों से संबंधित है जो अंततः दिखाई देते हैं।

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

हालाँकि, इलस्ट्रेटर में, प्रत्येक ऑब्जेक्ट को उस क्रम में खींचा जाता है जो स्टैकिंग क्रम में दिखाई देता है। इसलिए अगर मैं एक छवि को चार के ग्रिड में विभाजित करता हूं, तो मुझे अभी भी सभी कला वस्तु का निर्माण करना होगा, चाहे वह ग्रिड में कोई भी वस्तु क्यों न हो। मतलब सभी 4 कोर को तब तक इंतजार करना होगा जब तक कि सभी वस्तुएं प्रदान करने से पहले तैयार नहीं हो जाती।

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

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