دستور vmstat یا Virtual Memory Statistics ، برای نمایش میزان مصرف حافظه مجازی(virtual memory)، kernerl threads، فضای مصرفی دیسک ها، پردازش های سیستم، بلوک های I/O، وقفه ها، میزان فعالیت CPU و غیره استفاده می شود.
به طور پیش فرض دستور vmstat در سیستم های لینوکس در دسترس نیست. لذا نیاز به نصب بسته sysstat می باشد که که شامل برنامه vmstat است.
در تصویر بالا شما نتیجۀ دستور vmstat بدون مشخصۀ a را می بینید که اطلاعات درون ستون هایی دسته بندی شدند. یک توضیح مختصری هم راجع به سرتیترهای هر کدام از موارد ردیف اول خدمت شما عرض کنم:
ستون Procs
ستون Procs که مخفف Proccess و اطلاعاتی از فرآیند بلاک شده و در حال اجرا را نمایش میدهد. در زیر این ستون به ترتیب فیلد r مجموع تعداد فرآیندهای runnable و فیلد b مجموع فرآیندهای بلاک شده را نشان میدهد.
ستون memory
ستون memory اطلاعاتی از حافظه اصلی را نشان میدهد که دارای ۴ فیلد است. فیلد swpd معرف میزان فضای swap اسفاده شده است که مانند شکل اول هیچ فضایی استفاده نشده است. فیلد free مانند ستون free در اولین خط خروجی دستور free میزان فضای آزاد حافظه اصلی را نشان میدهد. فیلد buff و cache به ترتیب مانند ستونهای buffer و cache در خروجی دستور free میزان فضای بافر و cache را نشان میدهند.
ستون swap
ستون swap اطلاعاتی از swap را نشان میدهد؛ فیلد si یعنی swap in و به میزان فضایی که فرآیندها از دیسک به حافظه اصلی آورده شدهاند، اشاره میکند؛ عملیاتی که طی آن فرآیندی از حافظه swap که برروی دیسک قرار دارد به حافظه اصلی آوره میشود swap in گفته میشود. so یعنی swap out و بلعکس عملیات swap in است و به عملیاتی که طی آن فرآیندی از حافظه اصلی وارد ناحیه swap بر روی دیسک میگویند و فیلد so میزان این عملیات را نشان میدهد. به مجموع این دو عملیات swapping یا مبادله کردن میگونید و چون فیلد swpd برابر صفر است و از حافظه swap استفاده نشده است پس هیچ عملیات si و so نیز انجام نگرفته پس این دوفیلد نیز مانند فیلد swpd برابر صفر هستند.
ستون io
ستون io میزان عملیاتهای ورودی وخروجی یا Input/Output را نشان میدهند. این ستون دارای دوفیلد bi که مخفف Block Input و معرف تعداد بلاکهای حافظهای که از دیسک گرفته یا دریافت شدهاند یا همان «خواندن از دیسک» و bo مخفف Block Output و یعنی تعداد بلاکهای حافظهای که بر روی دیسک فرستاده شدهاند یا همان «نوشتن بر دیسک» را نشان میدهد.
ستون system
ستون system دارای دو in که مخفف Intrrupt یا تعداد وقفهها در هر ثانیه است. یکی از اعمالی که باعث ایجاد وقفه میشود درخواست خواندن از دیسک است. به محض بروز وقفه برای خواندن از دیسک مقدار این فیلد تغییر کرده و فرآیند باید متوقف شود تا بیخود پردازنده را اشغال نکند، پیش از متوقف کردن فرآیند باید تمامی وضعیت یک فرآیند نگهداری شود که به محض تکمیل عمل I/O دوباره آن فرآیند از وضعیت قبلی خود اجرا شود. به عملیات نگهداری وضعیت فرایند Context Switch گویند که فیلد دوم یعنی cs مخفف Context Switch ها در هر ثانیه است.
ستون cpu
ستون cpu دارای ۴ فیلد است. فضای حافظه اصلی به دو ناحیه Kernel-Level و User-level تقسیم میشود که ناحیه User-level هیچ دخالتی بر ناحیه Kernel-Level ندارد. اولین فیلد یعنی us زمان مصرف شده برای اجرا کردن کدهای کاربری را نشان میدهد. فیلد sy میزان زمان صرف شده برای اجرای کدهای کرنل را نشان میدهد. id که مخفف idle است میزان زمان بیکاری یا Idle Time پردازنده و فیلد wa میزان زمان صرف شده برای تکمیل یک عمل I/O را نشان میدهند
اجرای vmstat هر x ثانیه
اگر می خواهید برای یک مدت زمان خاص با فاصلۀ زمانی تعیین شده نتیجۀ این دستور به شما برگردد، میتوانید از حالت زیر این دستور استفاده کنید.
vmstat 2 6
عدد ۲ نشان از این می دهد که هر ۲ ثانیه نتیجۀ جدید به شما برگردد و عدد ۶ هم میگویند که حداکثر تا ۶ نتیجۀ تازه سازی شده به ما نشان داده شود. همین الان این دستور را بزنید تا ببینید منظورم چه بوده است. اگر می خواهید با نمایش هر نتیجه تاریخ و زمان خروجی را هم نشان دهد از مشخصۀ -t در دستور استفاده کنید.
vmstat -t 1 5
آمار و ارقام به سبکی دیگر و با شمارشگرهای جدید
یکی دیگر از مشخصههای این دستور s نام دارد که برای نمایش اطلاعات به سبکی دیگر به کار میرود. به صورت ستونی و همچنین به همراه دیگر اطلاعات خرد دیگر.
vmstat -s
آمار و ارقام حافظۀ سخت
دستور vmstat به همراه مشخصۀ -d اطلاعات مربوط به حافظۀ سخت سرور را نشان خواهد داد.
vmstat -d
اگر با واحد کیلوبایت راحت نیستید، میتوانید با وارد کردن دستور زیر اعداد و ارقام به واحد مگابایت نمایش داده شوند.
vmstat -s -S M 1 5