بخشی از مقاله

طپردازش موازي مبتني بر ارتباطات همزمان مسيرهاي شبکه
چکيده : SCTP يک پروتکل استاندارد لايه ي انتقال با ويژگيهايي است که منجر به بهتر کردن حمايت از برنامه هايي با پردازش موازي مي شود. اين ويژگيها در پروتکل TCP وجود ندارد. همچنين استفاده ي TCP براي پردازش هاي موازي منجر به تاخير زياد و مانع استفاده از تمام پهناي باند شبکه مي شود. با استفاده از ويژگيهاي شاخص SCTP، اين پروتکل مي تواند به عنوان يک جايگزين مناسب به جاي TCP براي MPI باشد. MPI يک ميان افزار مبادله ي پيام است که براي محاسبات موازي در محيط هاي توزيع شده به کار ميرود. هدف اين مقاله استفاده از روش ارتباطات همزمان مبتني بر پروتکل SCTP به منظور استفاده از تمام پهناي باند شبکه و پردازش موازي و مبادله ي پيام (MPI) است . همچنين با ارزيابي اين روش جديد، افزايش همروندي در اجراي برنامه هاي MPI ، سرعت اجراي آنها و همچنين کاهش تاخير حاصل شده ، مشخص ميشود و باعث بهبود عملکرد MPI ميشود.
واژه هاي کليدي: MPI،SCTP ،TCP ، محيط هاي توزيع شده ، پردازش موازي،

١- مقدمه
امروزه سيستم ها نياز به فراهم آوردن پردازش هاي سنگين به منظور استخراج اطلاعات مفيد از مقدار زيادي داده دارند. با مروري بر روند پيشرفت پردازش و استخراج اطلاعات با طراحي اختصاصي يا استفاده از محيط هاي توزيع شده ، ثابت شد که حتي با استفاده از پردازنده هاي معمول و متداول نيز مي توان به ظرفيت هاي پردازش بالا دست يافت . اين مساله نشان مي دهد که موازي سازي يکي از بديهي ترين ايده هايي بود که براي افزايش قدرت محاسباتي ارائه شد. بدين منظور، تکنيک هاي محاسبات موازي (HPC) با استفاده از قدرت سيستم هاي کوچک ، که از نظر سخت افزار و نرم افزار به صورت توزيع شده گسترده شده اند، انجام محاسبات سنگين روي داده هاي زياد را ممکن ساخت . عموما در HPC، از واسط مبادله پيام (MPI)Message Passing Interface براي فراهم آوردن حمايت اجراي برنامه هاي کاربردي موازي، استفاده مي شود. MPI يک ميان افزار مبتني بر مبادله ي پيام است که به طور گسترده اي براي محاسبات موازي در محيط هاي توزيع شده به کار ميرود. مزيت MPI اين است که کتابخانه هايش براي انواع وسيعي از محيط ها و ماشين ها موجود است . انجمن MPI به معرفي کتابخانه اي از توابعي که مي تواند براي ايجاد کردن برنامه هاي موازي براي انتقال پيام ها استفاده مي شود، ميپردازد. نخستين ويرايش MPI، ١-MPI بود و در کمتر از يک سال چندين پياده سازي گوناگون آن ارائه شدند که مهم ترين آن ها MPICH بود[۲].آخرين نسخه از استاندارد MPI ، نسخه ١,٢ بوده و از آن با نام ٢-MPI ياد ميشود. از بين تمامي پياده سازيهاي MPI ، دو نوع MPICH٢ و Open MPI به طور گسترده براي پيکربنديهاي خاص MPI استفاده مي شوند[۳,۱]. از آنجايي که MPI براي شبکه هاي کوچک استفاده ميشد، با بزرگتر شدن شبکه ها و حجم زياد اطلاعات مبادله شده در شبکه و همچنين چالش مبني بر اجراي برنامه ها با کارايي بالا و سرعت قابل قبول ، نياز ضروري سازگاري MPI با شبکه هاي امروزي را مشخص مي کند. در MPI هاي اوليه اين ميان افزار فقط بر مبناي پروتکل TCP کار مي کرد. در اين متد بايد ترتيب تحويل پيام رعايت شود. علاوه بر اين در TCP هر فرآيند از سوکت يک به يک براي ارتباط با ديگر فرآيندها استفاده ميکند. يعني براي هر ارتباط و فرآيند بايد يک سوکت فعال شود. در نتيجه فرآيندهاي MPI تعداد زيادي اتصال و سوکت براي ارتباط با ديگر فرآيندها در برنامه کاربردي ايجاد ميکنند. مشکل ديگر TCP اين است که ترتيب تحويل پيام بايد رعايت شود و اين باعث عدم دريافت پيام هاي بعدي در سمت گيرنده ، زماني که قسمتي از پيام هاي قبلي ارسال شده ، از بين ميرود، ميشود. اين پديده Head-Of-Line-Blocking نام دارد. بنابراين TCP به خوبي با ويژگيهاي MPI انطباق پيدا نميکند. براي رفع اين مشکلات ، پروتکل جديد SCTP پياده سازي شد.[۴] اين پروتکل به منظور حل مشکل تحويل نامرتب پيام ها و استفاده از تمامي تجهيزات شبکه ، با ويژگيهاي شاخص Multi-Home و Multi-Stream معرفي شد. Multi-Home در لايه ي انتقال ، مکانيزمي است که يک ارتباط در لايه ي انتقال بتواند شامل چندين واسط شبکه يعني چند آيپي در يک هاست باشد. Multi-Stream نيز به ايجاد چند جريان (Stream) در هر مسير انتقالي شبکه مي پردازد.
SCTP تقريبا تمام ويژگي هاي داخل پروتکل TCP را نيز حمايت مي کند. در پروتکل SCTP همه ي آيپي آدرس هاي در دسترس و فعال در ارتباط ، در آغاز ارتباط مشخص و بين دو پايانه مبادله مي شوند. Multi-Stream باعث بالا بردن درجه ي همروندي در برنامه هاي MPI مي شود. علاوه بر اين ، با دريافت پيام ها با ترتيب جزئي باعث جلوگيري از پديده Head-Of-Line-Blocking ميشود. همچنين با اين ويژگي و ويژگيهاي مانند آن ميتواند باعث کاهش در تعداد سوکت هاي ايجاد شده براي ارتباط با فرآيندها شود. بنابراين خصوصيات خوب پروتکل SCTP که دليل تمايز اين پروتکل از TCP شمرده مي شود، مي تواند اين پروتکل را به عنوان يک جايگزين خوب براي کار کردن MPI با پروتکل لايه ي انتقال معرفي کند[۶,٥]. پروتکل SCTP براي انتقال داده ها از مسير اصلي استفاده مي کند و وقتي که خرابي و نقصي در مسير اصلي رخ دهد، ادامه ي همان انتقال داده ها را روي يکي از مسيرهاي جايگزين انجام ميدهد. وجود ويژگي Multi-Home باعث ميشود که بتوانيم از خصوصيت انتقال همزمان روي تمامي مسيرهاي فعال استفاده کنيم . اين خصوصيت Load-Balancing نام دارد. روش هاي زيادي براي اين کار معرفي شدند که از جمله : روش هاي انتقالات همزمان CMT-SCTP [۹] و ارتباطات همزمان CMC-SCTP [۱۰] است . به دليل کارايي و عملکرد بهتر در انتقالات ، روش MPI مبتني بر انتقالات همزمان پروتکل CMT-SCTP( SCTP) طرح ريزي شد [ ۱۱- ۱] . اما مشکل اصلي اين روش ، تاخير زياد مخصوصا زماني که مسيرهايي با سرعت کم وجود دارد، است . در ادامه ي مقاله ، در بخش ۲ مسئله ي انتقال همزمان بر پايه ي پروتکل SCTP مطرح مي کنيم . در بخش ۳ کارهاي مربوطه در اين زمينه را گزارش ميدهيم . همچنين در بخش ۴ و ۵ به طرح ريزي MPI مبتني بر پروتکل CMC-SCTP و مزاياي اين روش بپردازيم . در بخش ۶ نيز نتيجه گيري اين مقاله را ارائه ميکنيم .
٢- انتقالات همزمان بر پايه پروتکل SCTP
در پروتکل SCTP اين قابليت وجود دارد که بتوانيم از چند واسط که به يک نود شبکه متصل هستند به طور همزمان انتقال داده داشته باشـيم .
زماني که بخواهيم از متد انتقال همزمان مبتني بر پروتکل SCTP استاندارد استفاده کنيم ، از يک مسير به عنوان مسير اصـلي اسـتفاده مـي شـود و ديگر مسيرها به عنوان مسير پشتيبان در نظر مي گيرد. در زمان استفاده از اين پروتکل بايد متغيرها و رويه ي کنترل ازدحام روي هر مسير انتقال بـه صورت جداگانه محاسبه شود تا ترافيک و انتقال داده ها روي هر مسير به خوبي کنترل شود. در آغاز ارتباط يک پايانه بايد قادر به کنترل کردن تعداد واسط ها شبکه ي در دسترس و موجود که مي توانند براي انتقال همزمان استفاده شوند، باشد. در SCTP استاندارد فقط از يک مسير ارتبـاطي بـراي انتقال داده استفاده مي شود اين امر باعث شد تا اين پروتکل توسعه داده شود و پروتکل CMT-SCTP [۹] معرفي شود اين پروتکـل مـي توانـد از همه مسيرها به طور همزمان براي انتقال داده استفاده کند. از آنجايي که هر کدام از مسيرهاي انتقال داراي ويژگي هاي زيادي اعم از سرعت ، تـاخير، زمان رفت و برگشت (RTT) و کنترل ازدحام مختلفي هستند، انتقال همزمان باعث مشکلات زيادي از جمله نا مرتب بودن (Reordering) پاکت هاي دريافت شده توسط گيرنده در شبکه مي شود که براي بهره برداري درست و صحيح از اين گونه انتقال ، بايد مشکلات آن شناخته و حل شود. اسـاس ضعف اين روش اين است که گيرنده نيز هيچ گونه اطلاعي از انتقالات انجام شده روي مسيرها ندارد. همـين مسـاله باعـث ارسـال مـداوم اطلاعـات نادرست مربوط به داده هاي هنوز دريافت نشده ، به سمت فرستنده مي شود.
CMC-SCTP نيز يک روش براي انتقال همزمان داده ها از روي چندين مسير موجود و در دسترس است [۱۰]. در اين روش از پر سرعت ترين مسير به عنوان مسير اصلي استفاده مي شود و بقيه مسيرها به عنوان مسير فرعي در نظر گرفته مي شوند اما داده ها روي تمامي مسيرها به صـورت همزمان ارسال مي شوند. به منظور اطلاع گيرنده از اطلاعات ارسالي روي هر مسير، در زماني که يک انتقال روي هرکدام از مسيرها انجام گرفـت ، بـا استفاده از يک چانک وضعيتي ، اطلاعات اين ارسال انجام شده را روي مسير اصلي ، به سمت گيرنده ارسال مي کند. گيرنده در سمت بـافر خـود يـک جدول وضعيتي که حاوي اطلاعات چانک داده هاي وضعيتي است ، ايجاد مي کند. با استفاده از اطلاعات موجود در جدول مي توانـد بفهمـد کـه چـه داده هايي در حال انتقال از سمت چه مسيرهايي هستند و از ارسال مجدد بدون دليل داده هاي گم شده در بين چانک داده هاي مورد نظر جلـوگيري مي کند. با اين کار مشکل نامرتب بودن (Reordering) پاکت هاي دريافت شده در سمت گيرنده نيز حـل مـي شـود و همچنـين بـه دليـل اطلاعـات درستي که گيرنده به فرستنده از داده ها و شکاف (Gap) هاي رخ داده شده ، مي دهد، فرستنده نيز مانع ارسال مجـدد داده هـايي مـي شـود کـه روي مسيرهاي آهسته تر در حال انتقال هستند ولي هنوز نرسيده اند.
٣- کارهاي مربوطه
در ادامه ي متن بررسي مختصري روي روش هاي پيشين مورد استفاده در HPC مبتني بر MPI انجام ميشود.
٣-١ پردازش موازي و مبادله ي پيام (MPI( مبتني بر پروتکل TCP
پروتکل TCP را براي دو نوع قابل توجه MPI،MPICH و LAM در شبکه هاي محاسباتي، شبکه هاي گسترده (Wide Area Network) و محيط هاي Meta-Computing پياده سازي شدند [۷]. ميان افزار MPI از مفاهيمي به نام ارتباط دهنده (Communicator) و Context اسـتفاده مي کند تا مشخص کند کدام فرآيندها مي توانند با يکديگر ارتباط برقرار کنند. هر فرآيند يک شناسه منحصر به فـرد (Rank) دارد. MPI از ارتبـاط پيام گرا استفاده ميکند و هر پيام توسط يک شماره (Tag) مشخص ميشود، هر فرآيند ميتوانـد بـه فرآينـدهايي کـه بـا خـودش در يـک مجموعـه (Context) قرار دارند پيام ارسال يا دريافت کند. لذا براي ارسال پيام از يک فرآيند به فرآيند ديگر، يک سوکت جديد بين فرستنده و گيرنده ايجـاد مي شود و در صورتي که يک فرآيند بخواهد با چند فرآيند در ارتباط باشد بايد سوکت هاي جداگانه براي هر فرآيند ايجاد کند، بدين گونه کـه بـراي ارتباط با همه پروسه هايي که در Context خود دارد بايد به تعداد آن فرآيندها سوکت ايجاد کند و فرآيند بايد اطلاعات همه اين سوکت ها را ذخيـره کند. يکي از مشکلات مهم استفاده ي MPI مبتني بر TCP، وجود تاخير زياد و سختي در استفاده ي تمام پهناي باند شبکه است . فرآيند هاي MPI تمايل به همزماني و هماهنگي ضعيفي دارند حتي در زماني که آنها به طور مستقيم با يکديگر ارتباط ندارند. اگر تاخير در يک فرآينـد اتفـاق بيفتـد، باعث اثر موج گونه اي در فرآيندهاي ديگر ميشود. بنابراين کارايي به ويژه در زمان تراکم شبکه بسيار کم مي شود. با افزايش تاخير شبکه يک فرآيند بايد زمان زيادي براي تحويل يا ارسال يک پيام منتظر بماند. شکل (۱) فرمت پيام MPI و فرمـت آن را در LAM مبتنـي بـر پروتکـل TCP نشـان ميدهد.

شکل ۱. فرمت MPI و Envelope در LAM [٨]
٣-٢ پردازش موازي و مبادله ي پيام (MPI( مبتني بر پروتکل SCTP
SCTP يک پروتکل لايه انتقال است و به دليل ساختار خاص آن سازگاري بسيار زيادي با MPI دارد. سه قابليت مهم ايـن پروتکـل کـه باعـث سازگاري هرچه بيشتر اين پروتکل با MPI مي شود در زير آمده است :
۱) پشتيباني از واسط هاي متعدد شبکه به طور همزمان بدين صورت که يک نود در شبکه (کامپيوتر) مي توانـد بطـور همزمـان از چنـد واسـط شبکه براي ارتباط با ديگر نودها استفاده کند.
۲) پشتيباني از چند جريان جداگانه داده (Multi Streaming) بدين معني که مي تواند پيام ها را در جريان هاي مختلف ارسال کند.
۳) پشتيباني از سوکت هاي يک به يک (One-To-One) و يک به چند (One-To-Many)، اين قابليت باعث مي شود که بـدون نيـاز بـه ايجـاد يک اتصال جديد(Connection Setup) متعدد فقط به ايجاد يک اتصال بتواند سوکتي ايجاد کند که با چند سوکت ديگر در ارتباط باشد.
براي پياده سازي MPI مبتني بر پروتکل SCTP معمولا از دو نگاشت مختلف استفاده ميکنند بدين صورت که قابليت هاي مختلف ايـن پروتکـل را در ارتباط با شرايط مورد نياز MPI در نظر ميگيرند و سپس پياده سازي خود را بر آن مبنا قرار ميدهند. در نگاشت اول بدليل اينکه هـر پروسـه در MPI مي تواند به پروسه هاي موجود در Context خود پيام ارسال يا از آنها پيام دريافت کند، کافيست يک سوکت يک به چند(One-To-Many) ايجاد کنيم و بدين صورت يک پروسه مي تواند با تمام پروسه هاي موجود در Context خـود ارتبـاط برقـرار کنـد. پـس ايـن دو قابليـت در MPI و SCTP با هم نگاشت ميشوند و روال هاي MPI به گونه اي توسعه مييابند که يک فرآيند براي ارتباط با همه فرآيندهاي موجود در Context خود يک سوکت يک به چند ايجاد مي کند. از طرف ديگر هر فرآيند مي تواند با يک فرآيند ديگر به صورت مستقيم ارتباط برقرار کند و يک ارتباط نقطه به نقطه داشته باشد، براي ارسال و دريافت پيام نقطه به نقط هر فرآيند نياز به شناسه (Rank) فرآيند ديگر دارد همچنين در SCTP هر پايانه ( End Point) يک شناسه (Association) مربوط به خود دارد [۷]. اين دو مفهوم نيز ميتوانند نگاشت شـوند، در ايـن صـورت هـر فرآينـد بـراي ارتبـاط مستقيم با پروسه ديگر از يک سوکت يک به يک استفاده ميکند. اين نگاشت در شکل ۲ آمده است .

شکل ۲. نگاشت SCTP به MPI [٧]
نگاشت دوم MPI مبتني بر SCTP، در اين نگاشت براي اجتناب از ايجاد سوکت هاي متعدد يک معادل سازي Context به Stream در نظر گرفته مي شود براي اين کار يک فرآيند براي ارتباط با ديگر فرآيند ها در Context خود ميتواند جريان (Stream) هاي متعدد ايجاد کند. با اين کار MPI از مديريت سوکت هاي متعدد معاف مي شوند و طبيعتا سربار اضافي مديريت

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