بخشی از مقاله


ارزیابی کارایی سیستم عاملهای MOSIX و OSv در رایانش ابری و کاربردها

چکیده

امروزه فنآوری های محاسبات ابری به سرعت در حال تحول است. یکی از چالشهای اصلی در این زمینه سیستم عامل میباشد. ما در این مقاله دو سیستم عامل MOSIX و OSv را مورد ارزیابی قرار داده ایم. OSv یک سیستم عامل جدید است که از قدرت عملیاتی بسیار زیادی نسبت به سیستم عاملهای سنتی در محیطهای ابری برخوردار است. و عملکرد قابل توجهی به لحاظ کارایی دارد. MOSIX نیز یک سیستم عامل توزیع شده است، که به عنوان یک سکو برای رفع مشکل ناهمگن بودن سیستم عاملهای دیگر در محیط ابری بکار می رود. همچنین عملیات مهاجرت فرآیند و توزیع بار پویا را به طور خودکار انجام میدهد و از منابع موجود و بیکار بهینه استفاده میکند. ما ویژگیهای هر یک را بررسی کرده و آنها را باهم مقایسه کرده ایم. همچنین نشان داده ایم که هر یک از این ابزارها پاسخگوی نیازهای کدام حوزه در رایانش ابری هستند.

واژگان کلیدی: محاسبات ابری، محاسبات موازی، سیستمهای توزیع شده، سیستم عامل


-1 مقدمه
استفاده روزافزون از شبکه های کامپیوتری در فرآیندهای روزانه، مهندسین و مدیران در زمینه IT را به ایجاد راهکارهایی برای پردازش دادههای خام بهدست آمده از این فرآیندها، وادار میکند. در بعضی از پردازش اطلاعات در سازمانها، ادارات و حتی محاسبات پژوهشی همانند SETI@HOME با منابع موجود، گرفتن اطلاع از دادههای خام میتواند سال ها طول بکشد. به همین منظور با ارائه موضوع سیستمهای توزیع شده، سعی به حل حجم وسیعی از پردازشهای خام تولید شده کرده اند. سیستمهای توزیع شده به ما این امکان را میدهند که محاسبات در محدوده وسیع را بر روی چندین سیستم (شاید کاربران معمولی غیرفعال) پردازش کنیم. بهطور کلی پردازشهایی با حجم وسیع را با استفاده از سیستم توزیع شده میتوانیم به چند پردازش با حجم کمتر تبدیل کرده، سپس بر روی سیستمها تحت پوشش، آنها را اجرا و بهصورت یک اطلاع واحد خروجی آن را دریافت کنیم. رایانش ابری ازجمله راهکارهای ارائه شده برای پردازش توزیع شده است. سیستمی که میتواند بهصورت توزیع شده یا موازی و یا هر دو این موارد، پیادهسازی شود. البته، لازم به ذکر است که رایانش ابری میتواند به صورت متمرکز نیز پیادهسازی شود. از خصوصیات رایانش ابری میتوان پیادهسازی آن بهصورت فیزیکی و مجازی اشاره کرد.
یکی از مسائل مطرح در فناوریهای سالهای گذشته بهبود و تکامل سامانههای محاسباتی بوده است. این پیشرفت و تکامل در ابعاد مختلفی همچون افزایش سرعت پردازش اطلاعات، افزایش ظرفیت ذخیره سازی اطلاعات، بهبود در دسترس پذیری آنها و غیره انجام پذیرفته است. رایانش ابری ساختاری را معرفی کرده است که بتوان، توان سامانههای پردازشی و محاسباتی را در تمام این ابعاد راحتتر و کم هزینهتر توسعه داد. در ساختار رایانش ابری، محاسبات، پردازش و هر آنچه می توان در یک سیستم پردازشی مورد توجه قرارداد را بهصورت سرویس بر روی اینترنت که در هر جایی قابل دسترس است به کاربر ارائه میشود. از این رو توسعه ابزارهایی که بهجای اجرا بر روی رایانههای شخصی، بر روی ابر اجرا میشوند و در هر جایی در دسترس هستند، در حال افزایش است. در واقع یکی از رویکردهای اصلی مطرح شده در رایانش ابری، این است که خدمات اینترنتی بهمانند یک رایانه واحد در اختیار تمام کاربرانی که به آن متصل هستند قرار گیرد .[1]
در این مقاله در ابتدا به معرفی اجمالی و مختصر فناوری رایانش ابری اشاره شده است سپس در بخش دوم MOSIX و OSv بهصورت خلاصه معرفی شدهاند و در بخش آخر کارایی و مزایا و معایب این دو سیستم عامل در رایانش ابری مورد ارزیابی قرارگرفته است.

-2 معماری رایانش ابری
رایانش ابری به ابر یا خوشههای از رایانههای توزیع شده گفته می شود که برحسب تقاضا منابع و خدمات را بر روی شبکه اینترنت به شکل سرویس ارائه میدهد .[1] هر کاربر از یک سرور مجازی در سمت ابر سرویس میگیرد و در صورت تغییر نیاز کاربر میتوان این سرورها را به شکل پویا تغییر مقیاس داد.

.1-2 انواع ابر [1]
ابرها را میتوان از دو نگاه تقسیمبندی کرد:
· دسته بندی با توجه به دسترس پذیری ابرها
· دسته بندی با توجه به مقیاس پذیری ابرها
دسته بندی با نگاه دسترس پذیری ابر شامل سه دسته زیر است:

1. ابر خصوصی: برای استفاده انحصاری یک مشتری ایجاد می شوند.
2. ابر عمومی: شکلی از ابر است که سرویس هایش بهطور عمومی در دسترس همگان است.
3. ابر ترکیبی: هر دو مدل خصوصی و عمومی ابر در کنار هم قرار میگیرند.

نوع دسته بندی دوم که بر اساس مقیاس پذیری شامل دو نوع ساختار زیر است:
· توده های ابری که نمونه های محاسباتی را فراهم میکنند.
· توده های ابری که ظرفیت محاسباتی را فراهم میآورند.

.2-2 سرویسهای رایانش ابری [1]
در رایانش ابری، میتوان از لایه سخت افزار تا به لایه نرمافزار بهعنوان سرویس، بهره برد. از این رو سرویسهای مختلف رایانش ابری را در سه گروه زیر، دسته بندی میکنند:
· نرمافزار بهعنوان سرویس (SaaS)
· سکو بهعنوان سرویس (PaaS)
· زیرساخت بهعنوان سرویس (IaaS)

-3 اهمیت فناوری رایانش ابری
بدون شک، مهمترین فناوری که دنیای IT و بهطور خاص دنیای شبکه را در چند سال آینده متحول خواهد کرد، فناوری رایانش ابری است. شرکت Intel در آخرین اجلاس رایانش ابری در March سال 2011 با بیان اینکه در سال 2015 نزدیک به 15 میلیارد اتصال اینترنت شامل انواع دستگاههای همراه، خودرو، تلویزیون، دستگاههای خاص منظوره و غیره در کنار صدها هگزا بایت اطلاعات روی اینترنت خواهیم داشت، پیش بینی کرده که تنها راه باقیمانده استفاده از فناوری ابری است .[2]

-4 سیستم عامل [3] OSv
OSv یک سیستم عامل متن باز (Open Source) و بهینهسازی شدهای است که برای اجرای یک برنامه بدون آنکه از روشهای مرسوم سیستم عاملها استفاده کند، توسط شرکت Cloudius-Systems طراحی شده است .[4] محاسبات ابری و زیرساخت بهعنوان سرویس (IaaS) از تحقق مفهومی به نام مجازی سازی (Virtualization) متولد شدند که امکان به اشتراک گذاری امن و ساده ماشینهای فیزیکی را در اختیار سازمانهای مختلف قرار داد. امروزه ماشینهای مجازی (Virtual Machine) روی ابر بهطورمعمول از سیستم عاملهای سنتی همچون ویندوز، لینوکس و BSD استفاده میکنند. با توجه به اینکه زیرساختهای ابری در همهجا وجود دارد، انتخاب سیستم عامل با حساسیتنسبتاً کمتری انجام میشود. سیستم عاملهای عمومی ویژگیهایی همچون داشتن رابط مدیریتی به ازای هر ماشین و پشتیبانی از طیف گستردهای از سخت افزارها ارائه میدهند؛ اما سیستم عامل یک ماشین مجازی باید از ویژگیهای مهم دیگری نیز برخوردار باشد، مواردی همچون سرعت، کوچک بودن و مدیریت ساده آن در مقیاس وسیع ازجمله این موارد به شمار میروند؛ اما با وجود این، ویژگیهای اصلی سیستم عاملهای سنتی در بعضی از بخشها دارای سربارههای اضافی هستند، بهطوریکه همین ویژگی های تکراری در لایه های دیگر پشته ابری تکرار میشوند. (شکل (1

شکل -1 لایه های نرمافزاری یک ماشین مجازی ابری [5]
یکی از قواعد مهم در سیستم عاملهای سنتی جدا کردن فرایندهای (Processes) مختلف از یکدیگر و جدا کردن همه این فرایندها از هسته سیستم عامل است. این جداسازی به لحاظ کارایی در فراخوانیهای سیستم و عملیاتی همچون تعویض متن (context switching) هزینهبر بوده و پیچیدگیهای زیادی را در سیستم عامل به وجود میآورد؛ اما فن ایزوله کردن فرایندها بهویژه زمانی که کاربر و برنامه های مختلف روی یک سیستم عامل بهطور همزمان در حال کار هستند، ضروری است؛ اما در ابر، فوق ناظر یک محیط ایزوله ما بین ماشینهای مجازی مختلف بهوجود میآورد. (شکل (2
ماشینهای مجازی در ابر بهطور ویژه سیستم عاملهای همه منظوره شبیه به لینوکس را اجرا میکنند. فوق ناظر ابری از مدتها قبل ویژگیهایی همچون ایزوله کردن و سخت افزارهای انتزاعی که یک فرآیند دوباره کاری به ارث بری شده از سیستم عاملهای سنتی هستند را مورد استفاده قرار دادهاند که همین موضوع هزینه های زیادی به همراه دارد.
اما سؤال اصلی این است، آیا میتوانیم یک سیستم عامل ویژه برای ماشینهای مجازی طراحی کنیم؟ پاسخ مثبت است. OSv یک سیستم عامل متنباز برای ماشینهای مجازی است. شکل جدیدی از یک سیستم عامل مهمان که بهطور ویژه برای اجرای یک برنامه روی یک ماشین مجازی در ابر مورد استفاده قرار میگیرد. همچنین به طور خاص برای اجرای برنامه ها در مقیاس و کارایی بالا طراحیشده است و تمرکزش بر مفهوم ابری استوار بوده و دنبالهرو فناوریهای ابری است که از لینوکس یا محفظههای (Container) سبک [6] Docker، استفاده نمیکند. بهعبارتدیگر OSv سیستم عامل جدیدی است که بهطور ویژه برای ماشینهای مجازی ابری ساخته شده است و از API های جدید برای برنامه های جدید استفاده میکند؛ اما برنامه های اصلاح نشده لینوکس را نیز اجرا کرده و بهطور ویژه توانایی اجرای یک نسخه اصلاح نشده از (Java Virtual Machine) JVM و برنامه هایی که بهصورت سطح بالا ساخته شده اند را نیز دارد.

1-4 اهداف اصلی زمینه ساز طراحی و ساخت [3] OSv
اهداف اصلی که زمینهساز طراحی و ساخت OSv شدند را میتوان اینگونه تشریح کرد:
· اجرای برنامه های ابری موجود
· اجرای سریعتر این برنامه ها نسبت به لینوکس
· ساخت تصویر (Images) که بهاندازه کافی کوچک بوده و از سرعت راهاندازی قابل قبولی برخوردار باشند
· کشف APIهای جدید برای برنامه های جدیدی که برای OSv نوشته شدهاند تا کارایی را افزایش دهند
· بهره مندی از کدی کوچک در مقایسه با لینوکس
· پیاده سازی شده با زبان برنامهنویسی مدرن C++
· محدود نبودن به یک فوق ناظر خاص
· به وجود آوردن یک سکو (Platform) برای ادامه تحقیقات روی سیستم عاملهای ماشین مجازی

ویژگی های اصلی [3] OSv
OSv از فوق ناظر و فرایندهای مختلفی تنها با حداقل کدهای مورد نیاز برای معماریهای خاص پشتیبانی میکند. این سیستم عامل برای پردازندههای 64 بیتی روی فوق ناظرهای Xen Virtual Box, VMware و KVM میتواند اجرا شود. همچنین پشتیبانی از پردازندههای ARM از نوع 64 بیتی نیز اکنون در دسترس است. OSv روی یک برنامه تکی (یک فرایند تکی) با یک هسته و چند نخ (Thread) که همه آنها فضای آدرسدهی یکسانی را به اشتراک قرار میدهند اجرا می شود. همین موضوع باعث میشود تا فراخوانیهای سیستم به شیوه مؤثرتری بهفراخوانی توابع (فقط توابع کتابخانه سیستم عامل) پرداخته و فرآیند تعویض متن (Context switching) سریعتر انجام شود. این سیستم عامل مسائل مربوط به دوبارهکاری را با استفاده از طراحی کوچک کتابخانهها حل کرده است. همچنین برنامه های جاری لینوکس را نیز میتواند اجرا کند (اشیاء به اشتراک گذاشته شده لینوکس را با پیادهسازی یک پیوند دهنده پویای ELF اجرا میکند)، البته برای آنکه بتوان برنامه های لینوکس را اجرا کرده و همچنین برای سازگاری با لینوکس، این سیستم عامل بیشتر Linux/Glibc ABI را پیادهسازی کرده است. البته از وجود بعضی از توابع همچون fork و exec به دلیل اینکه مناسب با مدل single-application در این سیستم عامل نبودند صرف نظر شده است. همچنین بهطور کامل از spin-lockها دوری کرده است. به دلیل اینکه بیشتر کار هسته روی نخها است، برای این منظور بهجای بهکارگیری قفلها از Mutex ها استفاده میشود. پیادهسازی Mutex بدون استفاده از spin-lock انجام میشود. همچنین، زمان بندی از الگوریتمهای قفل آزاد استفاده میکند.
همانگونه که پیشتر به آن اشاره کردیم، ماهیت این سیستم عامل لینوکسی نیست، و یک موجودیت جدید است که بهطور کامل و از پایه توسط زبان برنامه نویسی C++ نوشته شده است. بهعبارت دیگر هسته آنکاملاً جدید است. Loader، پیوند دهنده پویا، مدیریت حافظه، زمان بندی نخها، همزمانسازی فرآیندها RCU Mutex) و غیره)، درایورهای سخت افزاری مجازی، سخت افزارهای کامپیوترهای Desktop، که بهطور معمول توسط فوق ناظرها شبیهسازی می شوند (صفحه کلید، کارت گرافیک، IDE و غیره) همگی از طراحی جدیدی بهره بردهاند. در طراحی نیز بهجای جدا کردن کاربر و فضای آدرس هسته، عناصر به صورت ایزوله شده نگهداری میشوند. همچنین بهجای استفاده از محفظههای Docker، از سیستم کاربردی خودش موسوم به Capstan استفاده میکند. Capstan ابزاری است که برای ساخت و اجرای برنامه ها روی این سیستم عامل تعریف شده است. Capstan در مقایسه با Docker برای ساخت محفظهها سریعتر و سادهتر عمل میکند، اما خروجی آن یک تصویر از ماشین مجازی است که روی هر فوق ناظرکه از OSv پشتیبانی کند، قابل اجرا خواهد بود. یک تصویر معمولی Capstan فقط 12 تا 20 مگابایت بزرگتر از خود برنامه شما خواهد بود و سه ثانیه بیشتر زمان برای ساخت به خود اختصاص میدهد. همچنین سیستم فایلی آن بر مبنای سیستم عامل سنتی یونیکس یعنی Virtual ) VFS (File System طراحی شده است. این سیستم عامل میتواند روی یک گروه از فوق ناظر و ماشین مجازی یا در محیطهای ابری شبیه به Amazon EC2 یا Google Compute Engine اجرا شود.

-5 سیستم عامل [7] MOSIX
برای شبکه های خوشه ای لینوکس در دانشگاه Hebrew طراحی و توسعه یافته است. طراحی و توسعه از سال 1977 شروع شده است، در حال حاضر به نام MOSIX2 در HPC لینوکس و خوشه GPU مورد استفاده قرارگرفته شده. سیستم عامل توزیع شده که قابلیت کشف منابع، انتقال فرآیند، پشتیبانی در زمان اجرا، حفظ تعادل بار، کنترل سیل، پیکربندی و غیره را دارد. MOSIX2 با هسته لینوکس 2.6 برای استفاده در خوشه ها و ابرها اجرا شد. از MPI, PVM میتوانیم در ارتباطات جمعی، کنترل فرآیند اولویت و خدمات صف استفاده کنیم. نحوه عملکرد MOSIX در (شکل (3 مشخص شده است.

1-5 ویژگیهای منحصربه فرد [9] MOSX
ویژگیهای منحصربه فرد MOSIX عبارت انداز:

· شفافیت شبکه :(Network transparency) شفافیت برای تمام عملیات ماشینهای متقابل از قبیل عملیات شبکه و سطح برنامه، کاربر با یک ماشین مجازی سروکار دارد که به نظر میرسد یک ماشین تک است.
· مهاجرت فرآیند پیشگیرانه :(Preemptive process migration) مهاجرت فرآیند پیشگیرانه این امکان را میدهد که پردازشهای کاربر را بهصورت شفاف و در هر زمان بر روی گرههای قابل دسترس مهاجرت دهد. نیاز اصلی روند مهاجرت بهصورت شفاف، این است که جنبههای کارکردی سیستم تغییر نکند. دستیابی به این شفافیت مستلزم آن است که سیستم قادر به مکانیابی فرآیند باشد. روند این انتقال از گره ای به گرهی دیگر نیز بدان اطلاع صورت گیرد. (شکل .(4

· تعادل بار پویا :(Dynamic load balancing) میتوان گفت مهاجرت فرآیند، به تعادل بار پویا کمک میکند. این الگوریتم به تغییرات دربارها از گرهها، ویژگی زمان اجرا در فرآیندها، تعداد ایستگاههای کاری و سرعت آنها، واکنش نشان میدهد.
· اشتراک گذاری حافظه :(Memory sharing) الگوریتم سیاستهای زمانی، مقدار حافظه آزاد یک ایستگاه کاری را مورد توجه قرار میدهد. مهاجرت فرآیند نیز میتواند در این امر دخیل باشد و گره ای که دارای حافظه آزادتری است، فرآیند به آن سمت پیش میرود.
· ارتباط موثر با هسته MOSIX :(Efficient kernel communication) به منظور کاهش سربار ارتباطات هسته داخلی، بین پردازش و سایت اصلی خود، زمانی که بهطور خاص در یک سایت راه دور اجرا می شود، توسعه داده شده است.
· الگوریتم های انتشار اطلاعات احتمالی :(Probabilistic information dissemination algorithms) میتوان با دانش کافی بهدست آمده از منابع موجود در هر گره و بدون تکیهبر دانش بیشتر، آنها را کنترل کرد. با استفاده از این الگوریتم، منابع موجود و در دسترس در هر گره را جمعآوری کرده تا بتواند در ورودی و خروجیها مورد استفاده قرار گیرد.
· کنترل غیر متمرکز :(Decentralized control) هر ایستگاه کاری بهصورت مستقل اداره میشود و هیچ سرویسدهنده و سرویسگیرنده وجود ندارد.
· خودمختاری :(Autonomy) هر ایستگاه کاری باقابلیت کار بهعنوان یک سیستم مستقل است. این ویژگی اجازه میدهد تا یک پیکربندی پویا داشته باشیم که در آن ایستگاههای کاری میتوانند بدون هیچ اختلالی در کل سیستم، به شبکه پیوست یا جدا شوند.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید