proc_buddyinfo(5) File Formats Manual proc_buddyinfo(5)

proc_buddyinfo - اطلاعات تکه‌تکه شدن حافظه و الگوریتم بادی

/proc/buddyinfo
این پرونده حاوی اطلاعاتی است که برای عیب‌یابی و بررسی مشکلات تکه‌تکه شدن حافظه به کار می‌رود. هر سطر با شناسه گره (Node) و نام ناحیه (Zone) شروع می‌شود که در کنار یکدیگر یک محدوده از حافظه را مشخص می‌کنند. سپس تعداد تکه‌های (Chunks) در دسترس از مرتبه‌های (Orders) مختلفی که این نواحی به آن‌ها تقسیم شده‌اند، درج می‌شود. اندازه هر مرتبه بر حسب بایت با فرمول زیر محاسبه می‌شود:

(2^order) * PAGE_SIZE

الگوریتم تخصیص‌دهنده بادی دودویی (Binary buddy allocator) درون هسته، برای پاسخ به درخواست‌های تخصیص و مقابله با تکه‌تکه شدن حافظه، یک تکه را به دو تکه با مرتبه کوچک‌تر (در نتیجه با نصف اندازه) تقسیم می‌کند یا دو تکه متوالی را در یک تکه بزرگ‌تر با مرتبه بالاتر (در نتیجه با اندازه دو برابر) ادغام می‌نماید. شماره مرتبه با شماره ستون مطابقت دارد، زمانی که شمارش از صفر آغاز شود.
برای مثال در یک سیستم x86-64:
Node 0, zone     DMA     1    1    1    0    2    1    1    0    1    1    3
Node 0, zone   DMA32    65   47    4   81   52   28   13   10    5    1  404
Node 0, zone  Normal   216   55  189  101   84   38   37   27    5    3  587
در این مثال، یک گره شامل سه ناحیه وجود دارد و ۱۱ اندازه مختلف برای تکه‌ها تعریف شده است. اگر اندازه صفحه ۴ کیلوبایت باشد، آن‌گاه نخستین ناحیه به نام DMA (در x86 نخستین ۱۶ مگابایت حافظه) دارای ۱ تکه ۴ کیلوبایتی (مرتبه ۰) در دسترس و ۳ تکه ۴ مگابایتی (مرتبه ۱۰) در دسترس است.
اگر حافظه به شدت تکه‌تکه شده باشد، شمارنده‌های مربوط به تکه‌های با مرتبه بالاتر صفر خواهند بود و تخصیص بخش‌های بزرگ و پیوسته با شکست مواجه خواهد شد.
اطلاعات بیشتر درباره این نواحی را می‌توان در /proc/zoneinfo یافت.

proc(5)

2024-05-02 Linux man-pages 6.9.1