הגבלת צריכת המעבד והזיכרון של יישום
-
מעבד
להגביל זמן מעבד אפשר בכמה דרכים, נראה לי שהכי קל יהיה לכתוב קובץ שירות systemd עבור השרת ולהוסיף בתוכו הגדרה:
[Service] CPUQuota=10%
https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#CPUQuota=
זכרון
(וכמובן בלי שיפגע בתהליכים שאני מנסה להריץ, רק שיעשה אותם יותר לאט)
נראה לי שיש לך אי הבנה,
אם תוכנה תבקש זכרון ממערכת ההפעלה והיא לא תקבל אותה, בד"כ התוכנה תקרוס במקרה הגרוע או שתזרוק חריגה שתטופל איפשהו בקוד במקרה הטוב אבל בכל מקרה הפונקציה נקטעה, היא לא תמשיך בצליעה.
אם תוכנה (שאתה כתבת) משתמשת ביותר זכרון ממה שתכננת, צריך להבין למה היא מקצה את הזכרון הזה, ולשנות את הקוד בצורה שהיא לא תצטרך להקצות כל כך זכרון, או לפחות בצורה שהיא תוכל לשחרר את הזכרון יותר מהר.בחזרה לשאלתך, (כלומר אם אתה עדיין מעוניין להגביל את הזכרון של התהליך),
אפשר לעשות את זה באמצעות bash על ידי הפקודה (המובנית)ulimit -v
:
או בתוך קובץ systemdhttps://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#MemoryAccounting=
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Process Properties -
@nigun אמר בהגבלת צריכת המעבד והזיכרון של יישום:
להגביל אותו שלא יתפוס יותר מאחוז מסויים מהמעבד
במחשבה שנייה, אני לא חושב שזה נכון להגביל את זמן ה-CPU שאתה נותן לתהליך. אם אתה לא רוצה שהתהליך יגזול מזמן העיבוד של תהליכים אחרים, יותר טוב לשנות את העדיפות של התהליך על ידי פקודת
nice
.