• سیستم عامل برای اجرای هر برنامه ای ابتدا باید آن برنامه را در حافظه اصلی یا همان RAM بارگذاری کند. بدون قرار گرفتن برنامه در حافظه اصلی، امکان اجرای آن وجود ندارد.

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

    برای جلوگیری از بروز این مشکل، دو راهکار اصلی وجود دارد.

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

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

    حافظه swap چیست؟

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

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

    اندازه فضای swap چقدر باید باشد؟

    سوال مهم این است که چه مقدار فضا باید به swap اختصاص داده شود. در سیستم عامل های قدیمی مبتنی بر یونیکس مانند Sun OS یا Ultrix، معمولا فضای swap باید دو یا سه برابر حافظه اصلی می بود. اما در سیستم عامل های جدیدتر مانند لینوکس، این مقدار الزامی نیست، هرچند سیستم در صورت وجود فضای بیشتر می تواند از آن استفاده کند. برای تعیین اندازه مناسب فضای swap می توان به سه اصل زیر توجه کرد.

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

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

    برای سیستم های قدیمی تر که حافظه اصلی آنها 128 مگابایت یا کمتر است، بهتر است حداکثر مقدار ممکن فضای swap در نظر گرفته شود که حتی می تواند تا حدود 1 گیگابایت نیز باشد.

    نحوه ایجاد حافظه swap

    به طور معمول منطقی نیست که یک سیستم بیش از یک فضای swap داشته باشد. برای بررسی اینکه آیا سیستم شما در حال حاضر فضای swap دارد یا خیر، می توانید از یکی از دستورات زیر استفاده کنید:

    $ sudo swapon -s

    یا

    $ sudo swapon –show

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

    حافظه SWAP

    برای ایجاد فضای swap می توان از یک پارتیشن جداگانه استفاده کرد. اما در بسیاری از مواقع ممکن است سیستم شما پارتیشن خالی نداشته باشد یا ایجاد پارتیشن جدید برایتان دشوار باشد. در چنین شرایطی می توانید از یک فایل استفاده کنید و آن را مانند یک پارتیشن به سیستم معرفی کنید.

    در این مثال یک فضای swap به حجم یک گیگابایت ایجاد و فعال می شود. در صورت نیاز می توانید حجم بزرگتری در نظر بگیرید و کافی است مقدار 1G را با مقدار دلخواه خود جایگزین کنید.

    $ sudo fallocate -l 1G /swapfile

    اگر هنگام اجرای این دستور با خطایی مانند نصب نبودن fallocate یا خطای fallocate failed: Operation not supported مواجه شدید، می توانید به جای آن از ابزار dd استفاده کنید.

    در این حالت دستور به شکل زیر خواهد بود:

    $ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

    از آنجایی که فقط کاربر root باید به این فایل دسترسی داشته باشد، لازم است سطح دسترسی فایل را اصلاح کنیم:

    $ sudo chmod 600 /swapfile

    برای ساخت فضای swap از فایل ایجاد شده، از دستور mkswap استفاده می کنیم:

    $ sudo mkswap /swapfile

    پس از ایجاد، برای فعال کردن فضای swap دستور زیر را اجرا می کنیم:

    $ sudo swapon /swapfile

    برای دائمی شدن این تنظیمات، باید خط زیر را به فایل etc/fstab اضافه کنیم:

    $ sudo nano /etc/fstab

    و سپس این خط را در انتهای فایل قرار می دهیم:

    /swapfile swap swap defaults 0 0

    برای بررسی وضعیت فضای swap می توانید از یکی از دستورات زیر استفاده کنید:

    $ sudo swapon -s

    $ free

    $ vmstat

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

    تنظیم مقدار swappiness

    Swappiness یکی از پارامترهای هسته لینوکس است که مشخص می کند سیستم تا چه اندازه از فضای swap استفاده کند.

    مقدار swappiness عددی بین 0 تا 100 است. مقدار کمتر باعث می شود کرنل کمتر به فضای swap مراجعه کند و بیشتر به حافظه RAM متکی باشد. در مقابل، مقدار بالاتر باعث می شود استفاده از فضای swap افزایش پیدا کند.

    به صورت پیش فرض مقدار swappiness برابر با 60 است. برای مشاهده مقدار فعلی swappiness می توانید از دستور زیر استفاده کنید:

    $ cat /proc/sys/vm/swappiness

    برای تغییر دائمی این مقدار، خط زیر را به انتهای فایل etc/sysctl.conf اضافه کنید:

    $ sudo nano /etc/sysctl.conf

    و سپس مقدار مورد نظر را وارد کنید:

    vm.swappiness=10

    امیدوارم این آموزش برای شما مفید بوده باشد.

    میانگین امتیازات ۵ از ۵
    از مجموع ۱ رای