DMSTATS(8) دستورات نگهداری سیستم (MAINTENANCE COMMANDS) DMSTATS(8)

dmstats - مدیریت آمار و ارقام نگاشتگر دستگاه (Device-Mapper)

stats command [OPTIONS]
command device_name|--major major --minor minor|-u|--uuid uuid [-v|--verbose]
clear device_name [--allprograms|--programid id] [--allregions|--regionid id]
create device_name ...|file_path ...|--alldevices [--areas nr_areas|--areasize area_size] [--bounds histogram_boundaries] [--filemap] [--follow follow_mode] [--foreground] [--nogroup] [--nomonitor] [--precise] [--start start_sector --length length|--segments] [--userdata user_data] [--programid id]
delete device_name|--alldevices [--allprograms|--programid id] [--allregions|--regionid id]
group [device_name|--alldevices] [--alias name] [--regions regions]
help [-c|-C|--columns]
list [device_name] [--allprograms|--programid id] [--area] [--group] [--region] [--histogram] [--nosuffix] [--notimesuffix] [--units units]
print [device_name] [--clear] [--allprograms|--programid id] [--allregions|--regionid id]
report [device_name] [--interval seconds] [--count count] [--units units] [--allprograms|--programid id] [--allregions|--regionid id] [--area] [--group] [--region] [--histogram] [--nosuffix] [--notimesuffix] [--units units] [-O|--sort sort_fields] [-S|--select selection]
ungroup [device_name|--alldevices] [--groupid id]
update_filemap file_path [--follow follow_mode] [--foreground] [--groupid id] [--nomonitor]

برنامه dmstats نواحی آمار ورودی/خروجی را برای دستگاه‌هایی که از گرداننده نگاشتگر دستگاه (device-mapper) استفاده می‌کنند مدیریت می‌کند. با استفاده از این ابزار می‌توان نواحی آماری را ایجاد، حذف، فهرست‌بندی و گزارش‌گیری کرد.

نخستین آرگومان dmstats یک command (دستور) است.

آرگومان دوم device_name (نام دستگاه)، uuid یا شماره‌های major و minor است.

گزینه‌های بیشتر امکان انتخاب نواحی، کنترل قالب خروجی و رفتار گزارش‌گیری را فراهم می‌کنند.

هنگامی که هیچ آرگومان دستگاهی مشخص نشود، dmstats به‌طور پیش‌فرض روی تمام دستگاه‌های نگاشتگر دستگاه موجود عمل خواهد کرد. دستورات create و delete در صورت استفاده به این شیوه، نیازمند استفاده از --alldevices هستند.

یک نام مستعار (alias) برای یک گروه مشخص می‌کند.
اگر هیچ آرگومان دستگاهی داده نشود، امکان انجام عملیات روی تمام دستگاه‌ها را هنگام ایجاد یا حذف نواحی فراهم می‌کند.
شامل کردن نواحی مربوط به تمامی شناسه‌های برنامه (program ID) برای عملیات فهرست‌بندی و گزارش‌گیری.
شامل کردن تمامی نواحی موجود برای دستوراتی که به‌طور معمول تنها یک شناسه ناحیه را می‌پذیرند.
هنگام اجرای فهرست‌بندی یا گزارش‌گیری، اشیایی از نوع محدوده (area) را در نتایج می‌گنجاند.
تعداد محدوده‌های آماری را برای ایجاد درون یک ناحیه جدید مشخص می‌کند.
اندازه محدوده‌هایی را که یک ناحیه جدید باید به آن‌ها تقسیم شود مشخص می‌کند. یک پسوند اختیاری واحدهای زیر را انتخاب می‌کند: (b) بایت، (s) سکتور، (k) کیلوبایت، (m) مگابایت، (g) گیگابایت، (t) ترابایت، (p) پتابایت، (e) اگزابایت. برای استفاده از مضارب ۱۰۰۰ (S.I.) به جای ۱۰۲۴ از حروف بزرگ استفاده کنید.
مرزهای یک هیستوگرام تاخیر را جهت ردگیری برای ناحیه به‌صورت فهرستی از مقادیر تاخیر جداشده با کاما مشخص می‌کند. مقادیر تاخیر بر حسب نانوثانیه داده می‌شوند. یک پسوند واحد اختیاری شامل ns، us، ms یا s می‌تواند پس از هر مقدار برای تعیین واحدهای نانوثانیه، میکروثانیه، میلی‌ثانیه یا ثانیه مشخص شود.
هنگام چاپ شمارنده‌های آماری، آن‌ها را نیز به‌صورت اتمیک به صفر بازنشانی می‌کند.
تعداد تکرار را برای گزارش‌های تکرارشونده مشخص می‌کند. اگر آرگومان تعداد صفر باشد، گزارش‌ها تا زمان توقف دستی ادامه می‌یابند.
هنگام اجرای فهرست‌بندی یا گزارش‌گیری، اشیایی از نوع گروه (group) را در نتایج می‌گنجاند.
به جای ایجاد نواحی روی یک دستگاه طبق گزینه‌های مشخص‌شده در خط فرمان، فایل موجود در هر آرگومان file_path را باز کرده و نواحی متناظر با مکان‌های اکستنت‌های روی دیسک تخصیص‌یافته به آن فایل(ها) را ایجاد می‌کند.
حالت دنبال کردن فایل را برای دیمن dmfilemapd(8) مشخص می‌کند. دیمن پایش نگاشت فایل می‌تواند فایل‌ها را به دو روش متمایز پایش کند: این حالت بر رفتار دیمن هنگام تغییر نام یا حذف پیوند (unlink) فایلِ تحت پایش، و همچنین شرایطی که باعث خروج دیمن می‌شوند تأثیر می‌گذارد.

آرگومان follow_mode یا "inode" برای حالت دنبال کردن بر پایه inode است، یا "path" برای حالت دنبال کردن بر پایه مسیر (follow-path).

اگر حالت follow-inode استفاده شود، دیمن فایل را باز نگه می‌دارد و به به‌روزرسانی نواحی از طریق همان توصیف‌کننده فایل ادامه می‌دهد. این بدان معناست که نگاشت، عملیات تغییر نام، جابه‌جایی (در همان فایل‌سیستم) و unlink را دنبال خواهد کرد. این حالت در صورتی مفید است که انتظار برود فایل در حین پایش جابه‌جا، تغییر نام یا unlink شود.

در حالت follow-inode، دیمن به محض اینکه متوجه شود فایل unlink شده و خود آخرین نگه‌دارنده ارجاع به آن است، خارج خواهد شد.

اگر follow-path استفاده شود، دیمن مسیر ارائه‌شده را در هر دور پایش مجدداً باز می‌کند. این بدان معناست که گروه به‌روزرسانی می‌شود تا فایل جدیدی را منعکس کند که به همان مسیر فایل اصلی منتقل شده است. این حالت برای فایل‌هایی مفید است که انتظار می‌رود از طریق unlink و rename به‌روزرسانی شوند.

در حالت follow-path، اگر فایل حذف شود و در یک بازه تحمل کوتاه جایگزین نگردد، دیمن خارج خواهد شد.

در هر دو حالت، در صورت حذف گروه تحت پایش، دیمن به‌طور خودکار خارج می‌شود.
مشخص می‌کند که دیمن dmfilemapd(8) باید در پیش‌زمینه اجرا شود. دیمن به پس‌زمینه فورک نخواهد شد و جایگزین دستور dmstats می‌شود که آن را راه‌اندازی کرده است.
گروه مورد نظر برای انجام عملیات را مشخص می‌کند.
هنگام استفاده با دستورات report و list، فیلدهای پیش‌فرضی را انتخاب می‌کند که بر داده‌های هیستوگرام تاخیر تأکید دارند.
--interval seconds
فاصله زمانی بر حسب ثانیه را میان تکرارهای متوالی برای گزارش‌های تکرارشونده مشخص می‌کند. اگر --interval مشخص شود ولی --count تعیین نگردد، گزارش‌ها تا زمان توقف دستی ادامه خواهند یافت.
طول یک ناحیه آماری جدید را بر حسب سکتور مشخص می‌کند. یک پسوند اختیاری واحدهای زیر را انتخاب می‌کند: (b) بایت، (s) سکتور، (k) کیلوبایت، (m) مگابایت، (g) گیگابایت، (t) ترابایت، (p) پتابایت، (e) اگزابایت. برای استفاده از مضارب ۱۰۰۰ (S.I.) به جای ۱۰۲۴ از حروف بزرگ استفاده کنید.
شماره major را مشخص می‌کند.
شماره minor را مشخص می‌کند.
هنگام ایجاد نواحی نگاشت‌کننده اکستنت‌های یک فایل در سیستم‌فایل، گروهی ایجاد نکرده و نام مستعاری تعیین نمی‌کند.
دیمن dmfilemapd(8) را هنگام ایجاد گروه‌های جدید نگاشت فایل غیرفعال می‌کند. به‌طور معمول، دیمن پایش نگاشت فایل نگاشتگر دستگاه dmfilemapd(8) برای هر گروه نگاشت‌شده از فایل راه‌اندازی می‌شود تا با تغییر فایل روی دیسک، مجموعه نواحی را به‌روز کند؛ استفاده از این گزینه این رفتار را غیرفعال می‌سازد.

نواحی موجود در گروه همچنان می‌توانند با دستور update_filemap یا با راه‌اندازی دستی دیمن به‌روزرسانی شوند.
پسوند اندازه خروجی را حذف می‌کند. در صورت پردازش خروجی، همراه با --units (به جز h و H) استفاده شود.
پسوند مقادیر زمانی خروجی را حذف می‌کند. مقادیر مرز هیستوگرام بر حسب نانوثانیه گزارش خواهند شد.
مشخص می‌کند کدام فیلدهای گزارش نمایش داده شوند.
تلاش برای استفاده از شمارنده‌های دارای دقت نانوثانیه هنگام ایجاد نواحی آماری جدید.
یک رشته شناسه برنامه (program ID) را مشخص می‌کند. هنگام ایجاد نواحی آماری جدید، این رشته همراه با ناحیه ذخیره می‌شود. عملیات بعدی می‌توانند یک شناسه برنامه ارائه دهند تا فقط نواحی دارای مقدار منطبق انتخاب شوند. شناسه برنامه پیش‌فرض برای نواحی تحت مدیریت dmstats برابر "dmstats" است.
هنگام اجرای فهرست‌بندی یا گزارش‌گیری، اشیایی از نوع ناحیه (region) را در نتایج می‌گنجاند.
ناحیه مورد نظر برای انجام عملیات را مشخص می‌کند.
فهرستی از نواحی را جهت گروه‌بندی مشخص می‌کند. فهرست گروه، فهرستی از شناسه‌های ناحیه جداشده با کاما است. توالی‌های پیوسته از شناسه‌ها می‌توانند به صورت یک بازه با خط فاصله بیان شوند، برای نمونه: '1–10'.
در صورت نمایش گزارش هیستوگرام، مقادیر نسبی (درصدی) را به جای تعداد مطلق نمایش می‌دهد.
هنگام استفاده با create، یک ناحیه آماری جدید برای هر تارگت (target) موجود در دستگاه(های) داده‌شده ایجاد می‌کند. این کار باعث تخصیص یک ناحیه مجزا برای هر قطعه (segment) از دستگاه می‌شود.

نواحی تازه‌ایجادشده به‌طور خودکار درون یک گروه قرار می‌گیرند مگر اینکه گزینه --nogroup داده شده باشد. هنگامی که گروه‌بندی فعال است، می‌توان یک نام مستعار گروه را با استفاده از گزینه --alias مشخص کرد.
فقط ردیف‌هایی را که با معیارهای selection مطابقت دارند نمایش می‌دهد. همه ردیف‌ها با ستون اضافی "selected" (-o selected) نمایش داده می‌شوند که اگر ردیف با selection مطابقت داشته باشد ۱ و در غیر این صورت ۰ را نشان می‌دهد. معیارهای انتخاب با مشخص کردن نام ستون‌ها و مقادیر معتبر آن‌ها با استفاده از عملگرهای مقایسه‌ای پشتیبانی‌شده تعریف می‌شوند.
خروجی را بر اساس فهرست فیلدهای ارائه‌شده مرتب می‌کند. برای مرتب‌سازی معکوس روی آن ستون، پیش از هر فیلد مرتب‌سازی از استفاده کنید.
آفست شروع یک ناحیه آماری جدید را بر حسب سکتور مشخص می‌کند. یک پسوند اختیاری واحدهای زیر را انتخاب می‌کند: (b) بایت، (s) سکتور، (k) کیلوبایت، (m) مگابایت، (g) گیگابایت، (t) ترابایت، (p) پتابایت، (e) اگزابایت. برای استفاده از مضارب ۱۰۰۰ (S.I.) به جای ۱۰۲۴ از حروف بزرگ استفاده کنید.
واحدهای نمایش را برای خروجی گزارش تنظیم می‌کند. همه اندازه‌ها در این واحدها خروجی داده می‌شوند: (h) خوانا برای انسان (human-readable)، (b) بایت، (s) سکتور، (k) کیلوبایت، (m) مگابایت، (g) گیگابایت، (t) ترابایت، (p) پتابایت، (e) اگزابایت. برای استفاده از مضارب ۱۰۰۰ (S.I.) به جای ۱۰۲۴ از حروف بزرگ استفاده کنید. همچنین می‌توان واحدهای سفارشی را مشخص کرد، مثلاً --units 3M.
داده کاربر (یک کلمه) را جهت ذخیره همراه با یک ناحیه جدید مشخص می‌کند. این مقدار به هرگونه داده کمکی داخلی (برای نمونه، اطلاعات گروه) افزوده شده و همراه با ناحیه در فیلد aux_data ارائه‌شده توسط هسته ذخیره می‌شود. فاصله خالی (whitespace) مجاز نیست.
شناسه uuid را مشخص می‌کند.
تولید خروجی با جزئیات بیشتر.

clear device_name [--allprograms|--programid id] [--allregions|--regionid id]
به هسته دستور می‌دهد شمارنده‌های آماری را برای نواحی مشخص‌شده پاک کند (به استثنای شمارنده‌های ورودی/خروجی در حال انجام [in-flight IO]).

create device_name ...|file_path ...|--alldevices [--areas nr_areas|--areasize area_size] [--bounds histogram_boundaries] [--filemap] [--follow follow_mode] [--foreground] [--nogroup] [--nomonitor] [--precise] [--start start_sector --length length|--segments] [--userdata user_data] [--programid id]
یک یا چند ناحیه آماری جدید را بر روی دستگاه(های) مشخص‌شده ایجاد می‌کند.

ناحیه کل دستگاه را در بر خواهد گرفت مگر اینکه --start و --length یا --segments داده شده باشند. گزینه‌های --start و --length امکان قرار دادن یک ناحیه با طول دلخواه در یک آفست دلخواه از دستگاه را فراهم می‌سازند. گزینه --segments باعث می‌شود برای هر هدف در جدول دستگاه نگاشتگر دستگاه متناظر، یک ناحیه جدید ایجاد شود.

در صورت استفاده از گزینه --precise دستور تلاش خواهد کرد تا با استفاده از شمارنده‌های دارای دقت نانوثانیه یک ناحیه ایجاد کند.

اگر --bounds داده شود، یک هیستوگرام تاخیر برای ناحیه جدید ردگیری خواهد شد. مرزهای دسته‌های (bins) هیستوگرام به‌صورت فهرستی از مقادیر تاخیر جداشده با کاما داده می‌شوند. یک مرز پایین ضمنی برابر صفر برای دسته اول و یک مرز بالای ضمنی برابر بی‌نهایت (یا مدت‌زمان بازه پیکربندی‌شده) برای دسته نهایی وجود دارد.

تاخیرها بر حسب نانوثانیه داده می‌شوند. یک پسوند واحد اختیاری شامل ns، us، ms یا s می‌تواند پس از هر مقدار مشخص شود تا واحدهای نانوثانیه، میکروثانیه، میلی‌ثانیه یا ثانیه را به ترتیب مشخص کند؛ بنابراین برای نمونه، 10 ms معادل 10,000,000 است. مقادیر تاخیر با دقت کمتر از یک میلی‌ثانیه تنها زمانی قابل استفاده هستند که برچسب‌های زمانی دقیق فعال باشند: اگر --precise داده نشود و مقادیر کمتر از یک میلی‌ثانیه استفاده شوند، به‌طور خودکار فعال خواهد شد.

یک رشته اختیاری program_id یا user_data می‌تواند با ناحیه مرتبط شود. سپس می‌توان از یک program_id برای انتخاب نواحی در عملیات بعدی list، print و report استفاده کرد. فیلد user_data یک رشته دلخواه را ذخیره می‌کند و توسط dmstats یا زیرسیستم آمار هسته نگاشتگر دستگاه استفاده نمی‌شود.

به‌طور پیش‌فرض dmstats نواحی را با program_id برابر "dmstats" ایجاد می‌کند.

در صورت موفقیت، region_id ناحیه تازه ایجادشده در stdout چاپ می‌شود.

اگر گزینه --filemap با یک فایل عادی یا فهرستی از فایل‌ها به عنوان آرگومان file_path ارائه شود، dmstats به جای ایجاد نواحی با پارامترهای مشخص‌شده در خط فرمان، فایل‌های واقع در file_path را باز کرده و نواحی متناظر با اکستنت‌های فیزیکی تخصیص‌یافته به فایل را ایجاد می‌کند. این کار می‌تواند برای پایش آمار فایل‌های مجزا در سیستم‌فایل، برای نمونه، ایمیج‌های ماشین مجازی، نواحی swap یا فایل‌های بزرگ پایگاه داده استفاده شود.

برای کار با گزینه --filemap، فایل‌ها باید روی یک سیستم‌فایل محلی قرار داشته باشند که توسط یک دستگاه نگاشتگر دستگاه پشتیبانی می‌شود و از داده‌های اکستنت فیزیکی با استفاده از ioctl مربوط به FIEMAP پشتیبانی می‌کند (مانند Ext4 و XFS).

به‌طور پیش‌فرض نواحی نگاشت‌کننده یک فایل درون یک گروه قرار می‌گیرند و نام مستعار گروه روی نام پایه (basename) فایل تنظیم می‌شود. این رفتار را می‌توان با گزینه‌های --alias و --nogroup لغو کرد.

ایجاد گروهی که فایلی را نگاشت می‌کند به‌طور خودکار یک دیمن، dmfilemapd(8)، را برای پایش فایل و به‌روزرسانی نگاشت همگام با تغییر اکستنت‌های تخصیص‌یافته به فایل راه‌اندازی می‌کند. این رفتار با استفاده از گزینه --nomonitor قابل غیرفعال‌سازی است.

از گزینه --group تنها برای نمایش اطلاعات گروه‌ها هنگام فهرست‌بندی و گزارش‌گیری استفاده کنید.

delete device_name|--alldevices [--allprograms|--programid id] [--allregions|--regionid id]
ناحیه آماری مشخص‌شده را حذف می‌کند. تمام شمارنده‌ها و منابع مورداستفاده توسط ناحیه آزاد می‌شوند و ناحیه در خروجی عملیات بعدی list، print یا report ظاهر نخواهد شد.

تمامی نواحی ثبت‌شده روی یک دستگاه را می‌توان با استفاده از --allregions حذف کرد.

برای حذف تمام نواحی روی همه دستگاه‌ها باید هر دو گزینه --allregions و --alldevices استفاده شوند.

اگر یک --groupid به جای یک --regionid داده شود، دستور تلاش خواهد کرد تا گروه و تمام نواحی موجود در آن را حذف کند.

اگر یک ناحیه حذف‌شده نخستین عضو از یک گروه از نواحی باشد، آن گروه نیز حذف خواهد شد.

group [device_name|--alldevices] [--alias name] [--regions regions]
یک یا چند ناحیه آماری روی دستگاه مشخص‌شده را در یک گروه ترکیب می‌کند.

فهرست نواحی جهت گروه‌بندی با --regions مشخص می‌شود و می‌توان یک نام مستعار اختیاری را با --alias اختصاص داد. مجموعه نواحی به‌صورت فهرستی از شناسه‌های ناحیه جداشده با کاما ارائه می‌شود. یک بازه پیوسته از شناسه‌ها از R1 تا R2 را می‌توان به صورت بیان کرد.

نواحی دارای هیستوگرام پیکربندی‌شده قابل گروه‌بندی هستند: در این حالت تعداد دسته‌های هیستوگرام و مرزهای آن‌ها باید دقیقاً مطابقت داشته باشند.

در صورت موفقیت، فهرست گروه و group_id تازه‌ایجادشده در stdout چاپ می‌شوند.

متادیتای گروه همراه با نخستین (کمترین شماره) region_id در گروه ذخیره می‌شود: حذف این ناحیه همچنین گروه را حذف کرده و سایر اعضای گروه به وضعیت پیشین خود بازگردانده می‌شوند.

help [-c|-C|--columns]
خلاصه‌ای از دستورات موجود را به همراه فهرست اختیاری فیلدهای گزارش چاپ می‌کند.

list [device_name] [--allprograms|--programid id] [--area] [--group] [--region] [--histogram] [--nosuffix] [--notimesuffix] [--units units]
نواحی، محدوده‌ها یا گروه‌های آماری ثبت‌شده بر روی دستگاه را فهرست می‌کند. اگر سوییچ --allprograms داده شود، تمامی نواحی صرف‌نظر از مقادیر شناسه برنامه ناحیه فهرست خواهند شد.

به‌طور پیش‌فرض تنها نواحی و گروه‌ها در خروجی فهرست گنجانده می‌شوند. اگر -v یا --verbose داده شود، گزارش همچنین شامل یک ردیف اطلاعات برای هر گروه پیکربندی‌شده و برای هر محدوده موجود در هر ناحیه نمایش‌داده‌شده خواهد بود.

نواحی که شامل یک محدوده تکی هستند به‌طور پیش‌فرض از فهرست دارای جزئیات حذف می‌شوند چرا که ویژگی‌های آن‌ها با محدوده‌ای که در بر دارند یکسان است - برای مشاهده تمام نواحی بدون توجه به تعداد محدوده‌های موجود از --region استفاده کنید. برای مشاهده محدوده‌های موجود در نواحی نیز از --area استفاده کنید.

اگر --histogram داده شود، گزارش شامل تعداد دسته‌ها و مقادیر مرز تاخیر برای هرگونه هیستوگرام پیکربندی‌شده خواهد بود.

print [device_name] [--clear] [--allprograms|--programid id] [--allregions|--regionid id]
شمارنده‌های آماری خام را برای ناحیه مشخص‌شده یا برای تمامی نواحی موجود چاپ می‌کند.

report [device_name] [--interval seconds] [--count count] [--units units] [--allprograms|--programid id] [--allregions|--regionid id] [--area] [--group] [--region] [--histogram] [--nosuffix] [--notimesuffix] [--units units] [-O|--sort sort_fields] [-S|--select selection]
شروع یک گزارش برای شیء مشخص‌شده یا برای تمامی اشیاء موجود. اگر آرگومان count مشخص شود، گزارش در یک بازه ثابت تعیین‌شده توسط گزینه --interval تکرار خواهد شد. فاصله زمانی پیش‌فرض یک ثانیه است.

اگر سوییچ --allprograms داده شود، تمامی نواحی صرف‌نظر از مقادیر شناسه برنامه ناحیه فهرست خواهند شد.

اگر --histogram داده شود، گزارش شامل مقادیر هیستوگرام و مرزهای تاخیر خواهد بود.

اگر --relative استفاده شود، فیلد هیستوگرام پیش‌فرض مقادیر دسته‌ها را به صورت درصدی از تعداد کل ورودی/خروجی‌ها نمایش می‌دهد.

انواع اشیاء (محدوده‌ها، نواحی و گروه‌ها) جهت گنجاندن در گزارش با استفاده از گزینه‌های --area، --region و --group انتخاب می‌شوند.

ungroup [device_name|--alldevices] [--groupid id]
یک گروه موجود را حذف کرده و تمامی نواحی گروه را به وضعیت اصلی خود بازمی‌گرداند.

گروه مورد نظر جهت حذف با استفاده از --groupid مشخص می‌شود.

update_filemap file_path [--follow follow_mode] [--foreground] [--groupid id] [--nomonitor]
گروهی از نواحی dmstats را که با group_id مشخص شده و قبلاً با --filemap ایجاد شده‌اند، به‌صورت مستقیم یا با راه‌اندازی دیمن پایش dmfilemapd(8) به‌روزرسانی می‌کند.

این کار نواحی را اضافه و حذف می‌کند تا تغییرات در اکستنت‌های تخصیص‌یافته فایل روی دیسک، از زمان ایجاد یا آخرین به‌روزرسانی آن را منعکس سازد.

استفاده از این دستور به‌طور معمول مورد نیاز نیست چرا که دیمن dmfilemapd(8) به‌طور خودکار گروه‌های filemap را پایش کرده و این به‌روزرسانی‌ها را در صورت نیاز انجام می‌دهد.

اگر یک گروه نگاشت‌شده با --nomonitor ایجاد شده باشد، یا دیمن متوقف (kill) شده باشد، دستور update_filemap می‌تواند برای وادار کردن دستی به به‌روزرسانی یا راه‌اندازی یک دیمن جدید استفاده شود.

از --nomonitor برای وادار کردن به به‌روزرسانی مستقیم و غیرفعال کردن راه‌اندازی دیمن پایش استفاده کنید.

قابلیت آمار نگاشتگر دستگاه امکان نگه‌داری شمارنده‌های کارایی مجزا را برای نواحی دلخواهی از دستگاه‌ها فراهم می‌کند. یک ناحیه می‌تواند هر دامنه‌ای را در بر بگیرد: از یک سکتور منفرد تا کل دستگاه. همچنین یک ناحیه می‌تواند به تعدادی محدوده (area) مجزا (یک یا چند محدوده) تقسیم شود که هر کدام مجموعه شمارنده خاص خود را دارند. در این صورت یک مقدار خلاصه‌شده برای کل ناحیه نیز جهت استفاده در گزارش‌ها در دسترس خواهد بود.

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

متادیتای گروه همراه با نخستین (کمترین شماره) region_id در گروه ذخیره می‌شود: حذف این ناحیه همچنین گروه را حذف کرده و سایر اعضای گروه به وضعیت پیشین خود بازگردانده می‌شوند.

به‌طور پیش‌فرض نواحی جدید کل دستگاه را در بر می‌گیرند. گزینه‌های --start و --length امکان قرار دادن ناحیه‌ای با هر اندازه‌ای در هر مکانی از دستگاه را فراهم می‌کنند.

با استفاده از آفست‌ها می‌توان نواحی ایجاد کرد که اشیاء منفرد درون یک دستگاه بلوکی را نگاشت کنند (برای نمونه: پارتیشن‌ها، فایل‌های درون یک سیستم‌فایل، یا استریپ‌ها [stripes] یا ساختارهای دیگر در یک حجم RAID). گروه‌ها اجازه می‌دهند چندین ناحیه ناپیوسته برای گزارش‌گیری و تجمیع داده‌ها در کنار یکدیگر گردآوری شوند.

یک ناحیه می‌تواند با مشخص کردن یکی از گزینه‌های --areas یا --areasize هنگام ایجاد ناحیه با دستور create، یا به تعداد مشخصی محدوده هم‌اندازه تقسیم شود یا به محدوده‌هایی با اندازه داده‌شده. بسته به اندازه محدوده‌ها و ناحیه دستگاه، محدوده نهایی درون ناحیه ممکن است از اندازه درخواستی کوچک‌تر باشد.

به هر ناحیه در زمان ایجاد یک شناسه اختصاص داده می‌شود که برای ارجاع به ناحیه در عملیات بعدی استفاده می‌شود. شناسه‌های ناحیه درون یک دستگاه داده‌شده یکتا هستند (از جمله در میان مقادیر مختلف program_id).

بسته به توالی عملیات ایجاد و حذف، ممکن است شکاف‌هایی در توالی مقادیر region_id برای یک دستگاه خاص وجود داشته باشد.

شناسه region_id باید به عنوان یک شناسه مبهم (opaque) که برای ارجاع به ناحیه به کار می‌رود در نظر گرفته شود.

به گروه‌ها نیز در زمان ایجاد یک شناسه عدد صحیح اختصاص داده می‌شود؛ همانند شناسه‌های ناحیه، شناسه‌های گروه نیز درون دستگاه دربرگیرنده یکتا هستند.

شناسه group_id باید به عنوان یک شناسه مبهم (opaque) که برای ارجاع به گروه به کار می‌رود در نظر گرفته شود.

با استفاده از --filemap، امکان ایجاد نواحی متناظر با اکستنت‌های یک فایل در سیستم‌فایل وجود دارد. این قابلیت اجازه می‌دهد آمار ورودی/خروجی بر مبنای هر فایل پایش شود، برای نمونه جهت نظارت بر فایل‌های بزرگ پایگاه داده، ایمیج‌های ماشین مجازی، یا سایر فایل‌های مورد نظر.

برای استفاده از نگاشت فایل، فایل باید توسط یک دستگاه نگاشتگر دستگاه پشتیبانی شود و در یک سیستم‌فایل باشد که از ioctl مربوط به FIEMAP پشتیبانی کند (و داده‌های توصیف‌کننده مکان فیزیکی اکستنت‌ها را بازگرداند). این امر در حال حاضر شامل xfs(5) و ext4(5) می‌شود.

به‌طور پیش‌فرض نواحی تشکیل‌دهنده یک فایل با یکدیگر در یک گروه قرار می‌گیرند و نام مستعار گروه روی basename(3) فایل تنظیم می‌شود. این کار اجازه می‌دهد آمار برای فایل به عنوان یک کل گزارش شود و مقادیر مربوط به نواحی تشکیل‌دهنده گروه تجمیع گردند. برای مشاهده صرفاً کل فایل (گروه) هنگام استفاده از دستورات list و report، از --group استفاده کنید.

از آنجا که این امکان وجود دارد که فایل پس از ایجاد گروه اولیه نواحی تغییر کند، دستور update_filemap و دیمن dmfilemapd(8) برای به‌روزرسانی گروه‌های نگاشت‌شده فایل به‌صورت دستی یا خودکار ارائه شده‌اند.

دیمن پایش نگاشت فایل می‌تواند فایل‌ها را به دو روش متمایز دنبال کند: حالت follow-inode و حالت follow-path.

این حالت رفتار دیمن را هنگام تغییر نام یا حذف پیوند (unlink) فایلِ تحت پایش و شرایطی که باعث خاتمه کار دیمن می‌شوند تحت تاثیر قرار می‌دهد.

اگر حالت follow-inode استفاده شود، دیمن فایل را باز نگه می‌دارد و به به‌روزرسانی نواحی از همان توصیف‌کننده فایل ادامه می‌دهد. این بدان معناست که نگاشت عملیات تغییر نام، جابه‌جایی (در همان سیستم‌فایل) و unlink را دنبال خواهد کرد. این حالت زمانی مفید است که انتظار برود فایل در حین پایش جابه‌جا، تغییر نام داده یا unlink شود.

در حالت follow-inode، دیمن به محض اینکه متوجه شود فایل unlink شده و خود آخرین نگه‌دارنده ارجاع به آن است، خارج خواهد شد.

اگر follow-path استفاده شود، دیمن مسیر ارائه‌شده را در هر تکرار پایش مجدداً باز می‌کند. این بدان معناست که گروه به‌روزرسانی خواهد شد تا فایل جدیدی را منعکس کند که به همان مسیر فایل اصلی منتقل شده است. این حالت برای فایل‌هایی مفید است که انتظار می‌رود از طریق unlink و rename به‌روزرسانی شوند.

در حالت follow-path، اگر فایل حذف شود و در یک بازه تحمل کوتاه (یک ثانیه) جایگزین نگردد، دیمن خارج خواهد شد.

برای متوقف کردن دیمن، گروه حاوی نواحی نگاشت‌شده را حذف کنید: دیمن به‌طور خودکار خاموش خواهد شد.

همچنین می‌توان دیمن را در هر زمان به‌صورت امن متوقف (kill) کرد و گروه را حفظ نمود: اگر همچنان برای فایل تخصیص فضا انجام شود، نگاشت با افزودن و حذف اکستنت‌ها به‌تدریج قدیمی خواهد شد (در این حالت می‌توان دیمن را مجدداً راه‌اندازی کرد یا گروه را به‌صورت دستی با دستور update_filemap به‌روزرسانی نمود).

برای اطلاعات بیشتر دستور create و گزینه‌های --filemap، --follow و --nomonitor را ببینید.

دیمن تلاش می‌کند همگام‌سازی مناسبی میان اکستنت‌های فایل و نواحی موجود در گروه حفظ کند، با این حال، از آنجا که تنها می‌تواند پس از نوشته شدن تخصیص‌های جدید به آن‌ها واکنش نشان دهد، هنگام رشد فایل ناگزیر برخی رویدادهای ورودی/خروجی شمرده نمی‌شوند، به‌ویژه اگر فایل توسط یک ریسه (thread) منفرد که فراتر از انتهای فایل می‌نویسد توسعه یابد (برای نمونه، برنامه dd(1)).

از دست رفتن رویدادها جنبه دیگری نیز دارد چرا که در حال حاضر هیچ راهی برای تغییر اندازه اتمیک یک ناحیه dmstats و حفظ مقادیر شمارنده فعلی آن وجود ندارد. این امر فایل‌ها را زمانی تحت تاثیر قرار می‌دهد که به جای تخصیص یک اکستنت جدید، با گسترش اکستنت نهایی رشد کنند: هر رویدادی که در ناحیه بین هر عملیات قبلی و تغییر اندازه انباشته شده بود از دست می‌رود.

نگاشت فایل در حال حاضر در مواردی بیشترین کارایی را دارد که بخش عمده ورودی/خروجی منجر به تخصیص اکستنت نشود. به‌روزرسانی‌های آینده ممکن است در صورت فراهم شدن پشتیبانی در هسته، این محدودیت‌ها را برطرف سازند.

گزارش dmstats چندین نوع فیلد ارائه می‌دهد که می‌توان آن‌ها را به مجموعه فیلدهای پیش‌فرض اضافه کرد یا برای ایجاد گزارش‌های سفارشی به کار برد.

تمامی شمارنده‌ها و معیارهای کارایی به ازای هر محدوده (per-area) محاسبه می‌شوند.

تعدادی از فیلدهای معیار گنجانده شده‌اند که شاخص‌های کارایی سطح بالا را ارائه می‌دهند. این شاخص‌ها بر اساس فیلدهای ارائه‌شده توسط برنامه متداول iostat در لینوکس بوده و از مقادیر شمارنده‌های پایه ارائه‌شده توسط هسته برای هر محدوده مشتق می‌شوند.

تعداد خواندن‌های ادغام‌شده در هر ثانیه.
تعداد نوشتن‌های ادغام‌شده در هر ثانیه.
تعداد خواندن‌های تکمیل‌شده در هر ثانیه.
تعداد نوشتن‌های تکمیل‌شده در هر ثانیه.
حجم داده‌های خوانده‌شده در هر ثانیه.
حجم داده‌های نوشته‌شده در هر ثانیه.
اندازه میانگین درخواست.
اندازه میانگین صف.
میانگین زمان انتظار برای عملیات خواندن و نوشتن.
میانگین زمان انتظار برای عملیات خواندن.
میانگین زمان انتظار برای عملیات نوشتن.
توان عملیاتی (throughput) دستگاه بر حسب عملیات در ثانیه.
میانگین زمان سرویس‌دهی (بر حسب میلی‌ثانیه) برای عملیات ارائه‌شده به دستگاه.
درصد زمان پردازنده (CPU) که در طول آن درخواست‌های ورودی/خروجی به دستگاه صادر شده‌اند (بهره‌وری پهنای باند برای دستگاه). اشباع دستگاه زمانی رخ می‌دهد که این مقدار نزدیک به ۱۰۰٪ باشد.

فیلدهای متا اطلاعاتی درباره گروه‌ها، نواحی یا محدوده‌هایی ارائه می‌دهند که مقادیر آماری با آن‌ها مرتبط هستند. این شامل شناسه ناحیه و محدوده، شروع، طول و تعداد آن‌ها، و همچنین شناسه برنامه و مقادیر داده کاربر است.

شناسه ناحیه. این یک عدد صحیح غیرمنفی است که توسط هسته در زمان ایجاد یک ناحیه آماری بازگردانده می‌شود.
مکان شروع ناحیه. واحدهای نمایش توسط گزینه --units انتخاب می‌شوند.
طول ناحیه. واحدهای نمایش توسط گزینه --units انتخاب می‌شوند.
شناسه محدوده. شناسه‌های محدوده توسط کتابخانه آماری نگاشتگر دستگاه اختصاص می‌یابند و هر محدوده را درون یک ناحیه به‌طور یکتا مشخص می‌کنند. هر شناسه متناظر با یک مجموعه مجزا از شمارنده‌های کارایی برای آن محدوده از ناحیه آماری است. شناسه‌های محدوده همیشه درون یک ناحیه به‌طور یکنواخت صعودی هستند، به طوری که مقادیر بالاتر شناسه متناظر با آدرس‌های سکتور بزرگ‌تر درون محدوده بوده و هیچ شکافی در توالی شناسه‌ها وجود ندارد.
مکان شروع محدوده. واحدهای نمایش توسط گزینه --units انتخاب می‌شوند.
طول محدوده. واحدهای نمایش توسط گزینه --units انتخاب می‌شوند.
تعداد محدوده‌ها در این ناحیه.
مقدار شناسه برنامه مرتبط با این ناحیه.
مقدار داده کاربر مرتبط با این ناحیه.
شناسه گروه. این یک عدد صحیح غیرمنفی است که توسط دستور group در dmstats هنگام ایجاد یک گروه آماری بازگردانده می‌شود.
بازه زمانی تخمینی که در طول آن مقادیر شمارنده فعلی انباشته شده‌اند. این مقدار به عنوان یک عدد صحیح بر حسب واحد نانوثانیه گزارش می‌شود.
بازه زمانی تخمینی که در طول آن مقادیر شمارنده فعلی انباشته شده‌اند. این مقدار به عنوان یک عدد حقیقی بر حسب واحد ثانیه گزارش می‌شود.

شمارنده‌های پایه دسترسی به داده‌های شمارنده خام را از هسته فراهم می‌کنند و اجازه می‌دهند پردازش بیشتر توسط برنامه‌ای دیگر انجام گیرد.

هسته سیزده شمارنده مجزا برای هر محدوده آماری فراهم می‌کند. یازده مورد نخست از این شمارنده‌ها با شمارنده‌های ارائه‌شده در /proc/diskstats یا /sys/block/*/*/stat مطابقت دارند. جفت پایانی شمارنده‌های مجزایی برای زمان خواندن و نوشتن ارائه می‌دهند.

تعداد خواندن‌های تکمیل‌شده در این بازه.
تعداد خواندن‌های ادغام‌شده در این بازه.
تعداد سکتورهای ۵۱۲ بایتی خوانده‌شده در این بازه.
مدت‌زمان انباشته تمامی درخواست‌های خواندن (نانوثانیه).
تعداد نوشتن‌های تکمیل‌شده در این بازه.
تعداد نوشتن‌های ادغام‌شده در این بازه.
تعداد سکتورهای ۵۱۲ بایتی نوشته‌شده در این بازه.
مدت‌زمان انباشته تمامی درخواست‌های نوشتن (نانوثانیه).
تعداد درخواست‌های در حال انجام در حال حاضر.
نانوثانیه‌های صرف‌شده برای سرویس‌دهی به درخواست‌ها.
این فیلد در هر شروع ورودی/خروجی، اتمام ورودی/خروجی، ادغام ورودی/خروجی، یا خواندن این آمار، به میزان تعداد ورودی/خروجی‌های در حال انجام ضرب در تعداد میلی‌ثانیه‌های صرف‌شده برای انجام ورودی/خروجی از زمان آخرین به‌روزرسانی این فیلد، افزایش می‌یابد. این می‌تواند معیار ساده‌ای از زمان تکمیل ورودی/خروجی و حجم کارهای معوق (backlog) که ممکن است انباشته شده باشند فراهم کند.
نانوثانیه‌های صرف‌شده برای سرویس‌دهی به خواندن‌ها.
نانوثانیه‌های صرف‌شده برای سرویس‌دهی به نوشتن‌ها.

هیستوگرام‌ها توزیع فراوانی بازه‌های تاخیر ورودی/خروجی تعیین‌شده توسط کاربر را اندازه‌گیری می‌کنند. مرزهای دسته‌های هیستوگرام در زمان ایجاد ناحیه مشخص می‌شوند.

نمایشی مختصر از مقادیر هیستوگرام و بازه‌های تاخیر را می‌توان با استفاده از این فیلدها در گزارش گنجاند.

فهرستی از شمارش‌های هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر. هر مقدار بیانگر تعداد ورودی/خروجی‌هایی است که زمان تاخیر آن‌ها در طول دوره نمونه‌برداری در محدوده زمانی آن دسته قرار گرفته است.
فهرستی از شمارش‌های هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر شامل مرزهای دسته: هر شمارش دارای پیشوندی از مرز پایین دسته هیستوگرام متناظر است.
فهرستی از شمارش‌های هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر شامل مرزهای دسته: هر شمارش دارای پیشوندی از هر دو مرز پایین و بالای دسته هیستوگرام متناظر است.
فهرستی از مقادیر نسبی هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر، که به صورت درصد بیان شده است. هر مقدار بیانگر نسبت ورودی/خروجی‌هایی است که زمان تاخیر آن‌ها در طول دوره نمونه‌برداری در محدوده زمانی آن دسته قرار گرفته است.
فهرستی از مقادیر نسبی هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر، که به صورت درصد بیان شده و شامل مرزهای دسته است. هر مقدار بیانگر نسبت ورودی/خروجی‌هایی است که زمان تاخیر آن‌ها در طول دوره نمونه‌برداری در محدوده زمانی آن دسته قرار گرفته و دارای پیشوندی از مرز پایین دسته متناظر است.
فهرستی از مقادیر نسبی هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر، که به صورت درصد بیان شده و شامل مرزهای دسته است. هر مقدار بیانگر نسبت ورودی/خروجی‌هایی است که زمان تاخیر آن‌ها در طول دوره نمونه‌برداری در محدوده زمانی آن دسته قرار گرفته و دارای پیشوندی از هر دو مرز پایین و بالای دسته متناظر است.
فهرستی از مقادیر مرزی هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر. مقادیر در واحدهای کامل ثانیه، میلی‌ثانیه، میکروثانیه یا نانوثانیه همراه با پسوندی که نشان‌دهنده واحد است بیان می‌شوند.
فهرستی از بازه‌های دسته‌های هیستوگرام برای محدوده آماری فعلی به ترتیب صعودی مقدار تاخیر. مقادیر به‌صورت "LOWER-UPPER" در واحدهای کامل ثانیه، میلی‌ثانیه، میکروثانیه یا نانوثانیه همراه با پسوندی که نشان‌دهنده واحد است بیان می‌شوند.
تعداد دسته‌های هیستوگرام تاخیر پیکربندی‌شده برای محدوده.

ایجاد یک ناحیه برای کل دستگاه با یک محدوده روی vg00/lvol1
# dmstats create vg00/lvol1

vg00/lvol1: Created new region with 1 area(s) as region ID 0

ایجاد یک ناحیه ۳۲ مگابایتی در ۱ گیگابایتی دستگاه d0
# dmstats create --start 1G --length 32M d0

d0: Created new region with 1 area(s) as region ID 0

ایجاد یک ناحیه برای کل دستگاه با ۸ محدوده روی هر دستگاه
# dmstats create --areas 8

vg00-lvol1: Created new region with 8 area(s) as region ID 0
vg00-lvol2: Created new region with 8 area(s) as region ID 0
vg00-lvol3: Created new region with 8 area(s) as region ID 0
vg01-lvol0: Created new region with 8 area(s) as region ID 2
vg01-lvol1: Created new region with 8 area(s) as region ID 0
vg00-lvol2: Created new region with 8 area(s) as region ID 1

حذف تمامی نواحی روی همه دستگاه‌ها
# dmstats delete --alldevices --allregions

ایجاد یک ناحیه برای کل دستگاه با محدوده‌هایی به اندازه ۱۰ گیگابایت روی vg00/lvol1 با استفاده از dmsetup
# dmsetup stats create --areasize 10G vg00/lvol1

vg00-lvol1: Created new region with 5 area(s) as region ID 1

ایجاد یک ناحیه ۱ گیگابایتی با ۱۶ محدوده در ابتدای vg00/lvol1
# dmstats create --start 0 --len 1G --areas=16 vg00/lvol1

vg00-lvol1: Created new region with 16 area(s) as region ID 0

فهرست کردن نواحی آماری ثبت‌شده روی vg00/lvol1
# dmstats list vg00/lvol1

Name         RgID RStart  RSize  #Areas ASize  ProgID
vg00-lvol1    0    0      61.00g  1     61.00g dmstats
vg00-lvol1    1   61.00g  19.20g  1     19.20g dmstats
vg00-lvol1    2   80.20g   2.14g  1      2.14g dmstats

نمایش پنج گزارش آماری برای vg00/lvol1 در بازه زمانی یک ثانیه
# dmstats report --interval 1 --count 5 vg00/lvol1
# dmstats report

Name        RgID ArID AStart ASize  RRqM/s WRqM/s R/s →
vg00-lvol1   0    0    0    61.00g  0.00   0.00  0.00
vg00-lvol1   1    0  61.00g 19.20g  0.00   0.00  0.00
vg00-lvol1   2    0  80.20g  2.14g  0.00   0.00  0.00

→ W/s  RSz/s  WSz/s   AvRqSz  QSize Util% AWait RdAWa WrAWa
218.00 0.00     1.04m   4.50k 2.97  81.70 13.62 0.00  13.62
  5.00 0.00   548.00k 109.50k 0.14  11.00 27.40 0.00  27.40
 14.00 0.00     1.15m  84.00k 0.39  18.70 27.71 0.00  27.71

ایجاد یک ناحیه برای هر تارگت موجود در دستگاه vg00/lvol1
# dmstats create --segments vg00/lvol1

vg00-lvol1: Created new region with 1 area(s) as region ID 0
vg00-lvol1: Created new region with 1 area(s) as region ID 1
vg00-lvol1: Created new region with 1 area(s) as region ID 2

ایجاد نواحی نگاشت‌کننده هر فایل در دایرکتوری images/ و قرار دادن آن‌ها در گروه‌های مجزا با نام‌گذاری متناظر با هر فایل
# dmstats create --filemap images/*

images/vm1.qcow2: Created new group with 87 region(s) as group ID 0.
images/vm1-1.qcow2: Created new group with 8 region(s) as group ID 87.
images/vm2.qcow2: Created new group with 11 region(s) as group ID 95.
images/vm2-1.qcow2: Created new group with 1454 region(s) as group ID 106.
images/vm3.img: Created new group with 2 region(s) as group ID 1560.

چاپ شمارنده‌های خام برای ناحیه ۴ روی دستگاه d0
# dmstats print --regionid 4 d0

2097152+65536 0 0 0 0 29 0 264 701 0 41 701 0 41

Bryn M. Reeves

dmfilemapd(8), dmsetup(8),

ext4(5), xfs(5)

صفحه منابع LVM2:
صفحه منابع نگاشتگر دستگاه (Device-mapper):

مستندات هسته برای آمار نگاشتگر دستگاه:
Documentation/device-mapper/statistics.txt

Mar 23 2025 Linux