PROC_PID_OOM_ADJ(5) فایلهای پیکربندی PROC_PID_OOM_ADJ(5)

/proc/pid/oom_adj, /proc/pid/oom_score_adj - تنظیم امتیاز و اولویت کشتن فرایند در شرایط کمبود حافظه (OOM)

پروندههای /proc/[pid]/oom_adj و /proc/[pid]/oom_score_adj جهت تنظیم و اعمال ضریب تصحیح بر روی الگوریتم تخمین نامناسببودن فرایند (badness heuristic) توسط نابودکننده کمبود حافظه هسته (OOM-killer) استفاده میشوند.

/proc/pid/oom_score_adj (از لینوکس 2.6.36)
از این پرونده می‌توان برای تنظیم الگوریتم تخمین نامناسب‌بودن (badness heuristic) که جهت انتخاب فرایند مورد نظر برای نابودی در شرایط کمبود حافظه استفاده می‌شود، بهره برد.
الگوریتم تخمین نامناسب‌بودن، مقداری از ۰ (هرگز کشته نشود) تا ۱۰۰۰ (همیشه کشته شود) را به هر تسک کاندید تخصیص می‌دهد تا فرایند هدف برای نابودی مشخص گردد. این مقادیر تقریباً متناسب با نسبتی از حافظه مجاز در دسترس فرایند برای تخصیص هستند که بر پایه تخمینی از مصرف حافظه اصلی و فضای تعویض (swap) کنونی آن محاسبه می‌شود. برای نمونه، اگر یک تسک از تمام حافظه مجاز خود استفاده کند، امتیاز نامناسب‌بودن آن ۱۰۰۰ خواهد بود. اگر از نیمی از حافظه مجاز خود استفاده کند، امتیازش ۵۰۰ خواهد بود.
عامل دیگری نیز در محاسبه امتیاز نامناسب‌بودن لحاظ می‌شود: به فرایندهای کاربر ریشه (root) ۳٪ حافظه اضافی نسبت به سایر تسک‌ها تعلق می‌گیرد.
میزان حافظه «مجاز» به زمینه‌ای بستگی دارد که نابودکننده OOM در آن فراخوانی شده است. اگر فراخوانی به دلیل اتمام حافظه تخصیص‌یافته به cpuset تسک مربوطه باشد، حافظه مجاز برابر با مجموعه گره‌های حافظه اختصاص‌یافته به آن cpuset خواهد بود (ببینید: cpuset(7)). اگر ناشی از اتمام حافظه گره(های) mempolicy باشد، حافظه مجاز بیانگر مجموعه گره‌های mempolicy است. اگر ناشی از رسیدن به محدودیت حافظه (یا سقف swap) باشد، حافظه مجاز همان سقف پیکربندی‌شده است. در نهایت، اگر ناشی از اتمام حافظه کل سیستم باشد، حافظه مجاز نمایانگر کلیه منابع قابل تخصیص خواهد بود.
مقدار oom_score_adj پیش از تصمیم‌گیری برای انتخاب تسک جهت نابودی، به امتیاز نامناسب‌بودن افزوده می‌شود. مقادیر مجاز در بازه -1000 (OOM_SCORE_ADJ_MIN) تا +1000 (OOM_SCORE_ADJ_MAX) قرار دارند. این سازوکار به فضای کاربری اجازه می‌دهد تا اولویت نابودسازی OOM را کنترل کند؛ از ترجیح همیشگی نابودی یک تسک خاص گرفته تا غیرفعال‌سازی کامل نابودسازی OOM برای آن. کمترین مقدار ممکن، یعنی -1000، معادل غیرفعال‌سازی کامل نابودی توسط OOM برای آن تسک است، چرا که امتیاز نامناسب‌بودن آن همواره ۰ گزارش خواهد شد.
در نتیجه، تعیین مقدار حافظه موثر برای هر تسک توسط فضای کاربری بسیار ساده است. برای نمونه، تنظیم مقدار oom_score_adj بر روی +500، تقریباً معادل آن است که به سایر تسک‌هایی که منابع یکسانی از سیستم، cpuset، mempolicy یا کنترل‌کننده حافظه را به اشتراک دارند، اجازه دهیم حداقل ۵۰٪ حافظه بیشتری مصرف کنند. از سوی دیگر، مقدار -500 تقریباً معادل تخفیف دادن ۵۰٪ از حافظه مجاز تسک در محاسبه امتیاز منفی علیه آن فرایند است.
جهت سازگاری با نسخه‌های پیشین هسته، پرونده /proc/pid/oom_adj همچنان می‌تواند برای تنظیم امتیاز نامناسب‌بودن مورد استفاده قرار گیرد. مقدار آن به صورت خطی با oom_score_adj مقیاس‌بندی (اسکیل) می‌شود.
نوشتن در /proc/pid/oom_score_adj یا /proc/pid/oom_adj مقدار پرونده دیگر را با مقدار مقیاس‌بندی‌شده متناظر آن به‌روزرسانی می‌کند.
برنامه choom(1) یک رابط خط فرمانی برای تنظیم مقدار oom_score_adj یک فرایند در حال اجرا یا دستوری که به‌تازگی اجرا می‌شود، فراهم می‌کند.

/proc/pid/oom_adj (از لینوکس 2.6.11)
از این پرونده می‌توان برای تنظیم امتیازی که جهت انتخاب فرایند مورد نظر برای نابودی در وضعیت کمبود حافظه (OOM) به کار می‌رود، استفاده کرد. هسته از این مقدار برای عملیات شیفت بیتی (bit-shift) بر روی مقدار oom_score فرایند بهره می‌برد: مقادیر معتبر در بازه -16 تا +15 هستند، به علاوه مقدار ویژه -17 که نابودسازی توسط OOM را برای این فرایند به طور کامل غیرفعال می‌کند. امتیاز مثبت، احتمال کشته شدن فرایند توسط نابودکننده OOM را افزایش می‌دهد و امتیاز منفی این احتمال را کاهش می‌دهد.
مقدار پیش‌فرض این پرونده 0 است؛ فرایندهای جدید تنظیمات oom_adj والد خود را به ارث می‌برند. یک فرایند برای به‌روزرسانی این پرونده باید دارای مجوز و دسترسی‌های ویژه (CAP_SYS_RESOURCE) باشد، گرچه هر فرایند همواره می‌تواند مقدار oom_adj خود را افزایش دهد (از لینوکس 2.6.20).
از نسخه 2.6.36 لینوکس، استفاده از این پرونده منسوخ شد و به نفع /proc/pid/oom_score_adj کنار گذاشته شد و در نهایت در لینوکس 3.7 به طور کامل حذف گردید.

proc(5), proc_pid_oom_score(5)

مه ۲۰۲۵ man-pages