slabinfo(5) File Formats Manual slabinfo(5)

slabinfo - آمار تخصیشدهنده حافظه اسلب هسته (Kernel Slab Allocator)

cat /proc/slabinfo

اشیاء پرکاربرد در هسته لینوکس (مانند سرآیندهای بافر، inodeها، مدخل‌های dentry و غیره) دارای کش (cache) اختصاصی خود هستند. فایل /proc/slabinfo آمارهای مربوط به این کش‌ها را ارائه می‌دهد. خروجی (ویرایش‌شده) زیر نمونه‌ای از محتویات این فایل را نشان می‌دهد:

$ sudo cat /proc/slabinfo
slabinfo - version: 2.1
# name    <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> ...
sigqueue      100  100  160   25  1 : tunables  0  0  0 : slabdata   4   4  0
sighand_cache 355   405 2112  15  8 : tunables  0  0  0 : slabdata  27  27  0
kmalloc-8192   96   96  8192   4  8 : tunables  0  0  0 : slabdata  24  24  0
...

خط اول خروجی شامل شماره نسخه است که به برنامه‌های خواننده این فایل امکان می‌دهد تغییرات در قالب فایل را مدیریت کنند (بخش نسخه‌ها (VERSIONS) در زیر را ببینید). خط بعدی نام ستون‌ها را در خطوط باقی‌مانده فهرست می‌کند.

هر یک از خطوط باقی‌مانده اطلاعات مربوط به یک کش مشخص را نمایش می‌دهد. پس از نام کش، خروجی در هر خط سه بخش را برای هر کش نمایش می‌دهد:

•
آماره‌ها (statistics)
•
پارامترهای قابل تنظیم (tunables)
•
داده‌های اسلب (slabdata)

آماره‌ها به شرح زیر هستند:

تعداد اشیایی که در حال حاضر فعال هستند (یعنی در حال استفاده می‌باشند).
تعداد کل اشیاء تخصیص‌یافته (یعنی اشیایی که هم در حال استفاده هستند و هم آزاد).
اندازه اشیاء در این اسلب بر حسب بایت.
تعداد اشیاء ذخیره‌شده در هر اسلب.
تعداد صفحات تخصیص‌یافته برای هر اسلب.

مدخل‌های tunables در هر خط، پارامترهای قابل تنظیم را برای کش متناظر نشان می‌دهند. هنگام استفاده از تخصیص‌دهنده پیش‌فرض SLUB، هیچ پارامتر قابل تنظیمی وجود ندارد، فایل /proc/slabinfo قابل نوشتن نیست و مقدار 0 در این فیلدها نمایش داده می‌شود. هنگام استفاده از تخصیص‌دهنده قدیمی‌تر SLAB، پارامترهای قابل تنظیم برای یک کش خاص را می‌توان با نوشتن خطوطی به شکل زیر در /proc/slabinfo تنظیم کرد:


# echo 'name limit batchcount sharedfactor' > /proc/slabinfo

در اینجا، name نام کش است، و limit، batchcount و sharedfactor اعداد صحیحی هستند که مقادیر جدید را برای پارامترهای قابل تنظیم متناظر تعیین می‌کنند. مقدار limit باید یک مقدار مثبت باشد، batchcount باید یک مقدار مثبت و کوچک‌تر یا مساوی با limit باشد، و sharedfactor باید نامنفی باشد. اگر هر یک از مقادیر مشخص‌شده نامعتبر باشد، تنظیمات کش بدون تغییر باقی می‌مانند.

مدخل‌های tunables در هر خط شامل فیلدهای زیر هستند:

حداکثر تعداد اشیایی که در کش نگهداری خواهند شد.
در سامانه‌های SMP (چندپردازنده‌ای متقارن)، این مقدار مشخص‌کننده تعداد اشیایی است که هنگام پر کردن مجدد فهرست اشیاء موجود، در یک نوبت منتقل می‌شوند.
[مستندسازی خواهد شد]

مدخل‌های slabdata در هر خط شامل فیلدهای زیر هستند:

تعداد اسلب‌های فعال.
تعداد کل اسلب‌ها.
[مستندسازی خواهد شد]

توجه داشته باشید که به دلیل تراز کردن اشیاء و سربار کش اسلب، اشیاء معمولاً به‌طور فشرده درون صفحات قرار نمی‌گیرند. صفحاتی که حتی دارای یک شیء در حال استفاده باشند، در حال استفاده تلقی می‌شوند و نمی‌توان آن‌ها را آزاد کرد.

هسته‌های پیکربندی‌شده با CONFIG_DEBUG_SLAB همچنین دارای فیلدهای آماری اضافی در هر خط خواهند بود و خط اول فایل شامل رشته "(statistics)" خواهد بود. فیلدهای آماری شامل این موارد هستند: بالاترین میزان اشیاء فعال؛ تعداد دفعاتی که اشیاء تخصیص یافته‌اند؛ تعداد دفعاتی که کش گسترش یافته است (صفحات جدید اضافه شده به این کش)؛ تعداد دفعاتی که کش هرس شده است (صفحات استفاده‌نشده حذف شده از این کش)؛ و تعداد دفعاتی که در تخصیص صفحات جدید به این کش خطا رخ داده است.

فایل /proc/slabinfo اولین بار در لینوکس 2.1.23 ظاهر شد. این فایل دارای نسخه است و در طول زمان چندین نسخه با ساختارهای متفاوت از آن منتشر شده است:

1.0
در سرتاسر سری هسته لینوکس 2.2.x وجود داشت.
1.1
در سری هسته لینوکس 2.4.x وجود داشت.
1.2
قالبی که به مدت کوتاهی در سری توسعه لینوکس 2.5 وجود داشت.
2.0
در هسته‌های لینوکس 2.6.x تا و خود لینوکس 2.6.9 وجود داشت.
2.1
قالب فعلی که نخستین بار در لینوکس 2.6.10 پدیدار شد.

تنها کاربر ریشه (root) می‌تواند فایل /proc/slabinfo را بخواند و (در صورتی که هسته با CONFIG_SLAB پیکربندی شده باشد) در آن بنویسد.

مقدار کل حافظه تخصیص‌یافته به کش SLAB/SLUB در فیلد Slab از فایل /proc/meminfo نمایش داده می‌شود.

/proc/slabinfo
اطلاعات و آمارهای تخصیص‌دهنده حافظه اسلب هسته.
/proc/meminfo
اطلاعات کلی حافظه سیستم.

slabtop(1)

فایل منبع هسته Documentation/vm/slub.txt و tools/vm/slabinfo.c.

2024-05-02 Linux man-pages 6.9.1