Swap چیست ؟ swap فضایی است که در یه قسمت از دیسک جانبی ایجاد میشه
در لینوکس وقتی استفاده میشه که حافظه ی رم (physical memory) شما پر شده اما هنوز هم به حافظه ی رم نیاز هست در این موقع کرنل صفحات غیر فعال که کمتر استفاده میشن رو به swap انتقال میده که این باعث میشه که در رم برای برنامه هایی که فورا به حافظه نیاز دارن حافظه ی خالی ایجاد بشه و دوباره وقتی که به اون صفحات منتقل شده به swap نیاز باشه اونها رو برمی گردنونه به رم . که به این اعمال به ترتیب میگن : swapping out و swapping in


[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

البته حافظه ی swapدر مقابل حافظه های دیگه خیلی کند هست .ولی اگه بهش نیاز باشه گاهی پیش میاد حافظه به طور پیوسته و چندین بار این دو عمل رو انجام میده تا یه فضای خالی برای اون برنامه ی اجرایی یا همون برنامه هایی که کاربر می خواد به طور هم زمان انجام بده ایجاد کنه .
کلا لینوکس به دوروش فضای swap دارد : پارتیشن swap و فایل swap . پارتیشن swap که یه قسمت مستقل هارد دیسک هست که فقط برای مبادله کردن (swapping) استفاده می شه و فایل های دیگه نمی تونن درونش قرار بگیرن .و فایل swap هم یه فایل خاص هست در فایل سیستم ، که در فایل داده ی شما و سیستمتون هست .
چه مقدار حافظه باید بهswap اختصاص بدیم ؟
من نمیدونم ولی مثل این که این از قدیم یک قانون بوده که حافظه ی swap باید دو برابر حافظه ی رم باشه البته فکر کنم دقیق ترش این باشه :
اگه فضای رم کمتر از ۲ گیگ بود اندازه ی swap دو برابر رم هست
اگه بیشتر از ۲ گیگ باشه حافظه ی اون برابر حافظه ی رم بعلاوه ی ۲ باشه !!!
اگه 4 تا 16 گیگ رم نیاز داشته باشه swap باید حداقل 4 گیگ باشه
اگه 16 تا 64 گیگ رم نیاز داشته باشه swap باید حداقل 8 گیگ باشه
اگه 64 تا 256 گیگ رم نیاز داشته باشه swap باید حداقل 16 گیگ باشه
(البته از درست بودنشون مطمئن نیستن فقط یه جا خوندم )
و البته هیچ وقت هم نباید کمتر از 32 مگابایت باشه .

البته من یه جا در یکی از این مقاله های انگلیسی دیدم که نوشته بود اینا همش ساختگیه البته به نظر من هم درست میگه چون تا الآن دلیلی برای این فرمولها پیدا نکردم تازه تو این مقاله های انگلیسیش هم هیچ دلیل درست و دقیقی پیدا نکردم چه برسه به ...
اون مطلبی که اونجا نوشته بود رو تقریبا تا اونجایی که خودم فهمیدم نوشتم ولی خوب شاید اشتباه هم کرده باشم :
ممکنه بعضی ها به شما بگن که برای swap دوبرابر حافظه ی رم فضا اختصتص بدید . اما این یک قانون ساختگی هست . این جا راه درست فهمیدن فضای اون رو می بینید :
تخمین بزنید که چه مقدار حافظه نیاز دارید . این بزرگترین مقدار حافظه ای هست که شما نیاز خواهید داشت برای مجموع حافظه های لازم برنامه هایی که شما می خواد هم زمان اجرا کنید که مقدارش رو با اجرا کردن همه ی برنامه هایی که شما همیشه خواید در یک زمان انجام بشن می فهمید.
برای مثال اگه شما می خواید برنامه ی xرو اجرا کنید به به ۸ مگابایت حافظه برای اون نیاز دارید و gcc چندید مگابایت حاففظه نیاز داره (بعضی فایلها مقدار غیر عادی تا حدود ده ها مگابایت حافظه نیاز دارن)و به همین ترتیب برنامه های دیگه .و کرنل در حدود یک مگابایت خودش استفاده می کنه و پوسته های معمولی و بقیه ی برنامه های کوچیک در حدود صدها کیلو بایت . نمی خواد دقیق تخمین بزنید . تخمین بزرگ بهتره.
( اگه چند نفر به طور هم زمان از یک سیستم استفاده کنند اونها همشون دارن حافظه رو مصرف می کنن . هرچند اگه دو نفر دریک زمان یه برنامه ای رو اجرا کنن مصرف حافظه ی رم دوبرابر نمیشه )
برای تضمین کردن مرحله ی قبل (چون ممکنه اشتباه صورت گرفته باشه و ممکنه شما فراموش کرده باشید که چند برنامه رو اجرا کنید ) و برای مطمئن شدن بهتره دو مگا بایت اضافه کنید (بهتر ه که حافظه ی بیشتری به swap اختصاص بدید تا حافظه ی کمتر ) البته نمی خواد خیلی زیاد باشه . این کار رو بکنید و کل دیسکتون رو اختصاص بدید و در صورتیکه فضای استفاده نشده ی swap فضای زائد هست فضای بیشتری به swap اضافه کنید
براساس محاسبه بالا شما می تونید بفهمید که چه مقدار حافظه لازم دارید حالا فقط باید حافظه ی ram رو از total memory کم کنید و بفهمید که چه مقدار حافظه ی برای swap لازم دارید (در بعضی از ورژن های unix باید فضایی رو برای ایمیج ram تون اختصاص بدید در این صورت همون محاسبه مرحله دو اون مقدار فضایی هست که شما نیاز دارید و نیازی به کم کردنش نیست)
اگه مقدار حافظه ی شما خیلی بیشتر از ram تون بود (بیشتر از دوبرابر )شما باید ram با حافظه ی بیشتری بزارید در غیر این صورت اجرا کند خواهد بود