בתחילת השנה אנחנו מדברים כאן בבלוג על כלי השירות Earlyoom, אשר, לאחר דיון של מפתחי פדורה, התקבלה לשימוש בכלי השירות הזה בפדורה 32 כתהליך רקע, שבאמצעותו הם מתכוונים לשפר את תגובת המערכת לחוסר זיכרון ובכך למנוע קריסות.
עכשיו כמה שבועות אחר כך ו לאחר שמונה חודשי פיתוח הוכרז על שחרור הגרסה החדשה של Earlyoom 1.4.
למי שלא מכיר את הפרויקט, עליו לדעת זאת זהו שרשור רקע הבודק מעת לעת את כמות הזיכרון הזמינה (MemAvailable, SwapFree) ומנסה להגיב למצב של זיכרון בשלב מוקדם. קוד הפרויקט כתוב ב- C ומופץ ברישיון MIT.
אם כמות הזיכרון הזמינה נמוכה יותר מהערך שצוין, חדר מוקדם יסתיים בכוח (על ידי שליחת SIGTERM או SIGKILL) תהליך התהליך שצורך הכי הרבה זיכרון (בעל הערך הגבוה ביותר / proc / * / oom_score), מבלי לנקות מאגרי מערכת במערכת ולהפריע למנהל ההחלפה (OOM (מחוץ לזיכרון) במצבי גרעין במצב נמוך) הזיכרון כבר הגיע לערכים קריטיים, ובדרך כלל בשלב זה המערכת כבר לא מגיבה לפעולות משתמש).
Earlyoom תומך בשליחת הודעות על תהליך מאולץ לשולחן העבודה (באמצעות שליחת התראות), ומספק גם את היכולת להגדיר כללים שבהם ניתן להשתמש בביטויים רגולריים כדי לציין את שמות התהליכים שהסיום שלהם עדיף (האפשרות "–העדיף") או עצירות שיש להימנע מהן (אפשרות למנוע זאת).
מה חדש ב- Earlyoom 1.4?
בגרסה החדשה הזו מודגשים כמה שינויים, מתוכם מוזכר שאני עובד על ניקוי הקוד וזה גם בגלל טעינה מאוחרת של תכונות התהליך, הלוגיקה של בחירת תהליכים להשלמה מואצת ב -50%.
חוץ מזה גם איפוס הרשאות השורש יושם בקובץ הכונן "systemd earlyoom.service". שינוי זה שובר את היכולת לקבל התראות GUI.
כדי להפעיל מחדש את התראות ה- GUI, מוצע להחזיר זכויות שורש על ידי ביטול התייחסות לשורה «DynamicUser = נכון".
אף על פי שהשבתת root אינה מאפשרת לקבל מידע על צריכת זיכרון בעת הרכבה / proc במצב hidepid = 1 או hidepid = 2.
משאר השינויים הבולטים:
- ה- UID של התהליך שהסתיים בא לידי ביטוי ברישום, בנוסף ל- PID ולשם התהליך.
- נוסף סימון יומן ניפוי באגים בהיר.
- במידת האפשר, נעשה שימוש בהכרזת המשתנים המקומיים לבלוקים.
- תצורה נוספה PATH_LEN כדי לעקוף את הערך של גודל המאגר המוטבע בקוד.
- אפשרות התחלה cppcheck אם זמין.
- הוסיף מבחן ביצועים "להכין ספסל".
- חבילת בדיקות מורחבת (ערוך בדיקה).
בסופו של דבר אם אתה רוצה לדעת יותר על זה על מהדורה זו, תוכל לבדוק את הפרטים ב הקישור הבא.
כיצד להתקין earlyoom ב- Linux?
למי שמעוניין להיות מסוגל לנסות כלי עזר זה, הוא יכול לעשות זאת על ידי ביצוע ההוראות שאנו חולקים להלן.
Earlyoom ממוקם במאגרים של חלק מההפצות של לינוקס פופולרי, אז, במקרה של דביאן, אובונטו ונגזרות כלשהן מבין אלה, ההתקנה יכולה להיעשות בפקודה הבאה:
sudo apt install earlyoom
ברגע שזה נעשה, כעת יש להפעיל את השירות באמצעות הפקודה:
sudo systemctl enable earlyoom
וזה מתחיל ב:
sudo systemctl start earlyoom
במקרה של פדורה ו- RHEL 8 עם EPEL, ניתן להתקין אותו עם הפקודה הבאה:
sudo dnf install earlyoom
והשירות מופעל באמצעות:
sudo systemctl enable --now earlyoom
לבסוף, במקרה של Arch Linux או כל נגזרת אחרת לכך, ההתקנה מתבצעת עם הפקודה הבאה:
sudo pacman -S earlyoom
והשירות מופעל באמצעות:
sudo systemctl enable --now earlyoom
לכל שאר הפצות לינוקס, הם יכולים לבצע את ההתקנה על ידי קומפילציה של קוד השירות.
כדי להשיג את הקוד אנו יכולים לעשות זאת באמצעות הפקודה הבאה:
git clone https://github.com/rfjakob/earlyoom.git
cd earlyoom
אנו ממשיכים להרכיב עם:
make
ואנחנו מתקינים (אם יש לך Systemd):
sudo make install
או למי שאין לו Systemd:
sudo make install-initscript
וכדי להשתמש בשירות אתה עושה זאת באמצעות:
./earlyoom
פרט של הכותרת: «אובדן זיכרון»
תודה על התצפית. לחיים! 🙂
אני חושב שיש פרט עם ההתקנה במנג'רו (נגזר מקשת). לא מצאתי את החבילה במאגרים הרגילים.
אז ההתקנה צריכה להיות דרך yourt.
yaourt earlyoom
¡Saludos!
ב- Arch, זה נמצא במאגר הקהילה שיש להפעיל אותו ב- pacman.conf. באותו אופן כפי שאתה מזכיר זה גם ב- AUR.
תודה על התצפית 😀
שלום, אני רוצה ששירות זה יתחיל ב- MXLinux בכל פעם שאני מפעיל את המחשב מבלי להכניס את הפקודה למסוף, איך אוכל לעשות זאת?