सवाल ग्रैडल संकलन मेरे कंप्यूटर को धीमा कर देता है


एक नए स्थापित उबंटू 14.04 एलटीएस पर प्रतिक्रिया वास्तव में खराब है।

मेरे लैपटॉप की चश्मा यहां दी गई है:

Quadcore Intel i7-4600U CPU @ 2.10GHz
12GB Ram
1TB Samsung EVO SSD

और जब ग्रेडल संकलन कर रहा है, तो मेरी पूरी प्रणाली क्रॉल में धीमा हो जाती है, वीडियो स्टटरिंग शुरू होता है, ब्राउजर स्क्रॉलिंग लग ... आदि

वही होता है जब क्रोम में किसी अन्य विंडो में पृष्ठ रीफ्रेश होता है, और जब यह रीफ्रेश होता है, तो दूसरे टैब में HTML5 वीडियो स्टटरिंग शुरू होता है।

मैं इसे कैसे ठीक करूं?

यहां कुछ लॉग दिए गए हैं:

$ vmstat -a 1 5 - http://paste.ubuntu.com/7493966/

$ iostat -x 1 5 - http://paste.ubuntu.com/7493970/

$ शीर्ष-बी - http://paste.ubuntu.com/7493974/


4
2018-05-20 16:25


मूल


आपके पास कौनसा वीडियो कार्ड है? वायरलेस भी हो सकता है। आप के / एक्स / लुबंटू भी कोशिश कर सकते हैं। - Panther
यह एकीकृत इंटेल एचडी 4400 कार्ड है। क्या यह वास्तव में डेस्कटॉप वातावरण है? क्योंकि यह एक सीपीयू शेड्यूलर मुद्दे की तरह लगता है। मेरी मैकबुक एयर इतनी धीमी है लेकिन मेरे पास इस पर बेहतर एप्लीकेशन प्रतिक्रिया है। - nubela
मेरे (पुराने) इंटेल कार्ड पर मुझे लगता है कि केडीई और एक्सएफसीई दोनों अधिक प्रतिक्रियाशील हैं।, आप एक लाइव यूएसबी बूट कर सकते हैं और इसे आजमा सकते हैं। - Panther
क्या आप कुछ देर के दौरान कुछ लॉग प्रदान कर सकते हैं। इसे पेस्ट पर रखो .ubuntu। top -b -n 2, iostat -x 1 5, vmstat -a 1 5 - c0rp
हाय @ c0rp, आपके द्वारा अनुरोध किए गए लॉग जोड़े गए। - nubela


जवाब:


मैं धीरे-धीरे काम नहीं करता हूं। लेकिन जैसा कि मैं समझता हूं कि यह आम समस्या है।

यहां एक लिंक है:

बहुत उपयोगी विषय

सीपीयू उपयोग समस्या

ग्रैडल प्रदर्शन 

गूगल

आप क्या कर सकते हैं प्रक्रिया प्रक्रिया शेड्यूलिंग है। ऐसी प्रक्रिया के लिए जो आईडीई या ग्रेडल चलाती है।

अच्छा

अच्छा यूनिक्स और यूनिक्स जैसे ऑपरेटिंग सिस्टम पर एक प्रोग्राम मिला है   लिनक्स के रूप में यह सीधे उसी नाम के कर्नेल कॉल पर मैप करता है। अच्छा है   एक विशेष प्राथमिकता के साथ उपयोगिता या खोल स्क्रिप्ट का आह्वान करने के लिए प्रयोग किया जाता है,   इस प्रकार प्रक्रिया को अन्य प्रक्रियाओं की तुलना में कम या ज्यादा CPU समय देना। ए   -20 की अच्छीता सर्वोच्च प्राथमिकता है और 1 9 या 20 सबसे कम है   प्राथमिकता। प्रक्रियाओं के लिए डिफ़ॉल्ट निपुणता विरासत में मिली है   माता-पिता की प्रक्रिया, आमतौर पर 0।

बदलने के लिए सुंदरता आप उपयोग कर सकते हैं renice आदेश

sudo renice <PID> <niceness> 

पढ़ना इस अधिक जानकारी के लिए

समय के निर्माण के लिए आप 15-20 के लिए अच्छीता सेट कर सकते हैं। निर्माण के बाद इसे डिफ़ॉल्ट मान में बदलें, आमतौर पर यह 0 है।

cpulimit

इंस्टॉल करें cpulimitsudo apt-get install cpulimit

-p : Process PID.
-e : Process name.
-l : percentage of CPU allowed from 0 to 100.
-P: absolute path name of the executable program file.

30% तक फ़ायरफ़ॉक्स नामक प्रक्रिया के सीपीयू उपयोग को सीमित करने के लिए, दर्ज करें:

# cpulimit -e firefox -l 30

प्रक्रिया के सीपीयू उपयोग को अपने पीआईडी ​​का उपयोग करके 30% तक सीमित करने के लिए, दर्ज करें:

# cpulimit -p 1313 -l 30

cpulimit कम से कम उसी उपयोगकर्ता के साथ नियंत्रित चल रहा है चलाने के लिए चलाना चाहिए   प्रक्रिया। लेकिन अगर आप रूट के रूप में cpulimit को रूट के रूप में चलाते हैं तो यह बेहतर होता है   उच्च प्राथमिकता और अधिक सटीक नियंत्रण प्राप्त करने के लिए।

अगर आपकी मशीन में एक प्रोसेसर है तो आप प्रतिशत को 0% से सीमित कर सकते हैं   100% तक, जिसका अर्थ है कि यदि आप उदाहरण के लिए 50%, अपनी प्रक्रिया निर्धारित करते हैं   प्रत्येक सेकेंड के लिए 500 से अधिक एमपीयू का उपयोग नहीं कर सकते हैं। लेकिन अगर आपका   मशीन में चार प्रोसेसर हैं, प्रतिशत 0% से 400% तक भिन्न हो सकता है, इसलिए   200% तक सीमा निर्धारित करने का मतलब आधे से अधिक का उपयोग नहीं करना है   उपलब्ध बिजली किसी भी मामले में, प्रतिशत आप के समान ही है   देखें कि आप कब दौड़ते हैं।

Cululimit उपयोग

सीपीयू उपयोग को सीमित कैसे करें

chrt

आप प्रक्रिया शेड्यूलर या पीआईडी ​​भी बदल सकते हैं।

SCHED_FIFO
Scheduling policy designed for special time-critical applications. It uses the First In-First Out scheduling algorithm.

SCHED_BATCH
Scheduling policy designed for CPU-intensive tasks.

SCHED_IDLE
Scheduling policy intended for very low prioritized tasks.

SCHED_OTHER
Default Linux time-sharing scheduling policy used by the majority of processes.

SCHED_RR
Similar to SCHED_FIFO, but uses the Round Robin scheduling algorithm.

सबसे अधिक अगर उबंटू में प्रक्रिया SCHED_OTHER हैं

शेड्यूलिंग नीति के लिए प्राथमिकता मान खोजें

$ chrt -m
SCHED_OTHER min/max priority    : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority   : 1/99
SCHED_BATCH min/max priority    : 0/0
SCHED_IDLE min/max priority : 0/0

प्रक्रिया करने के लिए SCHED_IDLE सेट करें

$ chrt -i -p 0 PID

या आप प्राथमिकता SCHED_OTHER बदल सकते हैं

$ chrt -o -p 1 PID

कैसे

दूसरा रास्ता

इसके अलावा आप ग्रेडल के लिए थ्रेड की संख्या को कम करने का प्रयास कर सकते हैं। आप के बारे में पढ़ सकते हैं यह यहाँ। जैसा कि मैंने देखा है कि इसमें यह विकल्प हैं:

./gradlew -PtaskThreads=2

इसके अलावा आप स्मृति उपयोग को कम करने का प्रयास कर सकते हैं:

GRADLE_OPTS=-Mmx512m

कोट फ़ॉर्म बहुत उपयोगी विषय

--parallel-threads only applies to project parallelization.

For android tasks that are running in parallel, we always create as many threads as possible. For slower machine (or with low ram) this is not great. We should allow control on that.

Possible though:
./gradlew assemble -PandroidThread=3

Studio would have to allow configuring and sending this (it should also let you configure --parallel-threads if it doesn't already).

Long term gradle will have a thread pool shared across all level of parallelization (multi-projects. inside a project, inside a task) so this will become obsolete but it would be good to do now.

4
2018-05-21 18:20