proc_pid_smaps(5) File Formats Manual proc_pid_smaps(5)

/proc/pid/smaps - میزان مصرف حافظه برای هر یک از نگاشت‌های فرایند

/proc/pid/smaps (از لینوکس 2.6.14)
این پرونده میزان مصرف حافظه را برای هر یک از نگاشت‌های فرایند نشان می‌دهد. (دستور pmap(1) اطلاعات مشابهی را به شکلی نمایش می‌دهد که ممکن است برای تجزیه آسان‌تر باشد.) برای هر نگاشت، مجموعه‌ای از خطوط مانند نمونه زیر وجود دارد:

00400000-0048a000 r-xp 00000000 fd:03 960637       /bin/bash
Size:                552 kB
Rss:                 460 kB
Pss:                 100 kB
Shared_Clean:        452 kB
Shared_Dirty:          0 kB
Private_Clean:         8 kB
Private_Dirty:         0 kB
Referenced:          460 kB
Anonymous:             0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB
ProtectionKey:         0
VmFlags: rd ex mr mw me dw

نخستین خط از این خطوط، همان اطلاعاتی را نشان می‌دهد که برای نگاشت در /proc/pid/maps نمایش داده می‌شود. خطوط بعدی اندازه نگاشت، مقدار نگاشتی که در حال حاضر در حافظه RAM مقیم است ("Rss")، سهم متناسب فرایند از این نگاشت ("Pss")، تعداد صفحه‌های اشتراکی تمیز (clean) و کثیف (dirty) در نگاشت، و تعداد صفحه‌های اختصاصی تمیز و کثیف در نگاشت را نشان می‌دهند. عبارت "Referenced" نشان‌دهنده مقدار حافظه‌ای است که در حال حاضر به عنوان ارجاع‌شده یا دسترسی‌یافته علامت‌گذاری شده است. عبارت "Anonymous" مقدار حافظه‌ای را نشان می‌دهد که به هیچ فایلی تعلق ندارد. عبارت "Swap" مشخص می‌کند چه مقدار از حافظه‌ای که می‌توانست ناشناس باشد استفاده شده، اما به فضای مبادله (swap) منتقل شده است.
خط "KernelPageSize" (در دسترس از لینوکس 2.6.29) اندازه صفحه‌ای است که هسته برای پشتیبانی از ناحیه حافظه مجازی استفاده می‌کند. این اندازه در بیشتر موارد با اندازه‌ای که توسط MMU استفاده می‌شود یکسان است. با این حال، یک مثال نقض در هسته‌های PPC64 رخ می‌دهد که در آن هسته‌ای با اندازه صفحه پایه 64 کیلوبایت ممکن است در پردازنده‌های قدیمی‌تر همچنان از صفحه‌های 4 کیلوبایتی برای MMU استفاده کند. جهت تمایز این دو مشخصه، خط "MMUPageSize" (همچنین در دسترس از لینوکس 2.6.29) اندازه صفحه مورد استفاده توسط MMU را گزارش می‌کند.
خط "Locked" مشخص می‌کند که آیا نگاشت در حافظه قفل شده است یا خیر.
خط "ProtectionKey" (در دسترس از لینوکس 4.9، فقط روی x86) شامل کلید محافظت از حافظه مرتبط با ناحیه حافظه مجازی است (ببینید pkeys(7)). این مدخل تنها در صورتی وجود دارد که هسته با گزینه پیکربندی CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS ساخته شده باشد (از لینوکس 4.6).
خط "VmFlags" (در دسترس از لینوکس 3.8) نشان‌دهنده پرچم‌های هسته مرتبط با ناحیه حافظه مجازی است که با استفاده از کدهای دو حرفی زیر کدگذاری شده‌اند:
rd قابل خواندن
wr قابل نوشتن
ex قابل اجرا
sh اشتراکی
mr امکان خواندن
mw امکان نوشتن
me امکان اجرا
ms امکان اشتراک‌گذاری
gd رشد بخش پشته به سمت پایین
pf محدوده PFN خالص
dw غیرفعال بودن نوشتن در پرونده نگاشت‌شده
lo صفحه‌ها در حافظه قفل شده‌اند
io ناحیه ورودی/خروجی نگاشت‌شده در حافظه
sr ارائه توصیه خواندن ترتیبی
rr ارائه توصیه خواندن تصادفی
dc عدم کپی ناحیه هنگام انشعاب (fork)
de عدم گسترش ناحیه هنگام نگاشت مجدد
ac ناحیه قابل محاسبه و حسابرسی است (accountable)
nr فضای swap برای ناحیه رزرو نشده است
ht ناحیه از صفحه‌های بزرگ tlb استفاده می‌کند
sf انجام خطاهای صفحه به‌صورت همگام (از لینوکس 4.15)
nl نگاشت غیرخطی (حذف‌شده در لینوکس 4.0)
ar پرچم مختص معماری
wf پاک‌سازی هنگام انشعاب (از لینوکس 4.14)
dd عدم گنجاندن ناحیه در core dump
sd پرچم soft-dirty (از لینوکس 3.13)
mm ناحیه نگاشت ترکیبی
hg پرچم توصیه صفحه بزرگ
nh پرچم توصیه عدم استفاده از صفحه بزرگ
mg پرچم توصیه ادغام‌پذیری
um ردیابی صفحه‌های ناموجود در userfaultfd (از لینوکس 4.3)
uw ردیابی صفحه‌های wprotect در userfaultfd (از لینوکس 4.3)
پرونده /proc/pid/smaps تنها در صورتی وجود دارد که گزینه پیکربندی هسته CONFIG_PROC_PAGE_MONITOR فعال باشد.

proc(5)

2026-02-08 Linux man-pages 6.19