سؤال يبطئ تصنيف Gradle لأسفل الكمبيوتر الخاص بي


الاستجابة سيئة حقا على أوبونتو مثبتة حديثا 14.04 LTS.

إليك مواصفات جهاز الكمبيوتر المحمول الخاص بي:

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

وعندما يتم تجميع غرابيل ، يبطئ نظامي بالكامل إلى الزحف ، تبدأ مقاطع الفيديو بالتأخر ، ومتأخرات التمرير في المتصفح ... إلخ.

وينطبق نفس الأمر عند حدوث تحديث الصفحة في نافذة أخرى في Chrome ، وبينما يتم التحديث ، يبدأ فيديو HTML5 في علامة تبويب أخرى بالتلعثم.

كيف يمكنني اصلاح هذا؟

في ما يلي بعض السجلات:

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

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

$ top -b - http://paste.ubuntu.com/7493974/


4
2018-05-20 16:25


الأصل


ما هي بطاقة الفيديو لديك؟ يمكن أيضا أن تكون لاسلكية. يمكنك أيضًا تجربة k / x / lubuntu. - Panther
انها بطاقة إنتل HD4400 متكامل. هل حقا بيئة سطح المكتب؟ لأنه يبدو أكثر مثل مشكلة جدولة وحدة المعالجة المركزية. بلدي ماك بوك الهواء أبطأ بكثير ولكن لدي طريقة أفضل استجابة التطبيق على ذلك. - nubela
على بطاقة إنتل الخاصة بي (الأقدم) أجد كدي و XFCE أكثر استجابة ، يمكنك تشغيل USB مباشر وتجربته. - Panther
هل يمكن أن تقدم بعض السجلات في حين تأخر occure. ضعها على paste.ubuntu. top -b -n 2، iostat -x 1 5، vmstat -a 1 5 - c0rp
hi @ c0rp ، تمت إضافة السجلات حسب طلبها. - nubela


الأجوبة:


أنا لا أعمل مع الغرابيل. ولكن كما أفهمها هي مشكلة شائعة.

هذه روابط:

موضوع مفيد جدا

مشكلة استخدام وحدة المعالجة المركزية

أداء مجداف 

جوجل

ما يمكنك القيام به هو تغيير جدولة العملية. للعملية التي تقوم بتشغيل IDE أو gradle.

لطيف

جميل هو برنامج موجود على نظام التشغيل يونكس ويونيكس مثل   كما لينكس. فإنه يعين مباشرة إلى استدعاء kernel الذي يحمل نفس الاسم. جميل   تستخدم لاستدعاء أداة أو برنامج نصي shell مع أولوية معينة ،   مما يعطي العملية وقتًا أطول أو أقل من العمليات الأخرى. ا   إن niceness of −20 هي الأولوية الأعلى و 19 أو 20 هي الأقل   أفضلية. يتم توريث niceness الافتراضي للعمليات من   عملية الوالدين ، عادة 0.

للتغيير اللطف يمكنك استخدام renice أمر

sudo renice <PID> <niceness> 

اقرأ هذه للمزيد من المعلومات

لبناء الوقت ، يمكنك ضبط الجودة لمدة 15-20 سنة. بعد بناء تغييرها إلى القيمة الافتراضية ، عادة ما تكون 0.

cpulimit

التثبت cpulimit. sudo 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.

للحد من استخدام CPU للعملية المسماة firefox إلى 30٪ ، أدخل:

# cpulimit -e firefox -l 30

للحد من استخدام CPU لهذه العملية إلى 30٪ باستخدام PID الخاص بها ، أدخل:

# cpulimit -p 1313 -l 30

يجب تشغيل cpulimit على الأقل مع نفس المستخدم تشغيل التحكم   معالجة. ولكن من الأفضل بكثير إذا قمت بتشغيل cpulimit كجذر ، بالترتيب   الحصول على أولوية أعلى والتحكم أكثر دقة.

إذا كان جهازك يحتوي على معالج واحد ، فيمكنك تقييد النسبة من 0٪   إلى 100 ٪ ، مما يعني أنه إذا قمت بتعيين على سبيل المثال 50 ٪ ، فإن العملية الخاصة بك   لا يمكن استخدام أكثر من 500 مللي ثانية من وقت وحدة المعالجة المركزية لكل ثانية. ولكن إذا كان لديك   الجهاز لديه أربعة معالجات ، قد تختلف النسبة المئوية من 0 ٪ إلى 400 ٪ ، لذلك   ضبط الحد إلى 200 ٪ يعني عدم استخدام أكثر من نصف   الطاقة المتاحة. في أي حال ، فإن النسبة هي نفسها ما أنت   نرى عند تشغيل أعلى.

استخدام Cpulimit

كيفية الحد من استخدام وحدة المعالجة المركزية

chrt

يمكنك أيضا تغيير جدولة العملية أو PID.

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