3-1-2 حالتهای سیستم یكپارچه………………………. 39
3-1-3 تعامل با دنیای خارج……………………….. 40
3-1-4 پیام در حال گذر………………………. 41
3-1-5 قراردادهای ثبت وقایع……………………….. 42
3-1-6 ذخیرهساز پایدار………………………. 43
3-1-7 جمعآوری دادههای زائد……………………….. 44
3-2 بازیافت براساس نقطه مقابله………………………. 44
3-2-1 نقطه مقابله گرفتن به صورت غیرهماهنگ……………… 45
3-2-2 نقطه مقابله گرفتن به صورت هماهنگ………………………….. 48
3-2-3 نقطه مقابله گرفتن بر اساس ارتباطات………………………… 51
3-3 بازیافت بر اساس ثبت وقایع………………………. 54
3-3-1 شرط یكپارچگی بدون پروسههای یتیم……………………….. 55
3-3-2 ثبت بدبینانه وقایع……………………….. 56
3-3-3 ثبت خوشبینانه وقایع……………………….. 59
3-3-4 ثبت علّی وقایع……………………….. 61
3-3-5 مقایسه قراردادهای بازیافت…………………………. 63
3-4 مباحث مطرح در پیادهسازی……………………….. 63
3-4-1 بررسی………………………… 63
3-4-2 پیادهسازی تکنیکهای نقطه مقابله گرفتن………………………… 64
3-4-3 مقایسة قراردادهای نقطه مقابله گرفتن………………………… 66
3-4-4 قراردادهای ارتباطی………………………… 66
3-4-5 بازیافت بر اساس روش ثبت وقایع……………………….. 67
3-4-6 ذخیرهساز پایدار……………………….67
3-4-7 دنبال كردن وابستگی………………………… 68
3-4-8 بازیافت…………………………. 69
4 کارهای انجام شده اخیر………………………. 71
4-1 ی بر روشهای پیشبینی اشکال……………………….. 72
4-1-1 کلاسه بندی و اشکالهای ریشه آماری……………………….. 72
4-1-2 مدل آماری زمان میان خرابیها……………………… 73
4-1-3 جمعآوری و پیشپردازش دادههای مرتبط با خرابی…………. 73
4-2 تکنیکهای پیشبینی اشکال……………………….. 74
4-2-1 حدآستانه مبتنی بر آمار………………………. 74
4-2-2 آنالیز سریهای زمانی………………………… 75
4-2-3 کلاسهبندی مبتنی بر قانون……………………….. 75
4-2-4 مدلهای شبکه بیزی………………………… 76
4-2-5 مدلهای پردازش شبه مارکوف………………………… 76
4-3 مطالعات انجام گرفته………………………. 77
5 روش پیشنهادی……………………….. 86
5-1 مدل اشکال……………………….. 86
5-1-1 متوسط زمانی تا خرابی………………………… 89
5-2 مبانی احتمال و پیشبینی……………………….. 91
5-2-1 مفاهیم اولیه………………………. 91
5-2-2 رابطه قانون بیز و احتمال درستی پیشبینی………………………… 92
5-3 رابطه الگوریتم پیشبینی و مدل اشکال……………………….. 94
5-3-1 تحلیل روابط احتمالی………………………… 94
5-4 مدل پیشنهادی……………………….. 97
5-4-1 ارائه الگوریتم……………………….. 100
5-4-2 مدل مبتنی بر هزینه………………………. 101
5-4-3 اثر پیشبینیکننده بر روی مدلهای هزینه………………………. 105
5-4-4 تصمیمگیری سیستم در کارگزار ابر………………………. 106
6 نتایج آزمایشها……………………… 109
6-1 معرفی شبیهساز CloudSim…………………………
6-1-1 اجزای ابر………………………. 109
6-1-2 اجزای اصلی هسته………………………. 111
6-1-3 سرویسهای موجود و الگوریتمهای آنها……………………… 114
6-1-4 روند کار شبیه ساز………………………. 115
6-2 نحوه پیادهسازی سیستم تحملپذیر اشکال در شبیه ساز………… 116
6-2-1 FaultInjector……………………….
6-2-2 FaultPredictor……………………….
6-2-3 FTHost……………………….
6-2-4 FTDatacenter……………………….
6-2-5 FTDatacenterBroker……………………….
6-3 نتایج آزمایشات……………………….. 124
6-3-1 بررسی اثر سربار نقطه مقابلهگیری………………………… 126
6-3-2 بررسی عملهای انتخابی………………………… 127
6-3-3 خرابیهای متوقف سازنده و غیر متوقف سازنده………………………. 129
7 نتیجه گیری و پیشنهادات………………………… 132
منابع ……………………… 133
چکیده:
با افزایش بازار استفاده از تکنولوژی محاسبات ابری، مراکز داده عظیمی به وجود آمدهاند تا محاسبات را سریعتر انجام دهند. یکی از دغدغه های اصلی در محاسبات ابری، مواجهشدن با اشکالها در حین اجرا کردن یک برنامه موازی زمانبر است. برای غلبه بر این قبیل مشکلات، عموما از روشهای آزمون نقطه مقابله گیری یا آرشیوکردن[2 استفاده میشود. اما این روشها غالبا سربار بالایی دارند و به صورت واکنشی عمل میکنند.
در این پایان نامه روشی را معرفی میکنیم که علاوه بر بازیافت و بازگشت به عقب برای تحمل پذیری اشکال، بتواند گره های محاسباتی که احتمال وقوع خرابی در آنها بیشتر است را شناسایی نماید و به صورت پیشکنشی عمل کرده و ماشینهای مجازی را که بر روی آنها قرار دارد به گرههای محاسباتی امنتر مهاجرت دهد تا در صورت وقوع اشکال در گره مشکوک برنامه موازی بدون وقفه به کار خود ادامه دهد. علاوه بر آن، در این الگوریتم با بهره گیری از قانون بیز و مدل هزینه پیشنهادی، آزمون نقطه مقابله گیری زائد تا حد امکان حذف شده و زمان اجرای برنامه بهبود خواهد یافت. با استفاده ازشبیه سازی نشان میدهیم که روش پیشنهادی بسته به شرایط مختلف تا 78% زمان اجرا را بهبود میبخشد و از منابع کمتری استفاده میکند.
فصل اول: مقدمه
1- مقدمه
جهان محاسباتی که امروزه با آن روبرو هستیم روز بهروز در حال بزرگتر و پیچیدهتر شدن است. محاسبات ابری نیز در ادامه سبکهای دیگر مانند محاسبات توری با هدف پردازش حجم عظیمی از داده با استفاده از خوشههایی از کامپیوترهاست. طبق گراش ارائه شده ای از گوکل، در حال حاضر به لطف محاسبات توزیع شده روزانه بیش از 20 ترابایت داده خام اینترنتی مورد پردازش قرار میگیرد. تکامل و شکلگیری محاسبات ابری خواهد توانست این چنین مسائلی را به راحتی و به شکلی مناسبتر از طریق سرویسهای مبتنی بر تقاضا حل و فصل نماید. از زاویه دیگر، جهان محاسباتی اطراف ما در حال حرکت به سمت الگوهای “پرداخت برای استفاده” حرکت میکند و همین الگو یکی دیگر از پایههای اصلی محاسبات ابری محسوب میشود.
محاسبات ابری که در اواخر سال 2007 پا به عرضه ظهور گذاشت هماکنون به دلیل تواناییاش در ارائه زیر ساخت فناوری پویا و بسیار منعطف، محیطهای محاسباتی تصمین شده از نظر کیفیت و همچنین سرویسهای نرمافزاری قابل پیکربندی به موضوع داغ بدل شده است . در گزارش رویکردی گوگل همانطور که در شکل 1‑1 مشاهده مینمایید، محاسبات ابری، محاسبات توری را پشت سر گذاشته است [1]. محاسبات ابری از رویکرد مجازیسازی بهرهگیری مینماید که این امر سبب انعطافپذیری بیشتر سیستم ابر میشود. در حقیقت با استفاده از این تکنولوژی، برنامهها میتوانند سرویسهای مختلف را به صورت مجزا و انتزاعی از گرههای سرویسدهنده دریافت نمایند.
تعاریف زیادی در مورد محاسبات ابری ارائه شده است که سعی مینمایند مشخصههای اصلی محاسبات ابری را مد نظر بگیرند که سیستم ابری را ” یک مدل برای دسترسی بنابر تقاضا و راحت تحت شبکه به یک مجموعه اشتراکی از منابع محاسباتی قابل پیکربندی” تعریف مینمایند درحالیکه “این منابع با کمترین تلاش و هزینه به صورت آزاد” فراهم گردند.
محاسبات ابری از خصوصیات منحصر به فردی بهره میبرد که این سبک محاسباتی را از سایر سبکها متمایز میکند. البته برخی از این خصوصیات کما بیش در سبکهای پیشین نیز وجود داشتهاند. بعضی از این خصوصیات عبارتند از:
– ارائه سرویس مبتنی بر تقاضا: در اینجا لازم نیست تا برای آن چه استفاده نمیکنید هزینه پرداخت کنید. این بدان معناست که مشتریان تنها بر اساس مقدار و کیفیت سرویسی که مصرف مینمایند، هزینه استفاده پرداخت مینمایند. در حقیقت رویکرد این تکنولوژی همانند سرویسهای عمومی قابل استفاده دیگر امروزی است. برای مثال همانطور که برای تولید برق نیاز نیست که هر خانوار دارای ژنراتور و سایر وسایل تولید الکتریسیته باشد، دریافت سرویسی مانند محاسبات یا محل ذخیره داده نیز دیگر نیازی به خصوصی بودن ندارد و میتوان آن را از فراهم آوردنگان ابر[1] اجاره کرد.
– دسترسی شبکه گسترده (اینترنت): این سیستم برای تحویل و ارئه سرویسها از بستر موجود برای اینترنت استفاده مینماید. بنابراین مشتریان سرویسها به هیچگونه نرمافزار یا سختافزار خاصی نیاز ندارند و با همان گری که هر روزه به گشت و گذار در وب میپردازند میتوانند از سرویسهای ابر بهره ببرند.
– استخر منابع: در این سیستم با حجم وسیعی از منابع روبرو هستیم. این منابع از طریق مجازیسازی از محل فیزیکی خود مستقل شده اند. بنابراین به راحتی میتوانند در بستر شبکه جابه جا شوند. در واقع نرمافزارها، پایگاههای داد، وب سرورها و سیستمهای عامل همگی به عنوان سرورهای مجازی در سیستم ابر حضور دارند.
– قابلیت اطمینان بالا: فراهم آورندگان ابر به مشتریان خود تضمین میدهند که سیستم ابر همیشه قابلیت ارائه سرویس را داشته باشد. حال آنکه در سیستمهای خانگی یک اشکال در نرمافزار یا سختافزار میتواند موجب عدم دسترسی به اطلاعات و سرویس شود.
– هزینه پایین: به صورت سنتی برای اجرای برنامههای سنگین محاسباتی یا داده ای عظیم نیاز به یک سیستم با توان بالای محاسباتی و دادهای احساس میشده است. این سیستم هزینه سنگینی را برای شرکت و یا افراد سرویسگیرنده فراهم میآورده است. حال با استفاده از سرویسهای موجود بر روی ابر، کاربران میتوانند بر روی پروژه خود تمرکز بیشتری داشته باشد و هزینه گزافی را بابت تهیه زیرساختها نپردازد.
– بهروز بودن: هزینههای گزافی که برای برپا بودن و بهروز بودن زیرساختهای سختافزاری و نرمافزاری باید پرداخت شوند با استفاده از ابر از بین میرود. در حقیقت بهروز در آوردن زیرساختها از وظایف فراهمآورندگان ابر میشود که بدون آنکه کاربر نهایی از این موضوع مطلع شود انجام میپذیرد.
در سیستمهای محاسبات توزیعی به دلیل کم کردن هزینه و توان مصرفی، از اجزاء تجاری عاممنظوره موجود در بازار استفاده میشود[3]. این اجزا به زمان مستهلک شده و دچار خرابی میشوند تا جاییکه برای همیشه غیرقابلاستفاده میگردند. همچنین با توجه به آمار ذکر شده، تعداد پردازندهها به منظور بهبود کارآیی سیستم محاسباتی توزیعی رو به افزایش است. با این حال احتمال وقوع خرابی[2] در کل سیستم توزیعی با یک رابطه نمایی بالا میرود. برای مثال سیستم کلاستری که برای یکی از قسمتهای سایت گوگل استفاده میشود، بیش از 15000 پردازنده دارد که بر اساس آمار ذکر شده در [4]، نرخ خرابی هر گره محاسباتی تقریبا 2-3% در سال است. این سیستم به طور میانگین 20 بار در هر روز به علت خرابی ناگزیر به راهاندازی مجدد[3] است. بزرگترین مرکز داده جهان بیش از 51470000 هسته پردازشی دارد و در کمتر از هر 10 دقیقه با یک اشکال در سیستم مواجه میشود. درجدول 1-1 چند نمونه از تعداد اشکالهای گزارش شده در مراکز داده آمده است.
برای برنامه های علمی-کاربردی موازی امروزی که بسیار پیچیدهتر شدهاند و معمولا برای روزها، هفته ها و یا بیشتر طراحی شده اند تا به اتمام برسند، برخورد با اشکال در حین اجرا برنامه موازی امری اجتناب ناپذیر به نظر میرسد. امروزه رویکردهای تحملپذیر اشکال در مراکز به یکی از چالشهای اصلی در محاسبات توزیعی تبدیل شده است.
آزمون نقطه مقابلهگیری(cp)[1] و بازیافت[2] یک تکنیک معمول برای مدیریت اشکال در محاسبات توزیع شده میباشد و مقالات ارزشمندی در مورد بازیابی بر اساس الگوریتمهای آزمون نقطه مقابلهگیری مختلف موجود میباشد. مطالعه بر روی هزینه نقطه مقابله گرفتن به صورت گسترده کماکان در حال انجام است. بیشتر کارها بر روی انتخاب بازه بهینه نقطه مقابله و کم کردن سربار برای عمل نقطه مقابله انجام شده است. در واقع مهمترین مساله در بازیافت، برخورد با اشکالها بعد از وقوع آن و رویکرد بازگشت به عقب[3] است. در روش نقطه مقابله بهصورت هماهنگ دورهای، در ابتدای بازههای زمانی از پیش تعریف شده حالت کنونی تکتک واحدهای محاسباتی موجود (این واحد در ابر ماشینهای مجازی است) ذخیره میشود. پس از اتمام ذخیرهسازی تمام ماشینهای مجازی، سیستم تا ابتدای بازه زمانی بعدی به کار خود ادامه میدهد.
زمانیکه در یکی از گرههای محاسباتی خرابی رخ داد، این خرابی کشف میشود و تمام کارهای موازی[4] متوقف شده تا اشکال در سیستم بر طرف گردد. پس از رفع اشکال سیستم به آخرین حالت ذخیره شده ماشینهای مجازی باز میگردد و عملیات را از آن نقطه دوباره آغاز میکند و به کار خود ادامه میدهد. در اغلب پیادهسازیها، پروتکل کشف و بازیافت اشکال از دید برنامهنویس پنهان میباشد. این قبیل پروتکلها به صورت واکنشی پس از وقوع اشکال در سیستم عمل مینماید. بنابراین در این حالت ممکن است زمان زیادی به لحاظ تعمیر سیستم و بازیابی مجدد ماشینهای مجازی از دست برود که روی کارآیی ابر بهصورت مستقیم تاثیر منفی میگذارد.
در مقابل این روشها، اخیرا روشهای دیگری پیشنهاد شده که مبتنی بر پیشبینی اشکال در هر گره محاسباتی هستند. در این سیستمها، یک مکانیسم مدیریت اشکال تطبیقی[5] وجود دارد که سعی دارد تا بهصورت بهینه، بهترین عمل را در ابتدای هر بازه تصمیمگیری نماید.
در دهههای گذشته پیشرفتهایی در زمینه پیشبینی اشکال حاصل شده است. برای نمونه، وسایل سختافزاری مدرنی با خصیصههای مختلفی همچون سنسورهای سختافزاری طراحی شدهاند که میتوانند افت یک ویژگی در طول زمان را (برای شناسایی خرابیهای نزدیک) نشان دهند و تعدادی روشهای یادگیری ماشینی و آماری مبتنی بر تکنیکهای احتمال برای بالابردن دقت آنها ارائه شده است. تکنیکهای مقاومت در برابر اشکال پیشکنشی[6] مبتنی بر پیشبینی به منظور دستیابی به دسترسیبالا[7]، برای کاربردهای بحرانی- امن اتخاذ گردیده است. اما تاکنون مطالعات خوبی بر روی ابر صورت نگرفته است.
در این پایاننامه سیستمهای محاسبات ابری را به عنوان یکی از سیستمهای پردازش موازی مبتنی بر مبادله پیام مورد بررسی قرار میدهیم. این محیطها به علت ویژگی خاص خود که ارتباط کارهای موازی فقط از پیامهای رد و بدل شده انجام میپذیرد، دارای توانمندیهای بالقوه برای انجام عملیات بازیافت میباشند. از این رو، آنچه ما به طور خلاصه مورد مطالعه قرار خواهیم داد، قراردادهای بازیافت مختلف برای محیط مبادله پیام خواهد بود. این قراردادها برای توانمند کردن محیط پردازش موازی به منظور تحملپذیر کردن در برابر اشکال، اطلاعاتی نظیر حالت ماشینهای مجازی یا محتوی پیامها را در طول اجرای عادی نگهداری میکنند تا در زمان وقوع اشکال با استفاده از آنها، عملیات بازیافت انجام پذیرد.