/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
فعال باشد.