مقداری زیادی از کارها به داخل زیر سیستم مدیرت حافظه در سری های کرنل l inux.2.5 منتقل شده است ونسبت به تا (سیستم حافظه مجالس ) حالت پایداری بیشتری را در تنوعات زیادی از پارمان کاری دارد. و همچنین بیشتر مسائل مقیاس پذیری حل شده و منجر به عملکرد بیشتر mamgement memory بر روی ماشینهای بزرگبر ( با ram بیش از 1GB یا دارای بیش از یک praccassor یا هر دو ) شده است. بعضی از این تغییرات برای ماشینها ی کوچک نیز سودمند است و در سریهای کرنل 2..4 تقسیمات اصلی linux به طور گستردهای از کرنل mainline بخصوص از محیط um منشعب شده است.
این مسئله باعث به وجود آمدن مداوم مسائلی و تلاش مضاعف به هدر رفته در ویژگیهای پیاده سازی میشود سریهای 2.5 گشته ( در آنها هم هست ). سریهای 2.4 تحت مدیریت andrew morton است که بنیان مستحکم برای پیشرفتهای آتی فراهم میآورد. و همچنین پتانسیل بیشتری برای کار مشترک بیشتر ، این مقدار در صورت تغییرات که در سیستم 1inux um بهای 2.5 صورت گرفته است که به طور قابل ملاحظهای ماشینهای بزرگبر را فشرده میکند میکند و همچنین تغییراتی که برای آینده میشوند را در بر میگیرد که بیشتر آنها در حال حاضر به عنوان قطعات جدا موچود میشوند ماشینهای بزرگبر همچنین باید از عهده تعداد زیادی از فعالیتهای همزمان بر آیند که منظور من حد تا میباشد. به منظور سادگی و صراحت و اختیار ما ، ماشین l A 32 با mode PAE با طرح حافظه فرمان را در این مقاله در نظر میگیریم این محاسبات بر روی یک سیستم 16-cpu numa-o گرفته است.
Lntrodueticn
اقتصاد بازار و رواج سیستمهای 32bit بزرگ را تحمیل میکند با وجود اینکه نرم افزار هم بوجود میآید گرجه chip های 64bit ارزان شروع به ظهور کردن اما آنها هنوز مانند سیستمهای بزرگ در دسترس نیستند اگر چه تکنیکها و دست آوردهای توصیف شده در این مقاله ، بدون هیچ هدفی تنها در این ماشینها کاربرد دارد
محیط مجازی erlobal kernel
شکل اساسی ماشینهای 3.2bit فقدان فضای آدرس دهی مجازی هم برای کاربرد و هم کرنل 3.2bit ما را محدود به 4Gb میکند هر فضای آدرس دهی پردازشهای کاربر فقط مربئط به همان فرآیند میشود اما فضای آدرس دهی کرنل ، erlobal است برای تعمین عملکرد مناست در فضای آدرس دهی کاربر با فضای آدرس دهی کرنل تقسیم میشود ( به اشتراک گذاشته میشود )
انشعاب فضای آدرس دهی پیش فرض 0------
ممکن است که بتوان این انشعاب را تغییر داد اما اغلب مطلوب نیست بعضی از کاربردها نظیر بانکهای اطلاعاتی به مقدار خیلی زیادی فضای آدرس دهی برای پردازش نیاز دارند در صورتیکه کرنل نیازمند فضای زیادی برای ساختارهای اطلاعاتی خواص باشد. اولین حافظه فیزیکی 896 mB به صورت 1:1 در فضای آدرس دهی erlobal مشترک نقاشی کند. این دامنه حافظه به
عنوان حافظه پایین شناخته میشود ( zone-normal ) حافظه بیش از 896mB بعنوان حافظه بزرگ شناخته میشود ( zome-hiGihmem ) هرچه بیشتر حافظه فیزیکی به ماشین اضافه شود فشار بیشتری را بر محیط کرنل erlobal وارد آودرهایم ، کرنل استاندارد linux 2.4 از عهده مقادیر زیادی از حافظه بر میآید شاید در بهترین حالت به 4GB محدود شود اشتعابات inler price ، linux 2.4 با 16 GB تا 32GB حافظه کار میکند که بستگی به انشعاب دارد.
Limux 2.5 از عهده حافظه ای تقریبآ 32GB بر میآیند متآسفانه بیشتر اطلاعاتی که در فضای آدرس دهی کرنل گذاشته شده است قابل تبادل نمیباشد و کرنل linux اغلب این اطلاعات را به طور شا بستهای تحت فشار حافظه خورد نمیکند بنابر این حالت شکست اغلب قابل تشخیص نمیباشد و حافظه متوقف میشود و سیستم hang میکند.
مصرف فضای اصلی ، فضای کرنل
. mem-map (physicol page cintrol structures )
. slab caches partiulaly :
- bupter-head
- denlry-cache
- inode-cache
. pagetables
mem-mup یک آرایه از کنترل است که هر یک برای یک صفحه فیزیکی RAM
در سیتم میباشد در یک ماشین 16 GB ، 19 درصد فضای آدرس دهی را میگیرد برای فضای آدرس دهی 64GB ، 48 درصد محل فضای کل که در اختیار داریم در بر میگیرد که
فضای ناکافی را برای متن و اطلاعات کرنل نرمال باقی میگذارد در صورتی که ماشین boot شود نیز قابل استفاده نمیباشد.
Willian irwin و hugh dickins ، تکنولوژی را به نام c luster های صفحهای پیاده سازی میکنند که یک ساختار کنترلی صفحه را به وجود میآورد و بنابر این به شدت فضای گرفته شده را کاهش میدهد ( یک گروه8 صفحهای از 48 درصد فضابه 9 درصد کاهش مییابد.)
Kmap
کرنل دسترس مستقیم دائمی به حافظه پایین وارد اما نیازمند اجرای عملیات خاص برای نگاشت حافظه بالا میباشد حافظه بالا معمولآ یک صفحه 4 k را نگاشت میکند از طریق دو مکانیزم اصلی
1- kmap مداوم
2- kmap اتمی
یک شماره وارد تا آزاد شدن ورودیها ، شماره به صفر نزول میکند و آنها به عنوان کثیف شناخته میشوند زمانیکه ما به انتهای این منبع میرسم تمام منابع با لبه صفر به عنوان تمیز علامت گذاری میشوند یک table elash در سیستم طلب میشود و با فرمان ممکن است دوباره استفاده شوند تمام این عملیات erlobal وقت یک قفل erlobal ( kmup - loch ) انجام میشوند.
Kmup اتمی تعداد کمی ورودی در هر cpu دارد هر کدام برای یکی از عملیات ویژه ( که ممکن است مجبود به انجام همزمان شوند بنابر این ورودی کافی نسبت ) برای استفاده از slot ، kmup اتمی یک ورودی t lb واحد باید flash شود موتها بر روی یک cpu .
این مسئله عملیات بدون قفل را مجاز کند و مدیریت اطلاعات محلی cup ( local data ) را نیز مجاز میکند اگر چه به خاطر طبیعت c pu local نگاشت ، احتمال s leep سیستم و یا انتقال به یک cpu دیگر به هنگام این نگاشت وجود ندارد.
مسئلهای که در آن k miup یا به وجود میآید منجر به استفاده خیلی زیاد و شدت سرعت پایین میآید
page tsbler
page table آدرسهای مجازی بردازش را به آدرسهای فیزیکی ماشین نگاشت میدهد برای ماشین IA32 با PAE هر ورودی PTE که یک صفحه 4K را کنترل میکند 8bit فضا را اشغال میکند..
میشود به عبارت دیگر ، بار اضافی PTE 2درصد RAM فیزیکی میباشند اگر ما هیچ اشتراکی اجرا نگذاشته باشیم اگر چه در بیشتر بارهای کاری مقادیر قبل ملاحضان از فضا بین فرآیند ها تقسیم میشود یا در کتابخانههایی تقسیم شده با در سگمنتهای حافظه تقسیم شده بخصوص بارهای کاری datnbase DB اغلب از شگفتیهای تقسیم شده زیادی به عنوان مثال 2erB استفاده میکند که بین تعداد زیادی از فرآیندها تقسیم میشود زمانیکه خود حافظه بین فرآیندها تقسیم میشوند psgetable ما دو برابر میشود. یک copy برای هر فرآیند.
بنابر این برای 5000 فرآیند که نقشه سگمنتی 2 er B را تقسیم
میکند بار سرباز PTE برای آن سگمنت 20erB از حافظه است. ( یعنی باز اضافی 1000 برابر فضای مصرف شده است ) با
تقسیم سطح PTE ، pngetable توسط dave mecracken پیاده سازی شد این مسئله ما را قادر میسازد که نگاشتهای مسخصهای را بر روی محیط های بزرگی ، بر اساسهای مختلف تقسیم کنیم. که از این طریق بار اضافی نگاشت را برای آن مورد خاص از 2 0erB به 4 erB کاهش میدهیم.
یک منبع استاتیک حافظه که برای صفحات زیادی نگه داشته شده است در هنگام bootبه وجود میآید و به کاربرهایی که آنرا از طرق یک f lag تقاضا میکند به حافظه اشتراکی ساخته شده. کا ر آتی برای ایجاد یک مکانیزم انعطاف پذیرتر طراحی شده است که در آن نگه داشتن یک تعداد از صفحات stutic صد سوری page tsble هایی که به طور بالقوه بر روی سیستمها قابل استفاده هستند ممکن است سطح سوم p age table را داخل محیط محافظه بالا قرار دهیم بجای اینکه در حافظه e rlabal kevnel قرار دهیم.
با وجود اینکه مسئله از نظر مصرف فضا بهتر است. اما به قیمت زیاد شدن زمان میشود اگر چه پیاده مسیرهایی مدرن page tuble های حافظه از kmup اتمی استفاده میکند. هزینه بارگذاری نصب نگاشتها برای دسترسی چنین استفاده سنگینی گران میباشد. بخصوص برای بارهای کاری که فرآینده را به طور مداوم ایجاد و نابود میکند. برای تکامل kermel بار اضافی highpte افزایش در حدود 8 درصد زمان سیستم بود.