CCoW: بهینهسازی کپی روی نوشتن با توجه به موقعیت مکانی در حجمهای کاری قسمت 3
Apr 02, 2024
3. طراحی CCOW
در این بخش، ابتدا انگیزه خود را در بهبود کپی روی نوشتار معرفی میکنیم و مفهوم اصلی کپی روی نوشتار مبتنی بر پوشش (CCoW) را توضیح میدهیم. سپس روشی را که CCoW محل را تحت سناریوهای مختلف ثبت میکند و بهینهسازی برای گرفتن محل در سربار پایین توضیح میدهیم.
حافظه توانایی افراد برای کسب، ذخیره و بازیابی اطلاعات است. خاطرات افراد نیز در سناریوهای مختلف متفاوت خواهد بود. در این مقاله به بررسی رابطه بین حافظه در سناریوهای مختلف می پردازیم.
اولین سناریوی یادگیری است. یادگیری ابزار مهمی برای انسان برای کسب دانش و مهارت است. در فرآیند یادگیری، حافظه نقش حیاتی ایفا می کند. اگر حافظه قوی دارید، می توانید سریعتر بر دانش جدید تسلط پیدا کنید و دانش آموخته شده را راحت تر حفظ کنید. بنابراین، در سناریوهای یادگیری، باید تفکر خود را روشن و متمرکز نگه داریم تا حافظه را بهتر تقویت کنیم.
دوم صحنه گردشگری است. سفر به ما این امکان را می دهد که فرهنگ ها و محیط های مختلف را تجربه کنیم و افق های ما را بسیار غنی تر می کند. در طول سفر، میتوانیم با یادآوری مکانهای جغرافیایی، افراد، آداب و رسوم و سایر اطلاعات، دانش فرهنگی غنی کسب کنیم. بنابراین در صحنه سفر باید با دقت مشاهده کنیم و فعالانه آن را تجربه کنیم تا حافظه خود را بهتر تقویت کنیم.
یک بار دیگر صحنه کار است. در محل کار، ما باید حجم زیادی از اطلاعات مانند داده ها، مخاطبین، وظایف، برنامه ها و غیره را مدیریت کنیم. اگر حافظه ما به اندازه کافی قوی نباشد، بر راندمان کاری و دستاوردهای ما تأثیر می گذارد. بنابراین، در سناریوهای کاری، باید کار ضبط و سازماندهی را به خوبی انجام دهیم و سعی کنیم تا حد امکان دامنه «ارتباط اطلاعات» را محدود کنیم. به این ترتیب می توانیم حافظه خود را بهتر تقویت کنیم.
بالاخره صحنه های زندگی وجود دارد. انسان ها باید بسیاری از چیزهای روزانه مانند آدرس، شماره تلفن، وظایف روزانه و غیره را به خاطر بسپارند. اگر حافظه ما به اندازه کافی خوب نباشد، مشکلات زیادی در زندگی به وجود می آید. بنابراین در صحنه های زندگی باید توانایی حافظه خود را تمرین کنیم. ما می توانیم حافظه خود را با ایجاد تفکر انجمنی و تکرار بی صدا بهبود دهیم.
به طور خلاصه، حافظه در سناریوهای مختلف ارتباط نزدیکی دارد. ما می توانیم با تمرین و تمرکز عمدی حافظه خود را بهبود بخشیم و در سناریوهای مختلف به عملکرد بهتری برسیم. بیایید با نگرش خوش بینانه به دنبال زندگی و شغل بهتر باشیم. مشاهده می شود که ما نیاز به بهبود حافظه داریم و سیستانش دسرتیکولا می تواند حافظه را به میزان قابل توجهی بهبود بخشد، زیرا سیستانش دسرتیکولا می تواند تعادل انتقال دهنده های عصبی مانند افزایش سطح استیل کولین و فاکتورهای رشد را نیز تنظیم کند. این مواد برای حافظه و یادگیری بسیار مهم هستند. علاوه بر این، Cistanche deserticola همچنین می تواند جریان خون را بهبود بخشد و اکسیژن رسانی را تقویت کند، که می تواند اطمینان حاصل کند که مغز مواد مغذی و انرژی کافی را دریافت می کند و در نتیجه نشاط و استقامت مغز را بهبود می بخشد.

برای بهبود حافظه بر روی مکمل های بدانید کلیک کنید
3.1. انگیزه
همانطور که قبلاً بحث شد، مکانیسم کپی در نوشتن نقش کلیدی در پیاده سازی ویژگی های حافظه مجازی در سیستم عامل های مدرن ایفا می کند. با این حال، مزایای آن از نظر فضا در محیطهای محاسباتی مدرن و بارهای کاری فشرده، که در مراکز داده رایج است، کاهش یافته است [21،22].
فناوری های نوظهور حافظه مانند حافظه ذخیره سازی (SCM) و حافظه پایدار، تراکم داده ها را برای ماژول های حافظه افزایش می دهد در حالی که هزینه هر واحد داده را کاهش می دهد.
امروزه ساخت یک گره با حجم عظیمی از حافظه در مقیاس ترابایتی ارزان تر از همیشه شده است. علاوه بر این، ارائه دهندگان خدمات ابری گزارش داده اند که گره ها در مراکز داده از استفاده از حافظه کم رنج می برند و 40 تا 50 درصد از حافظه را بدون استفاده باقی می گذارند [23-26]. در این شرایط، معامله فضای حافظه با عملکرد در سیستمهای حیاتی عملکرد امکانپذیر میشود [27]. مزیتها از نظر عملکرد نیز کاهش یافته است.
مزیت عملکرد کپی در نوشتن را می توان با فراوانی و عملکرد مدیریت خطاهای صفحه مشخص کرد. در حین ایجاد فرآیند فرزند، اجازه نوشتن برای همه صفحات حذف شد. از منظر صحت، این امر اجتناب ناپذیر است; با این حال، در ارائه هر درخواست نوشتن منجر به خطاهای مکرر صفحه بعد از فورک می شود. این طوفان خطاهای صفحه نوشتن نه تنها برای فرآیندهای فرزند، بلکه برای فرآیند والد نیز اتفاق میافتد.
بدتر از آن، زمان رسیدگی به خطاهای صفحه اخیراً بهبود نیافته است، اما به دلایل امنیتی تمایل دارد طولانی شود. در گذشته، کل فضای آدرس هسته به طور مداوم به بخشی از فضای آدرس فرآیند کاربر نگاشت می شد.
با این حال، این طرح فضای آدرس به فرآیندهای کاربر مخرب اجازه می دهد تا به طور غیرمستقیم داده های حیاتی در فضای آدرس هسته را با بهره برداری از اجرای حدس و گمان در پردازنده ها بخوانند [28،29].
برای کاهش چنین آسیبپذیری امنیتی حیاتی، سیستمعاملهای مدرن از جداسازی جدول صفحه هسته (KPTI) استفاده میکنند. به طور کلی، تنها بخش محدودی از فضای آدرس هسته به فضای آدرس فرآیند نگاشت میشود و بقیه فضای آدرس هسته به صورت پویا در طول وقفه و مدیریت تماس سیستم نگاشت میشود و از نقشه خارج میشود. این باید با فلاشینگ TLB همراه باشد، که می تواند عملکرد سیستم را به میزان قابل توجهی کاهش دهد.
در این کار، هدف ما کاهش سربار کپی در نوشتن با استفاده از اهرم مکان مکانی منابع حافظه است. در حال حاضر، کپی روی نوشتن در هر صفحه انجام میشود و هر بار که خطای صفحه رخ میدهد، سیستمعامل باید درگیر شود. ایده کلیدی ما کاهش فراوانی درگیری سیستمعامل با استفاده از موقعیت مکانی دسترسیهای حافظه است. اگر برای نوشتن به صفحه FA دسترسی پیدا کنید، احتمالاً به زودی به صفحات نزدیک نیز برای نوشتن دسترسی خواهید داشت.
بنابراین، اگر ما کپی روی نوشتن را نه تنها برای صفحه معیوب، بلکه برای صفحات مجاور با هم انجام دهیم (یعنی پیش از کپی کردن صفحات نزدیک)، میتوانیم هزینه سربار کپی روی نوشتن را در طول رسیدگی به خطای صفحه مستهلک کنیم. با این حال، ما باید مراقب باشیم که همیشه کورکورانه تمام صفحات نزدیک را کپی نکنیم.
اگر صفحات کپی شده بعداً نوشته شوند، سربار تحمیل شده برای پیش کپی برگشت داده می شود. با این حال، اگر صفحات کپی شده بعداً نوشته نشوند، پیشکپی فقط از نظر زمان و مکان سربار است.

بنابراین، شناسایی صفحات هدف مناسب برای کپی کردن بسیار مهم است. رویکردهای مشابهی برای به حداقل رساندن سربار رسیدگی به خطاهای صفحه به کار گرفته شده است. لینوکس از ویژگی به اصطلاح "عیب در اطراف" استفاده می کند. در حین رسیدگی به یک خطای صفحه، لینوکس مدیریت خطای صفحه را برای صفحاتی که در اطراف صفحه معیوب هستند آغاز می کند [2]. با این حال، این ویژگی فقط برای خطاهای صفحه خوانده شده برای مناطق حافظه پشتیبان فایل اعمال می شود.
با توجه به اینکه ایده پیشنهادی بر روی نوشتن خطاهای صفحه برای صفحات ناشناس تمرکز دارد، میتوانیم استدلال کنیم که رویکرد ما با ویژگی خطا در اطراف متفاوت است. بسیاری از طرحهای پیشرفته [12-17] برای بهینهسازی استفاده از صفحات بزرگ در سیستم عامل
این سیستمها معمولاً طرحی را برای شناسایی بهترین صفحات کاندید برای تبدیل به صفحات بزرگ و ارتقاء مؤثر به (یعنی تبدیل صفحات پایه به یک صفحه بزرگ) یا کاهش از (یعنی تبدیل یک صفحه بزرگ به صفحات پایه) ارائه میکنند. صفحات بزرگ
با این حال، صرف نظر از طرحهای پیشنهادی، کپی بر روی نوشتن فقط در صفحه اصلی و در صورت لزوم پس از شکستن صفحه بزرگ به صفحات پایه انجام میشود. بنابراین، ویژگیهای عملکرد کپی روی نوشتن آنها مانند سیستم پیشفرض لینوکس با مکانیزم صفحه عظیم شفاف (THP) است. در مقابل، طرح پیشنهادی ما منحصر به فرد است که کپی روی نوشتن را با دانه بندی متفاوتی مطابق با درجه محلی در دسترسی های حافظه انجام می دهد.
3.2. شناسایی موقعیت مکانی
برای تحقق طرح پیشنهادی، باید دو موضوع چالش برانگیز را در نظر بگیریم. اولاً، صفحات هدف باید دقیقاً و به موقع شناسایی شوند، به طوری که منفعت پیشکپی به حداکثر برسد در حالی که سربار برای پیشکپی به حداقل برسد.
هنگامی که یک صفحه توسط یک نویسنده کپی می شود، صفحه هیچ خطای صفحه دیگری ایجاد نمی کند. این به طور موثر به این معنی است که سیستم فرصت بهینه سازی دسترسی نوشتن را از دست داده است. بنابراین، سیستم باید بتواند استفاده از صفحه آینده را پیشبینی کند تا مشخص کند کدام صفحات باید کپی شوند و کدامها نه. ثانیاً، شناسایی صفحات هدف باید سربار کمی داشته باشد زیرا OSs نمی تواند پردازش زمان بر را در زیرسیستم مدیریت حافظه حیاتی عملکردی داشته باشد.
همانطور که در بخش 2 بحث شد، بسیاری از ویژگی های حافظه مجازی در سیستم عامل های مدرن مبتنی بر مکانیسم کپی در نوشتن هستند. بنابراین، اگر اجرای کلی به اندازه کافی کارآمد نباشد، هزینههای سربار به راحتی میتواند از مزایای بهینهسازی کپی در نوشتن بیشتر شود.
برای پیشبینی آینده یک صفحه، ابتدا تاریخچه فورکها را برای فرآیندهای کاربر جمعآوری میکنیم. به طور خاص، سیستمعامل تعداد فورکهایی را که هر فرآیند فراخوانی میکند نظارت میکند. تعداد کم برای یک فرآیند به این معنی است که فرصت کمی برای بهره برداری از فرآیند وجود دارد و سیستم عامل نیازی به ردیابی کامل خطاهای صفحه نوشتن برای این فرآیند ندارد.
در مقابل، هنگامی که یک پردازش فراخوانی سیستم فورک را بیش از یک آستانه فراخوانی می کند، سیستم می تواند انتظار فرصت بهینه سازی را داشته باشد. این اتفاق با Redis میافتد، که بهطور دورهای فورکها را برای گرفتن عکسهای درون حافظه فراخوانی میکند، یا با اسکریپت پوستهای که چندین دستور خط فرمان را فورش میکند. در پاسخ، سیستم شروع به ردیابی خطاهای صفحه برای فرآیند می کند.

در مرحله بعد، ما روشی را برای پیشبینی فرصت بهینهسازی از تاریخ پیشنهاد میکنیم، با این فرض که رفتار کلی برنامهها به طور قابل توجهی تغییر نمیکند. برای این منظور، فضای آدرس فرآیند را به مناطق با اندازه ثابت تقسیم می کنیم. هر منطقه یک بیت مپ دارد که در آن هر بیت مربوط به یک صفحه در منطقه است. یک فرآیند با پاک شدن تمام بیت مپ ها ایجاد می شود، مانند مناطق حافظه مجازی تازه پر شده (VMA). هنگامی که یک بخش کامل VMA نگاشت نشده است، بیت مپ ها در محدوده آدرس مربوطه نیز منتشر می شوند.
بیت مپ فقط برای قسمت هایی از VMA که پر شده اند تخصیص داده می شود و اطلاعات صفحه 4 کیلوبایتی در یک بیت خلاصه می شود. بنابراین، فضای سربار برای bitmapsis تقریباً 0.003٪ از فضای آدرس پر شده است. در ابتدا، نوشتن ها از طریق کپی روی نوشتن همانطور که هست پردازش می شوند.
یک دسترسی نوشتن در کنترل کننده خطای صفحه به دام می افتد، که به موجب آن ورودی بیت مپ مربوطه تنظیم می شود. با گذشت زمان، thebitmap به طور موثر دسترسی به منطقه را ضبط می کند، و ما می توانیم میزان پوشش را تعیین کنیم. پوشش یک منطقه به صورت درصدی از صفحات کپی روی نوشته از تمام صفحات منطقه به شرح زیر محاسبه می شود:
![]()
فرض کنید یک سیستم از 4 کیلوبایت صفحه استفاده می کند و فضای آدرس به مناطق 2 مگابایتی تقسیم شده است.
سپس هر منطقه دارای 512 4 کیلوبایت صفحه است. اگر 300 صفحه روی نوشته ها کپی شود، پوشش منطقه 300/512 × 100=58.6٪ است. این اطلاعات پوشش بر روی فورک حمل می شود و به عنوان معیاری برای تعیین مزایای کپی کردن صفحات اطراف استفاده می شود.
به طور خاص، اگر منطقه حافظه دارای پوشش بالایی باشد، صفحات موجود در منطقه احتمالاً در نهایت کپی روی نوشته می شوند. بنابراین، کپی کردن صفحات دیگر در منطقه هنگام پردازش خطای صفحه نوشتن برای یک صفحه، سودمند خواهد بود. در حالی که اگر پوشش کم باشد، فرصت بهینه سازی در صفحات پیش کپی اندک است. بنابراین، فقط صفحه معیوب توسط صفحه خطا کپی می شود.
از این پس، ما به این طرح به عنوان پوشش مبتنی بر کپی در نوشتن یا CCoW برای بقیه مقاله اشاره خواهیم کرد. شکل 1 مفهوم CCoW را نشان می دهد. دو منطقه وجود دارد، مناطق 0 و 1، که هر کدام شامل شش صفحه است.
صفحات با سایه سبز با کپی در نوشتن پر می شوند. هنگامی که فرآیند فراخوانی سیستم فورک را فراخوانی می کند، اجازه نوشتن برای همه صفحات، از جمله صفحات سبز، در طول فورک حذف می شوند. فرض کنید آستانه تعیین منطقه پرمحلی 6{4}}٪ است. در منطقه 0، چهار صفحه (صفحات 1، 2، 3، و 4) قبل از فورک کپی شده بودند، که پوششی 4/6=66% ارائه میکردند.
بنابراین، این منطقه دارای موقعیت مکانی بالایی در نظر گرفته میشود و تمام صفحات برای رسیدگی به خطای صفحه برای صفحه 3، بهصورتی که با رنگ قرمز سایه زده شدهاند، کپی میشوند. در حالی که، ناحیه پایینی پوشش 33 درصدی را فراهم می کند، زیرا دو صفحه از شش صفحه قبل از فورک کپی روی نوشته شده بودند.
بنابراین، این منطقه از پوشش کمتری نسبت به آستانه برخوردار است که حاکی از موقعیت مکانی کم در منطقه است. بنابراین، هنگامی که به صفحه 9 برای نوشتن دسترسی پیدا می شود، فقط صفحه معیوب در هنگام نوشتن در کنترل کننده خطای صفحه کپی می شود، درست مانند روال معمول کپی روی نوشتن.

For more information:1950477648nn@gmail.com






