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

/proc/pid/oom_score_adj - تنظیم امتیاز قاتل اتمام حافظه (OOM-killer)

/proc/pid/oom_score_adj (از لینوکس 2.6.36)
این فایل می‌تواند برای تنظیم روش مکاشفه‌ای نامناسبی (badness heuristic) مورد استفاده برای انتخاب فرایندی که در شرایط اتمام حافظه کشته می‌شود، به کار رود.
روش مکاشفه‌ای نامناسبی مقداری از 0 (هرگز کشته نشود) تا 1000 (همیشه کشته شود) را به هر وظیفهٔ نامزد اختصاص می‌دهد تا مشخص کند کدام فرایند هدف قرار گیرد. واحدها تقریباً نسبتی در امتداد آن دامنه از حافظهٔ مجاز است که فرایند می‌تواند از آن تخصیص دهد؛ بر پایهٔ برآوردی از مصرف فعلی حافظه و فضای معاوضه (swap) آن. برای نمونه، اگر وظیفه‌ای از تمام حافظهٔ مجاز استفاده کند، امتیاز نامناسبی آن 1000 خواهد بود. اگر از نیمی از حافظهٔ مجاز خود استفاده کند، امتیاز آن 500 خواهد بود.
یک عامل اضافی نیز در امتیاز نامناسبی لحاظ شده است: به فرایندهای ریشه (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 برای آن وظیفه است، زیرا همیشه امتیاز نامناسبی 0 را گزارش خواهد داد.
در نتیجه، برای فضای کاربری بسیار ساده است که میزان حافظهٔ مد نظر برای هر وظیفه را تعیین کند. برای نمونه، تنظیم یک مقدار 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