מתזמן המשימות של Tweak Kernel כדי לשפר את הביצועים באנדרואיד [חלק 2]

ברוך הבא בחזרה למדריך לצבוט של מתזמן ליבה נוסף של אנדרואיד. במאמר הקודם, סיקרנו כמה אפשרויות תצורת מתזמן המשימות הבסיסיות, שניתן לכוונן ידנית כדי להגביר את הביצועים בכל סוג של מכשיר אנדרואיד. במצב כבר לא בדקת את המאמר הזה, אנו מציעים בחום לעשות זאת לפני שתמשיך, מכיוון שהוא כולל מידע מועיל להבנה טובה בהרבה בדיוק כיצד מתזמן המשימות באמת עובד, כמו גם בדיוק כיצד לשנות את מתזמן המשימות של גרעינים.

מתזמן המשימות של גרעין לצבוט

מלבד הפרמטרים הבסיסיים שנדונו במאמר הקודם, מתזמן המשימות של לינוקס מיישם כמה תכונות מיוחדות שמנסות לשפר את התפלגות ההוגנת של כוח העיבוד. תכונות אלה אינן יוצרות את אותן התוצאות בדיוק בכל המערכות כמו גם במקרי שימוש, כך שניתן יהיה להפעיל אותן או להושבתן בזמן ריצה. הם מוצעים עם Debugfs של הגרעין. עם זאת, לא כל הגרעינים אורזים תמיכה בתכונות Debugfs של Tweaking Shaduters. אתה יכול לגלות אם הגרעין שלך תומך בשינוי תכונות אלה על ידי כניסה לעמידה בפקודה בתוך אפליקציית מסוף (כסופר -סופר):

CAT/SYS/KERNEL/DEBUG/Sched_Features
אם אתה מקבל פלט כמו הדברים הבאים, הגרעין שלך תומך בשינוי תכונות באגים בזמן ריצה:

אם אתה מקבל פלט שגיאה “אין נתונים או ספרייה”, אתה יכול לנסות להתקין את Debugfs של הגרעין, במצב זה מוצע אולם לא מורכב ב- Boot:

Mount -T Debugfs None/Sys/kernel/Debug
אם פקודה זו אינה יוצרת שגיאה, אתה יכול לנסות להעביר שוב את הפקודה הראשונה.

החלפת תכונת ניפוי מתזמן

כדי לאפשר תכונת ניפוי מתזמן, אתה פשוט דרישה לחבר את שמו בקובץ Sched_Features. לדוגמה:

הד gentle_fair_slee
כדי להשבית תכונה, עליכם גם לחבר את שמו בתוך אותו הקובץ בדיוק, אולם עם “no_” מלפנים. לדוגמה:

הד no_gengle_fair_slee

אל תחמיץ
רעיונות לניהול RAM של אנדרואיד כמו גם טריקים

תכונות ניפוי מתזמן טיפוסיות ביותר

לא מובטח כי גרעין מסוים יתמוך בכל תכונות מתזמן המשימות שנדונו בהמשך. התמיכה בתכונות משתנה בין גרסאות גרעינים כמו גם בין יישומי גאדג’ט. כל התכונות הנתמכות הן אלה הכלולות בפלט הפקודה ‘CAT/SYS/KERNEL/DEBUG/Sched_Features’. תכונות שמתחילות ב”לא_ “הן אלה הנתמכות עם זאת מושבתות כרגע.

Gentle_fair_sleepers

פונקציה זו מנסה למזער את זמן הריצה של הישנים (תהליכים הנוטים לישון זמן רב). כתוצאה מכך, יותר זמן ריצה מופץ למשימות פעילות. אנשים מסוימים מדווחים כי השבתת פונקציה זו עשויה לשפר את ההיענות במכשירים נמוכים.

Affine_WakeUps

שים משימה שמתעוררת באותה מעבד בדיוק כמו המשימה שהעיר אותה. זה מניח שהמשימה החדשה תעבוד על אותם נתונים בדיוק בזיכרון כמו הקודמת. סידורו באותו מעבד בדיוק ישפר את יישוב המטמון (קרא למטה למידע נוסף על יישוב מטמון).

Rt_runtime_share

אנו דורשים כמה משימות עמוקות יותר בהבנה להבנת תכונה זו: ב- Linux, ישנן סדרי עדיפויות שונים של סידור משימות. דאגת הסדר של המשימה מגדירה בדיוק עד כמה חשוב המשימה הזו כמו גם בדיוק כמה משאבים יקבלו מהמתזמן. הרבה משימות פועלות בעדיפות של Show_other (sched_normal על גרעינים חדשים יותר). סדרי עדיפויות אחרים הם sched_batch, sched_rr, sched_fifo כמו גם show_deadline. שלושת העדיפויות האחרונות הללו הן סדרי עדיפויות בזמן אמת, שנוצרו למשימות הדרישה לרוץ במהירות האפשרית כמו גם ברגע שהן נוצרות.

מתזמן המשימות מקצה לכל מעבד שני פרמטרים מיוחדים: RT_RUNTIME כמו גם RT_PERIOD. RT_PERIOD היא תקופת הסידור השווה לרוחב הפס של 100% מעבד. RT_RUNTIME הוא הזמן בו כל מעבד מפעיל רק משימות בזמן אמת. כל שאר המשימות פועלות לזמן [RT_PERIOD – RT_RUNTIME]. בדרך כלל, מתזמן המשימות של הגרעין מספק 95% מהזמן של מעבד למשימות בזמן אמת כמו גם 5% לכל האחרים.

RT_RUNTIME_SHARE מאפשר ל- CPU להגיש משימה בזמן אמת עד 100% מהזמן, על ידי לווה RT_RUNTIME ממעבדים אחרים. מעבדים שמלווים RT_RUNTIME יכולים אז להריץ משימות שאינן אמיתיות למשך זמן רב יותר. כמה מעצבי גרעינים מותאמים אישית מבטלים את הפונקציה הזו כברירת מחדל, מכיוון שהיא יכולה לגרום למעבד שאינו מסוגל לשרת משימות שאינן אמיתיות מסודרות עליו בקפדנות כמו גם להפחית את הביצועים.

Next_buddy

באופן כללי ב- Linux, כאשר משימה מתעוררת, היא מקדימה (= לוקח את המיקום של) את המשימה שפועלת לפני המעבד (קדימה של השכמה). Next_buddy מטפל במצב כאשר המשימה המתעוררת אינה גורמת לקיום. כאשר Next_buddy מופעל, המשימה שרק התעוררה תפעל באירוע המסדר הבא. פונקציה זו גם משפרת את יישוב המטמון.

חייב לקרוא
HackBench – גלה את גרעין הביצועים הטובים ביותר עבור אנדרואיד

Last_buddy

Wnull