میزان استفاده از حافظه لینوکس در مقایسه با سایر سیستم عاملها کم است. با این حال، راه بصری برای بررسی حافظه ارائه نمیدهد و به همین دلیل است که در این مطلب پنج راه برای بررسی میزان استفاده از حافظه در لینوکس را بررسی خواهیم کرد. این مطلب به مدیران سرور و توسعه دهندگان کمک میکند تا از این ابزارها برای مدیریت مطمئن حافظه سیستم استفاده کنند.
برای این آموزش، از Ubuntu 22.04.1 LTS استفاده میکنیم. البته میتوانید با استفاده از هر توزیع لینوکس دیگر، راهنما را دنبال کنید، زیرا این ابزارهای خط فرمان روی همه توزیعهای لینوکس کار میکنند.
برای دنبال کردن راهنما، باید موارد زیر را داشته باشید:
- دسترسی به حساب کاربری root لینوکس
- دسترسی به ترمینال یا رابط خط فرمان
- امکان نصب بستههای جدید مانند دسترسی به APT
چرا باید در مورد استفاده از حافظه در لینوکس بیاموزید؟
قبل از شروع، یادگیری در مورد استفاده از حافظه ضروری است. به عبارت دیگر، آیا آگاهی از میزان حافظه آزاد و حافظه مصرف شده اهمیت دارد؟
هر بار که فرآیندی را اجرا میکنید، Random Access Memory (RAM) را مصرف میکند. بدون RAM، برنامه کار نخواهد کرد. بنابراین، اگر سعی کنید فرآیندی را اجرا کنید که به حافظه بیشتری از آنچه در حال حاضر در دسترس است نیاز دارد، اجرا نخواهد شد. همچنین اجرای فرآیندها در لینوکس میزان استفاده از حافظه را بر اساس عملکرد کاربران تغییر میدهد. اگر کاربر بخواهد عملی را انجام دهد، اما سیستم نتواند آن را تخصیص دهد، ممکن است از کار بیفتد یا خطا نشان دهد. اگر از ماشینی با مشخصات پایین استفاده میکنید، همه اینها با اهمیت میشوند.
مدیران سرور همچنین باید در مورد حافظه سیستم یاد بگیرند تا آن را برای بهترین عملکرد بهینه کنند. به این ترتیب، آنها میتوانند در مورد برنامههای پر مصرف (rouge) که با مسدود کردن حافظه سیستم، کل سیستم را کند میکنند، آشنا شوند که میتواند برنامههای جدید یا حتی فرآیندهای کرنل اصلی لینوکس را مسدود کند.
علاوه بر این، میتوانید از میزان استفاده از حافظه در دستورات لینوکس برای اطلاع از کل حافظه فیزیکی نصب شده بر روی سیستم استفاده کنید. همچنین اطلاعاتی در مورد پارتیشنهای swap لینوکس، از جمله سایر اطلاعات حیاتی سیستم، ارائه میکند.
از طرف دیگر، مدیران وب نیز می توانند از این ابزارها برای بررسی میزان مصرف حافظه در سرورهای لینوکس خود استفاده کنند. به این ترتیب، آنها می توانند یاد بگیرند که آیا سرور می تواند بازدیدکنندگان سایت را در ساعات شلوغی مدیریت کند یا خیر. اگر استفاده از حافظه خیلی زیاد است، همیشه میتوانید حافظه فیزیکی بیشتری برای مدیریت ترافیک پیک اضافه کنید.
دستور cat برای نمایش میزان استفاده از حافظه لینوکس
دستور cat در لینوکس امکان میدهد دادهها را از فایلها بخوانید و خروجی را به ترمینال ارائه میدهد، دستور cat مخفف Concatenate است. از طرف دیگر، لینوکس تمام اطلاعات استفاده از حافظه را در فایل proc/meminfo/ ذخیره میکند. بنابراین، میتوانیم هر دوی آنها را ترکیب کرده تا اطلاعاتی در مورد حافظه موجود و استفاده شده نشان دهیم.
برای انجام این کار، دستور زیر را اجرا کنید:
cat /proc/meminfo
این خروجی استفاده از حافظه سیستم در زمان واقعی است. علاوه بر این، میزان استفاده از حافظه اشتراکی در لینوکس را نیز فهرست میکند. اگر به دنبال اطلاعات بافرها هستید، آن را هم از اینجا دریافت خواهید کرد.
cat /proc/meminfo
همانطور که متوجه شدید، proc/meminfo/ تمام فرآیندها، بافرها و استفاده از حافظه مشترک را بر حسب کیلوبایت فهرست میکند. MemTotal کل حافظه سیستم شما است. MemFree، حافظه آزاد را نمایش میدهد و MemAvailiable را خواهید دید که شبیه به MemFree است و امکان میدهد بدانید چه مقدار حافظه برای فرآیندهای جدید در دسترس است.
سایر مقادیر به شرح زیر است:
- Buffers: مقدار حافظه مورد استفاده بافرها
- Cached: مقدار حافظهای که به عنوان حافظه کش استفاده میشود.
- SwapTotal: مقدار کل حافظه swap
- SwapFree: حافظه swap موجود
همچنین می توانید از دستورات زیر برای نمایش مقادیر مختصرتر استفاده کنید.
Less /proc/meminfo
more /proc/meminfo
دستور free برای دیدن حافظه آزاد و استفاده شده در لینوکس
دستور free روشی شسته و رفته برای اطلاع از وضعیت فیزیکی و حافظه swap سیستم است. مقدار کل، مقدار استفاده شده و حافظه آزاد را به همراه مقادیر اشتراکی و buff/cache فهرست نموده و در نهایت، حافظه موجود را نیز لیست میکند.
برای اجرای دستور عبارت زیر را در ترمینال تایپ کنید.
free
به طور پیش فرض، مقادیر را به کیلوبایت نشان میدهد. اگر به خروجی در مگابایت (MB) نیاز دارید، از فلگ m استفاده کنید.
Free -m
- Total: کل RAM سیستم را نشان میدهد. در این مثال، 7901 مگابایت است.
- Used: رم استفاده شده سیستم را نشان میدهد. در این مثال، 303 مگابایت است.
- Free: حافظه آزاد سیستم را نشان میدهد. در این مثال، 7452 مگابایت است.
- shared: در اینجا میزان استفاده از حافظه توسط فایلسیستم tmpfs را خواهید یافت.
- Buff/cache: حافظه مورد استفاده بافر و کش را فهرست میکند.
- Available: حافظه موجود سیستم برای برنامه های جدید. به عبارت دیگر، هر اپلیکیشنی میتواند از حافظه موجود بدون اتکا به حافظه swap استفاده کند.
ستون Memory تمام اطلاعات فوق را فهرست میکند. در مورد Swap، شما فقط مقادیر Total، Used و Free را دریافت میکنید.
در نهایت، اگر می خواهید آن را در خط نمایش دهید، باید از دستور زیر استفاده کنید.
free -t -m
دستور vmstat برای گزارش آمار حافظه مجازی در سیستم لینوکس
اگر فقط میخواهید در مورد آمار حافظه مجازی بدانید، از دستور vmstat استفاده کنید. سینتکس دستور عبارت است از:
vmstat
آمار حافظه مجازی شامل processes، paging، block device، memory، traps، disks و CPU را گزارش میکند.
با این حال، خروجی آن به راحتی قابل خواندن نیست. اگر vmstat را در ترمینال تایپ کنید خروجی زیر را دریافت خواهید کرد.
همانطور که می بینید، خروجی واضح نیست. برای دور زدن آن، می توانید از سوئیچ -s استفاده کنید. این دستور vmstat را مجبور می کند تا مقادیر را در یک ستون نشان دهد. این کار خواندن را آسان می کند.
vmstat -s
با vmstat، میتوانید میزان استفاده از حافظه در لینوکس را بررسی کرده و در مورد خلاصههای مختلف سیستم اطلاعات کسب کنید. به همین دلیل است که vmstat بیشتر یک ابزار مانیتور بر سیستم است که چیزی بیش از بررسی میزان مصرف رم ارائه میدهد.
برخی از گزینه های منحصر به فرد آن عبارتند از:
- a Active-: امکان میدهد حافظه فعال و غیر فعال سیستم را کشف کنید.
- f- : تعداد دفعاتی که سیستم از زمان بوت شدن فورک شده است را فهرست میکند.
- d- : از آن برای نشان دادن فضای دیسک و سایر آمار دیسک استفاده کنید
به طور خلاصه، میتوانید از vmstat برای اطلاع در مورد procs، فضای swap، IO سیستم عامل، وقفهها و سوئیچهای زمینه استفاده کنید. علاوه بر این، میتوان در مورد استفاده از CPU، از جمله زمان اجرای کد کرنل،non-kernel code، زمان صرف شده در حالت idle و موارد دیگر اطلاعات کسب کنید.
خرید وی پی اس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
دستور top برای بررسی استفاده از حافظه
دستور top یکی دیگر از دستورات مفید برای بررسی میزان مصرف حافظه در سیستم عامل لینوکس است که یک خلاصه سیستم را ارائه داده و دسترسی به حافظه و استفاده از CPU را نمایش میدهد
سینتکس دستور top به صورت زیر است:
top
هنگامی که دستور top را اجرا میکنید، دسترسی به اطلاعات زیر را ارائه میدهد:
- فرآیندهای سیستم حافظه/ swap
- تعداد کاربران وارد شده
- میانگین لودروی سیستم
- زمان فعال بودن سیستم
- تعداد وظایف در حال اجرا فرآیندها
- تعداد استفاده از CPU
و خروجی فرمان top برای بررسی میزان مصرف حافظه به شرح زیر است:
دستور top قابلیت سفارشی سازی از طریق معیارهای مشخص شده توسط کاربر را دارد که باعث تعاملی شدن آن میشود و همچنین به صورت دورهای به روز میگردد. بنابراین، اگر نیاز به بررسی مصرف حافظه در زمان واقعی دارید، می توانید از دستور top استفاده کنید.
با اطلاعات CPU شروع شده و به دنبال آن استفاده از حافظه است. در پایین، یک برگه پردازش دارد که فرآیندها را به صورت جداگانه فهرست میکند. علاوه بر این، هر فرآیند دارای جزئیات لیست شده است، از جمله:
- PID (شناسه فرآیند)
- User
- PR (اولویت فرآیند)
- NI (ارزش Nice)
- VIRT (حافظه مجازی مورد استفاده در فرآیند)
- RES (استفاده از RAM فیزیکی توسط آن فرآیند خاص)
- SHR (مصرف RAM مشترک توسط آن فرآیند خاص)
- %CPU (مصرف CPU را برای فرآیند نشان می دهد)
- $MEM (مصرف حافظه برای فرآیند را نشان می دهد)
- TIME+ (زمان CPU فهرست شده در صدم ثانیه)
- COMMAND (نام فرمانی را که فرآیند را شروع کرده است فهرست کنید
دستور htop برای یافتن لود حافظه هر فرآیند
دستور htop تکامل یافته از top است. کنترلهای بهتر و محیطی کاربرپسند را برای کاربران ارائه میدهد.
سینتکس دستور عبارت است از:
htop
به محض اینکه آن را وارد کردید، نمایش تصویری زیر ظاهر می شود:
مانند دستور top، دستور htop در زمان واقعی(real-time) به روز میشود. دارای سه بخش اصلی است. بخش اول به صورت بصری دادههای ارزشمندی از جمله رم نصب شده، مقدار حافظه باقیمانده، تعداد کارهای در حال اجرا، میانگین لود و زمان آپدیت را ارائه میدهد.
در بخش دوم، تمام دادههای مربوط به فرآیند را مشاهده خواهید کرد. برخلاف دستور top، میتوانید در اینجا اقداماتی را روی هر فرآیند انجام دهید.
پایین (بخش سوم) جایی است که همه گزینههای موجود مانند Setup (F2)، Search (F3)، F5 (Tree) و غیره را خواهید یافت.
در بسیاری از سیستمها از قبل نصب نشده است، زیرا از دستور top جدیدتر است. برای نصب آن، دستور زیر را اجرا کنید:
sudo apt install htop
sudo apt-get install htop
ابزار رابط کاربری گرافیکی(GNOME Desktop) برای مشاهده میزان مصرف حافظه
سیستمهای لینوکس برای کار با یک رابط خط فرمان ایجاد شدهاند. با این حال، اگر دوست ندارید با خروجی خط فرمان کار کنید، همیشه میتوانید از یک ابزار رابط کاربری گرافیکی مانند GNOME desktop برای بررسی میزان استفاده از حافظه استفاده کنید.
برای انجام این کار، باید دستور زیر را در خط فرمان اجرا کنید:
gnome-system-monitor
اگر Command کار نکرد، باید آن را نصب کنید.
sudo apt install gnome-system-monitor
با رفتن به system> Administrator> System Monitor میتوانید به آن دسترسی داشته باشید.
همانطور که مشاهده میکنید پنجره دارای سه زبانه است: Processes، Resources و File Systems. میتوانید بین هر برگه جابجا شوید تا در مورد آنها اطلاعات کسب کنید.
جمعبندی
دستورات cat، htop، vmstat، top و free برای بررسی حافظه در سیستم لینوکس را بررسی کردیم. برای مشاهده میزان استفاده از حافظه سیستم لینوکس میتوانید از هر کدام از آنها استفاده کنید. با این حال، یادگیری سینتکس تفسیر خروجی این دستورات بسیار مهم است که به شما امکان میدهد مشکلات حافظه را عیب یابی کنید، به خصوص اگر یک توسعه دهنده یا یک مدیر سیستم باشید.
نظرتون برامون مهمه شما اولین نظر رو بنویسید