CCoW: بهینهسازی کپی روی نوشتن با توجه به موقعیت مکانی در بارهای کاری قسمت 1
Apr 02, 2024
خلاصه:
Copy-on-Write (CoW) یک تکنیک مدیریت حافظه ضروری است که به اشتراک گذاری صفحه کارآمد بین فرآیندها را امکان پذیر می کند. به طور خاص، ترکیب CoW با فورک سیستم فراخوانی، برنامهها، حتی با ردپای حافظه عظیم، میتوانند یک عکس فوری از دادههای موجود در حافظه در سربار کم بگیرند.
داده های حافظه به داده های ذخیره شده در حافظه کامپیوتر اشاره دارد. اگرچه با حافظه انسان متفاوت است، اما ارتباط خاصی بین این دو وجود دارد.
اول، داده های حافظه می توانند رشد حافظه انسان را ارتقا دهند. برای مثال، میتوانیم از توابع ضبط، ذخیرهسازی و بازیابی رایانهها برای کمک به یادگیری، به خاطر سپردن و درک دانش استفاده کنیم. فنآوری مدرن راههای کارآمدتری برای به خاطر سپردن و یادگیری را در اختیار ما قرار میدهد، که تضمین میکند که میتوانیم بر دانش و مهارتهای بهتر تسلط پیدا کنیم.
ثانیا، داده های حافظه همچنین می توانند به افراد در مدیریت بهتر حافظه خود کمک کنند. با سازماندهی و طبقه بندی دقیق داده ها، می توانیم اطلاعات مورد نیاز خود را سریعتر پیدا کرده و به یاد بیاوریم که برای زندگی، کار و مطالعه ما بسیار مهم است.
مهمتر از همه، داده های درون حافظه از از دست دادن حافظه انسان جلوگیری می کند. حافظه انسان به مرور زمان ضعیف می شود، فرآیندی که به آن «فراموشی» می گویند. با این حال، با ذخیره داده ها بر روی هارد دیسک کامپیوتر، می توانیم اطمینان حاصل کنیم که اطلاعات و حافظه های مورد نیاز ما در هر زمانی قابل حفظ و بازیابی هستند.
بنابراین می توان گفت رابطه بین داده های حافظه و حافظه انسان مثبت است. اگرچه نباید زیاد به فناوری تکیه کنیم، اما استفاده معقول از داده های حافظه می تواند کارایی کار و نتایج یادگیری ما را بهبود بخشد، به مدیریت بهتر حافظه کمک کند و از فراموشی جلوگیری کند. مشاهده می شود که ما نیاز به بهبود حافظه داریم و سیستانچ دسرتیکولا می تواند حافظه را به میزان قابل توجهی بهبود بخشد زیرا سیستانچ دسرتیکولا یک ماده دارویی سنتی چینی است که اثرات منحصر به فرد زیادی دارد که یکی از آنها بهبود حافظه است. اثربخشی سیستانش دسرتیکولا از ترکیبات فعال متعددی که شامل تانیک اسید، پلی ساکاریدها، گلیکوزیدهای فلاونوئید و غیره است، ناشی می شود. این مواد می توانند سلامت مغز را از طریق مسیرهای مختلف ارتقا دهند.

روی 10 روش برای بهبود حافظه کلیک کنید
با این حال، از آنجایی که CoW در هر صفحه در کنترل کننده خطای صفحه رخ می دهد، هر بار که خطای صفحه رخ می دهد، سیستم عامل باید درگیر شود. این منجر به کاهش قابل توجه عملکرد برای بارهای کاری فشرده می شود.
این مقاله کپی-نوشتن مبتنی بر پوشش (CCoW) را پیشنهاد میکند، یک طرح CoW بهینهشده با در نظر گرفتن محل دسترسی به حافظه برای کاهش مشکل CoW. CCoW موقعیت مکانی را در فضاهای آدرس فرآیند با مفهوم پوشش اندازه گیری می کند.
در حین پردازش CoW، CCoW چندین صفحه را از قبل برای مناطق حافظه با موقعیت بالا کپی می کند، در نتیجه دخالت سیستم عامل برای بارهای کاری فشرده را به حداقل می رساند. ما چالشهای اندازهگیری محل را توضیح میدهیم و بهینهسازی را برای پیادهسازی مفهوم ارائه میکنیم.
ارزیابی با یک نمونه اولیه نشان می دهد که این رویکرد می تواند عملکرد کلی برنامه ها را تا 10٪ با مقدار کمی از سربار حافظه بهبود بخشد.
کلمات کلیدی: کپی بر روی نوشتن; سیستم حافظه مجازی؛ چنگال؛ ردیس; خطای صفحه
1. معرفی
نقش اصلی یک سیستم عامل (OS) مدیریت منابع گرانبهای سیستم است و کپی بر روی نوشتن (CoW) یکی از اساسی ترین تکنیک های مدیریت حافظه است که توسط اکثر سیستم عامل های معاصر پذیرفته شده است.
هنگامی که دو یا چند فرآیند نیاز به داشتن داده های یکسان دارند، طرح CoW به فرآیندها اجازه می دهد تا صفحات مشابه را به اشتراک بگذارند تا اینکه بلافاصله صفحات را کپی کنند. صفحات اشتراکگذاریشده فقط زمانی که یکی از فرآیندها در صفحات اشتراکگذاری شده بنویسد تکراری هستند.
سیستمهای حافظه مجازی میتوانند به طور موثر اشتراکگذاری دادهها را بین فرآیندها فراهم کنند، و ویژگیهای مختلف حافظه مجازی، مانند کپی کردن فضای آدرس در طول فورکهای فرآیند، حذف تکراری از همان صفحات و اشتراکگذاری صفر، بر اساس کپی در نوشتن [1-3] پیادهسازی میشوند. با توجه به این ویژگیها، برنامهها میتوانند با فضای کم از خود یک کپی بسازند و از کلون به درستی استفاده کنند.
برای مثال، Redis، یکی از محبوبترین سیستمهای ذخیرهسازی کلید حافظه [4]، از کپی بر روی نوشتن در ارتباط با سیستم فورک برای فراخوانی دادههای ماندگار در حافظه به حافظه استفاده میکند. در حین ارائه درخواستهای ورودی، فرآیند اصلی Redis به صورت دورهای یک فرآیند فرزند را با فورک ایجاد میکند. فرآیند فرزند با یک عکس فوری حافظه مشابه با فرآیند اصلی شروع می شود تا داده های درون حافظه در حافظه ذخیره شود.

از آنجایی که عکس فوری از فضای آدرس فرآیند اصلی جدا شده است، اما توسط کپی روی نوشتن مدیریت می شود، فرآیندهای اصلی و فرزند به هیچ مکانیزم پیچیده ای برای حفظ ثبات بین داده های فعلی و عکس فوری نیاز ندارند.
بنابراین، میتوانیم در نظر بگیریم که کپی روی نوشتن در سیستم حافظه مجازی ضروری است. با این حال، کپی روی نوشتن فعلی در برنامههای کاربردی حافظه فشرده با حجم کاری فشرده نوشتن مشکلساز است. به طور خاص، تکرار داده ها معمولاً در صفحه خطا در سیستم عامل رخ می دهد. از آنجایی که تکرار داده ها در هر صفحه پردازش می شود، با چندین نوشتن، این فرآیند می تواند تعداد قابل توجهی از خطاهای صفحه را متحمل شود.
سیستم عامل در هر خطای صفحه دخیل است که منجر به تغییر مکرر حالت هسته کاربر می شود. با توجه به ردپای حافظه عظیم برنامه های کاربردی حافظه فشرده، تعداد سوئیچ های حالت زیاد است.
علاوه بر این، جدول صفحه در طول تکرار اصلاح می شود، که منجر به حذف بافر نگاه به کنار ترجمه (TLB) تمام هسته های سیستم می شود. همه اینها هزینه های غیر قابل اغماض را به همراه دارند و عملکرد برنامه ها را بدتر می کنند.
این مقاله کپی روی نوشتار مبتنی بر پوشش (CCoW)، یک طرح بهینهسازی کپی روی نوشتار جدید را پیشنهاد میکند. هنگامی که به صفحه ای برای نوشتن دسترسی پیدا می شود، به دلیل موقعیت مکانی در دسترسی های حافظه، احتمالاً به صفحات نزدیک آن نیز به زودی برای نوشتن دسترسی پیدا می شود. CCoW از موقعیت مکانی برای کاهش تعداد خطاهای صفحه برای کپی در نوشتن سوء استفاده می کند. به طور خاص، CCoW کپی در نوشتن را در یک دانه بندی بزرگ (به نام منطقه) پردازش می کند.
با کپی کردن چندین صفحه در کنترل کننده خطای صفحه، CCoW می تواند تعداد قابل توجهی از خطاهای صفحه را برای کپی روی نوشتن و هزینه های اضافی کاهش دهد. با این حال، درجه موقعیت مکانی به طور گسترده بسته به مکان در فضای آدرس فرآیند متفاوت است، و تکثیر بخشهای کممکانیت حافظه تنها هزینههای سربار را از نظر زمان و مکان متحمل میشود.
برای غلبه بر این نقص، ما یک مکانیسم دقیق کم سربار برای ارزیابی موقعیت مکانی در فضای آدرس فرآیند پیشنهاد میکنیم. CCoW تعداد کپی روی نوشتن و نوشتن در هر منطقه را می شمارد.
با حمل اطلاعات محلی بر روی فورک ها، می توانیم درجه موقعیت مکانی را تخمین بزنیم، و CCoW به طور موثر پیش نسخه ای را برای مناطق با موقعیت بالا انجام می دهد. ما طرح CCoW پیشنهادی را در هسته لینوکس پیاده سازی کردیم.
همانطور که در سیستم حافظه مجازی سیستم عامل یکپارچه شده است، برنامه ها می توانند بدون تغییر از CCoW بهره مند شوند. ما ویژگیهای عملکرد را با یک microbenchmark تجزیه و تحلیل کردیم، و ارزیابی با استفاده از معیار با بارهای کاری واقعی نشان میدهد که CCoW میتواند عملکرد برنامه را تا 10٪ با مقدار معقولی از سربار حافظه بهبود بخشد.

بقیه این مقاله به شرح زیر سازماندهی شده است. در بخش 2، پیشینه و کار مرتبط مقاله، از جمله حافظه مجازی و چنگال را مرور می کنیم. ما جزئیات طراحی CCoW و اجرای آن را در بخش 3 توضیح می دهیم. بخش 4 نتایج ارزیابی CCoW را ارائه می دهد. در نهایت، این مقاله را در بخش 5 به پایان میرسانیم.
2. پیشینه و کارهای مرتبط
2.1. صفحه بندی و حافظه مجازی
تقریباً تمام رایانهها و سیستمهای عامل مدرن صفحهبندی و حافظه مجازی را به عنوان طرح مدیریت حافظه اصلی خود میپذیرند [5]. حافظه اصلی به صفحات هم اندازه تقسیم میشود و سیستمعاملها حافظه را از فرآیندهای کاربر در واحد صفحه تخصیص میدهند.
سیستمعاملها همچنین نگاشتهای فضای آدرس فرآیندها را با مکان فیزیکی روی سیستم حفظ میکنند. هر صفحه منطقی در فضای آدرس فرآیند به مکان فیزیکی خود نگاشت می شود و این نگاشت در قالب یک جدول صفحه ذخیره می شود.
برای رسیدگی به مرجع حافظه برای یک فرآیند، یک واحد مدیریت حافظه (MMU)، یک جزء سخت افزاری در پردازنده، آدرس درخواستی را با مراجعه به جدول صفحه به آدرس فیزیکی خود ترجمه می کند. جدول صفحه شامل ورودی های جدول صفحه (PTEs) است. هر PTE حاوی اطلاعات نقشه برداری است و ممکن است دارای فیلدهای اضافی برای توصیف وضعیت صفحه مربوطه و نقشه برداری باشد.
اندازه صفحه، اگرچه مختص معماری است، اما در اکثر معماری ها معمولاً 4 کیلوبایت است. این به این معنی است که هر 4 کیلوبایت در فضای آدرس فرآیند باید یک PTE داشته باشد. با توجه به حجم عظیم فضای آدرس فرآیند، اندازه جدول صفحه، حتی برای یک فرآیند واحد، می تواند بسیار زیاد باشد.
به عنوان مثال، جدول صفحه برای فرآیندی در 64-معماری بیت با صفحات 4 کیلوبایت و 8-بایت PTE، 32 PB (264/212 × 8=255 بایت) خواهد بود. با این حال، فضای آدرس معمولاً پر جمعیت است و بیشتر فضای آدرس مورد نیاز نیست.
این سازماندهی سلسله مراتبی جدول صفحه را روشن می کند. کل جدول صفحه به قطعات جدول صفحه تقسیم می شود که در یک صفحه قرار می گیرند. قطعات جدول صفحه به مناطق آدرس تخصیص داده نشده اختصاص داده نمی شود.

قطعات جدول صفحه پر شده را می توان قطعات جدول صفحه در سطح آشیگر خلاصه کرد. این جهت غیر مستقیم تا زمانی تکرار می شود که فقط قطعات در یک صفحه وجود داشته باشد، در نتیجه شکل فشرده ای از جداول صفحه را ممکن می سازد.
For more information:1950477648nn@gmail.com






