در بیشتر توزیعات لینوکس پارتیشنی به اسم Swap حین نصب ایجاد می‌شود یا کاربر آن را به صورت دستی و به تناسب نیاز، ایجاد می‌کند.  این پارتیشن چند کاربری مهم دارد. ممکن است این پارتیشن برای کاربران ویندوز عجیب به نظر برسد چرا که معمولاً اغلب کاربران ویندوز و حتی Linux، سیستم عامل را روی یک پارتیشن نصب می‌کنند اما در واقع در ویندوز هم امکان Hibernate کردن و همین‌طور استفاده از هارددیسک در نقش RAM وجود دارد.

در این مقاله به معرفی پارتیشن Swap در لینوکس و کاربرد آن می‌پردازیم و به این سوال پاسخ می‌دهیم که آیا وجود این پارتیشن ضروری است یا خیر؟ با سیاره‌ی آی‌تی همراه شوید.

پارتیشن Swap چه کاربردی دارد؟

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

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

با توجه به توضیحات فوق روشن است که استفاده از پارتیشن Swap در نقش رم سیستم، از نظر عملکرد ایده‌ی خوبی نیست. حتی اگر به جای هارددیسک، از درایوهای سریع SSD و به خصوص درایوهای SSD با پروتکل NVMe استفاده کنید هم عملکرد مشابه استفاده از RAM نخواهد بود. در واقع پهنای باند حافظه‌ی کش سطح ۱ و ۲ و ۳ پردازنده به مراتب بالاتر از پهنای باند RAM است و پهنای باند RAM نیز به مراتب بالاتر از پهنای باند انواع SSD و HDD است.

 نکته‌ی مهم این است که پارتیشن Swap کاربردهایی به جز ایفای نقش رم دارد و شاید گاهی ضرورت پیدا می‌کند. در سیستم عامل ویندوز هم پدیده‌ی مشابهی به اسم Page File وجود دارد که به نوعی جایگزین رم محسوب می‌شود. البته تفاوت‌های تکنیکی زیادی بین پیج فایل و پارتیشن سوپ وجود دارد و نمی‌توان این دو را یکسان فرض کرد. در ادامه دیگر کاربردها و نقش پارتیشن Swap دارد را مرور می‌کنیم.

اولویت‌بندی داده‌ها

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

میزان انتقال داده از رم به پارتیشن سوپ قابل تنظیم است. می‌توانید swappiness را افزایش دهید تا احتمال انتقال داده‌های کم‌کاربردتر به پارتیشن سوپ بیشتر شود.

هایبرنیت کردن

در سیستم عامل ویندوز زمانی که می‌خواهید سیستم را به گونه‌ای خاموش کنید که پس از روشن کردن، نیازی به بوت شدن کامل سیستم عامل و اجرا شدن پردازش‌ها و برنامه‌ها نباشد، می‌بایست به جای خاموش کردن یا Shutdown از گزینه‌ی Hibernate یا Sleep استفاده کنید. در لینوکس نیز امکان هایبرنیت کردن وجود دارد.

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

بنابراین بدون پارتیشن Swap امکان هایبرنیت کردن در Linux وجود ندارد.

آیا وجود پارتیشن Swap ضروری است؟

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

پارتیشن Swap در لینوکس چیست، چه کاربردی دارد و آیا وجود آن ضروری است؟

مزایای پارتیشن سوپ را ذکر کردیم اما بد نیست به معایب آن هم اشاره کنیم، شاید با توجه به معایب، به این نتیجه برسید که نیازی به پارتیشن سوپ ندارید.

معایب پارتیشن سوپ

اولین عیب پارتیشن Swap این است که بخشی از فضای هارددیسک یا SSD سیستم شما را اشغال می‌کند. اندازه‌ی پارتیشن سوپ به صورت خودکار تغییر نمی‌کند و در واقع ثابت است و این یعنی مجبور می‌شوید بخشی از فضای درایو ذخیره‌سازی را برای همیشه به آن اختصاص دهید.

دومین عیب پارتیشن سوپ این است که میزان فرسایش هارددیسک و به خصوص SSD را بیشتر می‌کند. عمر مفید درایوهای SSD با میزان نوشتن داده متناسب است و اگر مرتباً داده‌هایی روی پارتیشن سوپ ذخیره شود، طبعاً عمر مفید SSD سیستم شما کاهش پیدا می‌کند.

عیب بعدی این است که اگر هارددیسک سیستم شما کند باشد، با ایجاد پارتیشن Swap، بهبود عملکرد در اغلب کاربردها، ناچیز خواهد بود. به عنوان مثال فرض کنید که مرورگر گوگل کروم را نصب کرده‌اید و تعداد زیادی تب باز کرده‌اید و در عین حال سیستم شما فقط ۲ گیگابایت رم دارد. طبعاً از پارتیشن Swap برای باز نگه داشتن تعداد زیادی تب استفاده خواهد شد اما مشکل اینجاست که هارددیسک سیستم شما کند است. لذا متوجه می‌شوید که مرورگر کروم بسیار کند عمل می‌کند! شاید در نهایت مجبور شوید که مرورگر کروم را ببندید و از نو اجرا کنید.

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

اگر پارتیشن Swap نداشته باشیم، چه اتفاقی می‌افتد؟

اگر تصمیم گرفته‌اید که از پارتیشن Swap به کلی استفاده نکنید، به چند نکته توجه کنید:

آیا کامپیوتر شما به قدر کافی RAM دارد؟

اگر مقدار رم کم است، به فکر ارتقا دادن باشید یا به ناچار از پارتیشن Swap استفاده کنید. در غیر این صورت ممکن است هر از گاهی سیستم شما هنگ کند و نرم‌افزارها بسیار کند عمل کنند. ممکن است مجبور شوید که مرتباً برخی پردازش‌ها و نرم‌افزارهای اضافی را به صورت اجباری ببندید تا فضای رم کمی خالی شود.

توصیه‌های مهم در مورد پارتیشن Swap لینوکس

در خصوص انتخاب حجم پارتیشن سوپ به موارد زیر توجه فرمایید:

  • اگر می‌خواهید سیستم لینوکسی را Hibernate کنید، ایجاد پارتیشن Swap الزامی است. حجم پارتیشن را حدود ۱۰ تا ۲۵ درصد بیشتر از حجم RAM سیستم انتخاب کنید تا فضای کافی برای هایبرنیت کردن و همین‌طور ذخیره کردن برخی داده‌های اضافی وجود داشته باشد.
  • اگر هدف شما از ایجاد پارتیشن Swap، بهبود عملکرد و استفاده از قابلیت هایبرنیت است، توجه کنید که می‌بایست سرعت هارددیسک یا SSD سیستم شما بالا باشد.
  • اگر معمولاً از اپلیکیشن‌هایی استفاده می‌کنید که به حافظه‌ی رم زیادی نیاز دارند، احتمالاً ساخت پارتیشن Swap مفید خواهد بود. البته اگر هایبرنیت کردن مدنظر نیست، می‌توانید حجم پارتیشن Swap را کمتر از حجم رم در نظر بگیرید.
  • اگر سیستم شما لپ‌تاپ است و هارددیسک ۲.۵ اینچی با سرعت دورانی ۵۴۰۰ دور بر دقیقه دارد، دقت کنید که سرعت درایو هارددیسک شما پایین است و استفاده از آن در نقش رم، کمک زیادی به بهبود عملکرد نمی‌کند و حتی ممکن است مشکل‌ساز شود.

تنظیم Swappiness در لینوکس

همان‌طور که اشاره کردیم برای افزایش احتمال انتقال داده‌ها از رم به روی پارتیشن Swap، می‌توانید کمیتی به اسم swappiness را افزایش دهید. برای این منظور می‌بایست یک فایل متنی ساده را تغییر دهید که در مسیر زیر موجود است:

/proc/sys/vm

همان‌طور که در تصویر زیر مشاهده می‌کنید، نام فایل موردبحث، دقیقاً swappiness است.

پارتیشن Swap در لینوکس چیست، چه کاربردی دارد و آیا وجود آن ضروری است؟

اما دقت کنید که برای ویرایش کردن این فایل و بازنویسی آن، به دسترسی ادمین نیاز دارید. لذا اپلیکیشن تکست ادیتور را با دسترسی ادمین اجرا کنید و سپس فایل موردبحث را باز کنید.

یک روش ساده برای این کار، استفاده از ترمینال است. به عنوان مثال اگر از توزیعی از لینوکس نظیر اوبونتو یا فدورا استفاده می‌کنید که تکست ادیتور پیش‌فرض GNOME یعنی gedit در آن به صورت پیش‌فرض موجود است، می‌توانید دستور زیر را در ترمینال وارد کرده و Enter را فشار دهید:

برای اطلاعات تکمیلی بهتر است مقاله‌ی زیر را مطالعه فرمایید:

فایل موردبحث باز می‌شود و می‌توانید آن را تغییر دهید. یک روش دیگر که محدود به تکست ادیتور gedit نیست، استفاده از فرمان زیر است:

می‌توانید عدد swappiness را بین 0 تا 100 وارد کنید. به عنوان مثال عدد ۲۰ به این معنی است که اگر میزان استفاده از رم به ۸۰ درصد برسد، انتقال داده‌ها از رم به پارتیشن Swap آغاز می‌شود. عدد پیش‌فرض Swappiness در لینوکس Ubuntu، عدد ۶۰ است و این یعنی زمانی که میزان استفاده از رم به ۴۰ درصد برسد، تدریجاً برخی داده‌ها از رم به پارتیشن سوپ منتقل می‌شوند.

پس از استفاده از فرمان فوق، می‌توانید فایل swappiness را باز کنید و بررسی کنید که عدد سوپینس به درستی تغییر کرده است یا خیر. به علاوه با باز کردن این فایل می‌توانید تنظیمات فعلی را بررسی کنید.