حتماً شما نیز هنگام کار با لینوکس، بارها سیستم‌تان هنگ کرده است. این اتفاق معمولاً به دلیل سرریز مصرف حافظه فیزیکی یا RAM رخ می‌دهد.

به منظور درک حافظه Swap در لینوکس، در اینجا به شرح مفهوم RAM و نحوه واکنش سیستم لینوکس هنگام سرریز ظرفیت RAM پرداخته شده است.

 

اجتناب از سرریز ظرفیت RAM بسیار حائز اهمیت است؛ زیرا در دسترس نبودن فضای کافی RAM می‌تواند، باعث افزایش زمان انتظار I/O و کاهش پاسخگویی سیستم شود. به منظور جلوگیری از این رخداد، سیستم لینوکس از فضای Swap استفاده می‌کند و بدین صورت برای شما تضمین می‌کند که حافظه فیزیکی سیستم شما درگیر و متوقف نمی‌شود.

 

این مطلب نیز ممکن است برای شما مفید باشد: غیرفعال کردن حافظه Swap در لینوکس

 

نحوه استفاده از RAM

RAM یا حافظه دسترسی تصادفی (Random Access Memory)، مهم‌ترین بخش هر دستگاه دیجیتالی است؛ چراکه قطعه‌ای است که تمام داده‌های لحظه‌ای مورد استفاده پردازنده در آن ذخیره می‌شود.

این مکان حافظه در مقایسه با مکان‌های دیگر مانند HDD یا SSD، توسط پردازنده بسیار سریع‌تر قابل خواندن است.

به دلیل ماهیت فرار RAM، این حافظه تنها داده‌هایی را که در حال حاضر استفاده می‌شود، ذخیره می‌کند. بنابراین، به محض خاموش شدن سیستم، تمام داده‌های ذخیره شده روی آن از بین می‌رود. از این رو، به منظور ذخیره دائمی داده‌ها باید از دستگاه‌های ذخیره سازی مانند HDD ،SSD یا درایو نوری استفاده نمایید.

این دستگاه‌های ذخیره سازی در موارد دیگری نیز به شما کمک می‌کنند. یکی از این موارد، زمانی است که مصرف RAM نزدیک به ظرفیت کامل است و نمی‌تواند همه داده‌های مورد نیاز را همزمان نگه دارد. این، همان مفهوم swap memory در لینوکس است.

 

درک حافظه swap در لینوکس

حافظه Swap در لینوکس به منظور جلوگیری از سرریز اطلاعات در RAM و در صورت مواجه شدن سیستم با بار زیاد استفاده می‌شود. این کمک می‌کند که سیستم به دلیل کمبود حافظه واکنش نشان ندهد. علاوه بر این، تضمین می‌کند که برنامه‌ها یا پردازش‌ها با خطاهای "out-of-memory" مواجه نمی‌شوند.

 

این مطلب نیز ممکن است برای شما مفید باشد: افزایش اندازه حافظه Swap در اوبونتو

 

نحوه عملکرد حافظه swap

از نقطه نظر حافظه، یک صفحه، یک بلوک ثابت از فضای حافظه است. بلوک‌های داده‌ای که حافظه RAM را اشغال می‌کنند، در قالب همین صفحات ذخیره می‌شوند.

در صورت نزدیک شدن حافظه RAM به ظرفیت کامل، سیستم عامل باید فرایندهایی را که از این حافظه استفاده می‌کنند، اولویت بندی نماید. بدین منظور سیستم عامل، داده‌های قدیمی یا فرایندهایی را که دیگر قابل استفاده نیستند، به منظور آزادسازی RAM انتخاب می‌کند. سپس این داده‌ها در یک بخش از پیش تعریف شده از دستگاه ذخیره سازی ROM برروی سیستم نوشته می‌شوند. این بخش به عنوان "فضای swap" شناخته می‌شود.

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

 

دلیل اهمیت حافظه swap

فضای RAM یک منبع گران‌بها است. این فضا برای همه فرایندها مورد نیاز است. به همین دلیل مبادله حافظه در لینوکس به سیستم عامل اجازه می‌دهد تا منابع موجود را متعادل کند. این، به نوبه خود، منجر به افزایش کارایی سیستم شما می‌شود.

اگرچه دسترسی به اطلاعات ذخیره شده در حافظه swap در لینوکس نسبت به اطلاعات ذخیره شده در RAM زمان بیشتری می‌گیرد. با این حال، این مسئله مشکلی ایجاد نمی‌کند.

تمام داده‌های نوشته شده در حافظه swap به محض آزاد شدن حافظه RAM یا مورد نیاز بودن داده‌ها برای یک فرآیند فعلی، در آن حافظه بارگیری می‌شوند. این باعث می‌شود که حافظه swap در لینوکس به منظور جلوگیری از هرگونه خطای out-of-memory برای فرایندهای در حال اجرا در سیستم شما، در برابر خرابی ایمن گردد.

بخاطر داشته باشید که حافظه swap تنها برای سیستم‌هایی توصیه می‌شود که از درایو‌های دیسک سخت مکانیکی استفاده می‌نمایند.

در مورد سیستم‌هایی که از Solid State Drives استفاده می‌کنند، ایجاد پارتیشن حافظه swap باعث تخریب سخت افزار در طولانی مدت می‌شود. بدین معنی که عمر SSD شما را کاهش داده و منجر به از بین رفتن حافظه می‌شود.

 

این مطلب نیز ممکن است برای شما مفید باشد: پاک کردن حافظه نهان در Laravel

 

بررسی تخصیص حافظه swap سیستم

در اکثر سیستم‌ها، معمولاً با اصطلاحی در مورد حافظه روبه‌رو می‌شویم که به آن «حافظه مجازی» می‌گویند. حافظه مجازی، فضایی روی سیستم است که با مجموع حافظه RAM و Swap در لینوکس برابر است.

تقریباً همه سیستم‌های مدرن لینوکس به طور پیش فرض پارتیشن swap را ارائه می‌دهند تا از شرایط سرریز حافظه جلوگیری کنند.

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

به منظور بررسی کل تخصیص حافظه و استفاده از حافظه مجازی در سیستم خود، دستور زیر را در ترمینال خود تایپ نمایید.

free -h

 

همانطور که در خروجی مشاهده می‌کنید، این حافظه، کل حافظه RAM و swap را به شما نشان می‌دهد.

علاوه‌بر‌این، میزان حافظه مورد استفاده در لحظه و میزان حافظه آزاد موجود در سیستم را نیز به شما نشان می‌دهد.

اگر می‌خواهید اندازه پارتیشن swap را در سیستم خود بدست آورید، می‌توانید به کمک دستور cat از طریق خط فرمان، به منظور نمایش محتویات فایل پیکربندی swap ذخیره شده در /proc/swap استفاده نمایید:

cat /proc/swaps

در اینجا، ما فضای swap را روی سیستم خود پیکربندی نکرده‌ایم؛ اما شما می‌توانید این دستور را به منظور مشاهده فضای swap پیکربندی شده برای سیستم خود نیز اجرا کنید.

 

 

 

منبع:

journaldev