खोजक इतनी कम प्रक्रिया प्राथमिकता पर क्यों चलता है?


13

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

चल रहा है ps -Alपता चलता है कि, जाहिरा तौर पर डिफ़ॉल्ट रूप से, Dock, Finder, और SystemUIServerसब पर एक प्राथमिकता अब तक तो userland अनुप्रयोगों कम चलाने के लिए लग रहे हैं। जबकि उपयोगकर्ता अनुप्रयोगों में आमतौर पर 33 की प्राथमिकता होती है, डॉक, फाइंडर आदि की प्राथमिकता 53 होती है।

अंतिम परिणाम, कोई भी प्रोसेसर गहन कार्य है जो पूरी तरह से UI को बंद कर देता है, और सिस्टम को अनुपयोगी बना देता है जब तक कि यह समाप्त न हो जाए।

वैसे भी, renice -20 -p <prid>उन्हें यूजर्स यूआई के बाकी हिस्सों की तरह ही प्राथमिकता देते हैं और परिणाम यूआई के लिए 1-3 सेकंड (!) के लिए माउस क्लिक के रूप में सरल रूप से कुछ का जवाब देने में नहीं होता है।

थाड ने कहा, मेरे दो सवाल हैं:
क्या कोई कारण है कि मुझे इस तरह के खोजकर्ता की थ्रेड प्राथमिकता में बदलाव नहीं करना चाहिए?
क्या प्राथमिकता में बदलाव करने का कोई तरीका लगातार है, जैसे कि यह रिबूट के बाद इस तरह से रहता है।


9
मैंने आमतौर पर पाया है कि यह डिस्क i / o है, सीपीयू लोड नहीं है, जिससे मेरा सिस्टम क्रॉल हो जाता है। खोजक और आपके द्वारा उल्लिखित अन्य एप्लिकेशन शायद पढ़ते / लिखते हुए प्रतीक्षा कर रहे हैं जब वे जवाब नहीं देते दिखाई देते हैं। मेरे पास वास्तव में इसका समाधान नहीं है (एक SSD की तरह एक तेज़ डिस्क प्राप्त करने के अलावा), हालांकि, इसलिए मैं इसे उत्तर के बजाय टिप्पणी के रूप में पोस्ट करने जा रहा हूं।
काइल क्रोनिन

5
मैंने भी ऐसा सोचा होगा। हालांकि, धागा प्राथमिकता बदल रहा करता यूआई व्यवहार है, जो बनाता है मुझे लगता है कि या तो धागा प्राथमिकता भी आईओ कतार से निपटने को प्रभावित करता है, या यह वास्तव में सीपीयू सीमित है प्रभावित करते हैं।
फेक नेम

1
एक उदाहरण के रूप में, गोदी प्राथमिकता के रूप में स्टॉक के रूप में छोड़ दिया गया, माउस को उस पर ले जाने के लिए प्रतिक्रिया करने में 5-10 सेकंड लगते हैं। इसके साथ मैन्युअल रूप से समान 33 तक सब कुछ टकराता है, यह तुरंत प्रतिक्रिया करता है (हालांकि थोड़ा तड़का हुआ है)।
नकली नाम

3
अद्यतन: अच्छा आदेश सीपीयू और आईओ कतार दोनों को प्रभावित करता है : insanelymac.com/forum/lofiversion/index.php/t164156.html
नकली नाम

2
समस्या स्मृति / डिस्क स्थान सीमा नहीं है। मैं ऐसी प्रक्रियाएं चला रहा हूं जो जानबूझकर उन सभी संसाधनों को ले सकती हैं जो वे कर सकते हैं। एक समुचित परिवर्तनशील शेड्यूलर को सिस्टम को पूरी तरह उत्तरदायी (या कम से कम केवल एक मामूली प्रदर्शन के कारण) रहने देना चाहिए , इसके बावजूद कि प्राथमिकता सही है। हालांकि, कुछ पागल कारणों के लिए, UI का सबसे महत्वपूर्ण पहलू संभवतया सबसे कम प्राथमिकता पर सेट किया गया है, और इसलिए पूरे सिस्टम को मूल रूप से अनुपयोगी बनाया गया है।
नकली नाम

जवाबों:


1

मुझे यकीन नहीं है कि ऐप्पल के खुद के डेवलपर्स में से कोई भी इस सवाल का जवाब देने में सक्षम नहीं होगा, फाइंडर के आंतरिक रहस्य उनके डोमेन हैं। यदि आपको लगता है कि UI के साथ कुछ ध्यान देने योग्य अंतराल समस्याएं हैं, तो आप इसके बारे में Apple को एक बग रिपोर्ट प्रस्तुत करना चाह सकते हैं।

चीजों की आवाज़ से न्याय करना (जानबूझकर सभी संसाधनों को लेने की प्रक्रिया) यह स्मृति प्रबंधन के लिए एक किनारे का मामला है। मुझे बफ़रिंग सहायता के रूप में लगभग 10-20% संसाधनों के बिना एक सिस्टम को अपने सर्वश्रेष्ठ प्रदर्शन के लिए अभी तक देखना है।

बस उत्सुक, क्या कर रहे हैं इन प्रक्रियाओं आप चला रहे हैं?


अजगर, मुख्य रूप से। कुछ भारी पुनरावर्ती संगणना करना।
नकली नाम

इसके अलावा, बैच इमेज प्रोसेसिंग
नकली नाम

यह एक CPU समस्या की तुलना में RAM उपयोग समस्या की तरह लगता है। मैंने यूआई को पीछे किए बिना सीपीयू के टन का उपयोग करने की तरह कुछ किया है, लेकिन जब कुछ सभी रैम को खाने लगते हैं तो यूआई एक प्रमुख हिट लेता है। इन प्रक्रियाओं के दौरान आपके RAM का उपयोग क्या है?
टिम

1

"मैं एपर्चर में एक बड़ा आयात चला रहा हूं, और इससे मेरा सिस्टम पूरी तरह से क्रॉल हो रहा है।"

तब एपर्चर (शायद) वह प्रोग्राम है जो आप चाहते हैं renice, अन्य नहीं। आपके द्वारा उल्लिखित प्रक्रियाओं को औसत उपयोगकर्ता अनुप्रयोगों के सापेक्ष ट्यून किया जाता है, ताकि उपयोगकर्ता एप्लिकेशन उच्च प्राथमिकता प्राप्त करें और उत्तरदायी रहें, क्योंकि वे वही हैं जो उपयोगकर्ता ज्यादातर समय का उपयोग करते हैं।

आपका मामला कम-आम है, जहां एक एप्लिकेशन दीर्घकालिक, गहन कार्य कर रहा है और उपयोगकर्ता उसी समय कुछ और करना चाहता है। डिफ़ॉल्ट रूप से, यह उपयोगकर्ता के अनुप्रयोग हैं जिन्हें प्राथमिकता मिलती है ताकि इन गहन कार्यों को अधिक संसाधन मिलें और जल्द ही पूरा हो जाए।

प्रत्येक उपयोगकर्ता के लिए जो शिकायत करता है कि अन्य एप्लिकेशन पर्याप्त रूप से उत्तरदायी नहीं हैं, एक अन्य उपयोगकर्ता शिकायत कर रहा है कि सक्रिय एप्लिकेशन पर्याप्त तेजी से नहीं चल रहा है।

यदि आप एक लंबा, संसाधन गहन कार्य चला रहे हैं और आप जानते हैं कि आप इसे कम प्राथमिकता देना चाहते हैं, तो आप कार्य पूरा होने के दौरान अन्य प्रक्रियाओं का उपयोग कर सकते हैं - और यदि गहन कार्य में अधिक समय लगता है तो आपको कोई आपत्ति नहीं है - आपको प्राथमिकता को कम करना चाहिए गहन कार्य को चलाने वाली प्रक्रिया।

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


पृष्ठभूमि के कार्य, परिभाषा के अनुसार , अग्रगामी कार्यों में कम प्राथमिकता पर होने चाहिए। सबसे महत्वपूर्ण अग्रभूमि कार्य पूरे सिस्टम में जीयूआई, जो मोटे तौर पर खोजक प्रक्रिया है। मैं reniceचीजों द्वारा प्रक्रिया-दर-प्रक्रिया के आधार पर थ्रेड्स को पैच करने में सक्षम हो सकता हूं , लेकिन वास्तविक समस्या खोजकर्ता प्राथमिकता है।
नकली नाम

उदाहरण के लिए, विंडोज 7 में, जिसके चारों ओर सबसे संवेदनशील जीयूआई में से एक है, विंडो-मैनेजर स्वचालित रूप से "उच्च" की प्राथमिकता के साथ चलता है। अब, इसका मतलब है कि इस प्रक्रिया के दुर्व्यवहार के कारण प्रणाली पिछड़ जाएगी, लेकिन इसका मतलब यह भी है कि दुर्व्यवहार कहीं और नहीं होगा । मेरे पास हर सीपीयू कोर के 100% का उपयोग करने के लिए क्रैश हुआ है, और विंडोज़ पर यूआई अभी भी बेहद संवेदनशील है।
नकली नाम

1
@ फ़ेक नाम: खोजक अपने स्वयं के विंडोज़ (फ़ोल्डर और डेस्कटॉप आइकन) के अलावा यूआई के किसी भी पहलू को नहीं संभालता है। (यह खोजक को छोड़ने के लिए संभव है; यह वास्तव में चला गया है, और बाकी सब अभी भी काम करता है।) SystemUIServer केवल मेनू बार दाईं ओर की वस्तुओं और "बेज़ेल" ओवरले (वॉल्यूम / चमक, आदि) को संभालता है। विंडो रेंडरिंग और इवेंट्स पूरी तरह से WindowServer प्रक्रियाओं द्वारा नियंत्रित किए जाते हैं।
केविन रीड

@Fake नाम, स्पष्टीकरण के एक बिंदु के रूप में: reniceप्रक्रियाओं पर काम करता है, न कि थ्रेड्स पर।
क्रिस पेज

1

मैंने एक ऐसा ही सवाल किया है - बहुत पहले, सर्वरफॉल्ट पर - हालांकि विशेष रूप से फ़ाइंडर पर ध्यान केंद्रित नहीं किया गया था (हालाँकि मुझे यह पता चलता है कि फ़ाइंडर असहिष्णु रूप से धीमा है, साथ ही साथ)। मैक ओएस एक्स (या आईओएस, आदि) पर एक प्रक्रिया को स्थायी रूप से "त्याग" करने के लिए कैसे? ज्यादा जानकारी वहां नहीं दी गई थी - ऐसा करने का एक अच्छा तरीका है ... या ऐसा क्यों है?

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

इसके अलावा, यदि आप वास्तव में अपना सिर विस्फोट करना चाहते हैं ..

sudo sysctl list और यह पैंडोरा के बॉक्स, उर्फ ​​की कुंजी है /etc/sysctl.conf

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