Cloud Computing یا رایانش/محاسبات ابری چیست ؟! چاپ نامه الکترونیک
امتیاز کاربر: / 122
بدخوب 
مقالات - شبکه
نوشته شده توسط محمد مهدی حاجی اسمعیلی   
يكشنبه ۳۱ مرداد ۱۳۸۹ ساعت ۲۲:۰۸

Cloud Computing یا رایانش/محاسبات ابری چیست ؟!

همه چیز در مورد Cloud Computing

***قسمت دوم اضافه شد***

Cloud Computing یا محاسبات ابری چیست ؟

 

این مقاله، بزرگترین مقاله ایی هستش که تا به امروز بر روی CyberLone قرار داده شده و تقریبا میشه بهش یه Special Report و یا حتی یه White Paper بگین... مقاله در طی چندین قسمت ارائه و کامل میشه. برای اینکه بتونم در این مقاله کاملا معنا، مفهوم، ساختار و کارکرد Cloud Computing رو جا بندازم، به بسیاری از موضوعات ثانویه و غیرمرتبط با این تکنولوژی پرداختم که در ابتدا ممکنه خسته کننده به نظر برسن ولی در انتها خواهید دید که ارزشش رو داشتن... خلاصه دارم براتون میگم که این سفر، طولانیتر از سفرای قبلی هستش !


 

میدونین چه اتفاقی در دنیای IT میفته وقتیکه شرکتهای پایه و اصلی صنعت IT روی یه چیزی سیریش میشن ؟! قبل از اینکه جواب این سوال رو بدم بذارین در یه مورد یه کمی ور ور اضافی کنم :

IT صنعتی هستش که بخاطر Up To Second بودنش، بسیار شکننده و در عین حال پرسود هستش... اگه زود بجنبی و تکنولوژی درست رو انتخاب کنی، رشدی که داری قابل توجه خواهد بود... اگه دیر بجنبی یا بد انتخاب کنی، باید منتظر این باشی که تلفنت توی شرکت زنگ بخوره، منشی رئیس در حین لاک زدن ناخوناش بهت بگه "رئیس شاکیه ! میخواد ببینتت !" و اونوقت برگردی ببینی که همکاران با چشمان گریان و با گردن کج مثل مادر مرده ها به تو خیره شدن انگار داری به سمت تیغه ی گیلوتین میری ! (گیلوتینه ! گیر ندین بگین گیوتین !)

خب این چه ربطی به سیریش شدن شرکتهای مادر بر روی تکنولوژی خاصی داره ؟! بهتون میگم چه ربطی داره... تکنولوژی باید پیشرفت کنه و بهترین راهکار این پیشرفت معرفی ساختاری هستش که نه تنها قبلا ارائه نشده، بلکه اگر بتونه نیاز بازار رو به خودش جلب کنه، شما رو تبدیل به تنها ارائه کننده ی این ساختار میکنه (حداقل چندین ماه طول میکشه تا شرکتهای رقیب بتونن بهتون برسن) و در زمانیکه دیگر شرکتها به دنبال ارائه ی چیزی مثل اونی که شما ارائه کردین هستن، شما جلو میفتین، معروف میشین، سود میکنین و بالا میرین...

پس کاری که بعنوان یه شرکت مادر میکنین اینه : میزنین دهن مردم رو به کمک تبلیغات اینترنتی و تلویزیونی سرویس میکنین... بهشون القا میکنین که برای ساختارهای شبکه شون اونها *نیاز* به تکنولوژی ایی که شما ارائه میدین دارن... کاری میکنین که در تمام انجمنهای تکنولوژیک دنیا این *نیاز دروغین* برای تکنولوژی شما به وجود بیاد... وقتیکه همه به این ایمان رسیدن که تکنولوژی شما خوبه، اون رو عرضه میکنین...

و داستان تکنولوژی ایی که امروز درباره ش میخوایم صحبت کنیم همینه... یه نیاز دروغین که در طول زمان تبدیل به یه نیاز واقعی میشه...

به دنیای محاسبات ابری یا همون Cloud Computing خوش اومدین... فکر میکنین چیزی که در بالا گفتم دروغه ؟! یه نگاهی به سیر تکنولوژیهای ارتباطی و محاسباتی در طول تاریخ IT بندازین... یه نگاه بندازین و به دنبال شرکتهایی که تکنولوژیهای اصلی ارتباطی رو ارائه دادن بندازین... ببینین که آیا هر کدوم از این شرکتها در زمان خودشون جزو غولهای تکنولوژی بودن یا نه...

 

و عجیب نیست که امروزه بزرگترین حامیان Cloud Computing شرکتهای غولی همچون Amazon (با سرویس AWS) یا شرکت Microsoft (با سرویس Azure) و یا گوگل (با سرویس Apps) هستند ! و عجیبتر هم نخواهد بود وقتیکه میبینین تبلیغات پلتفرمهای Cloud این شرکتهاست که اینترنت رو فرا گرفته و ازشون در امون نیستین !

خب... ولش کن حاجی ! روحتو مثه مال من کثیف نکن ! معمولا مقاله های من با اشاره ایی به نیاز واقعی ما به تکنولوژی مورد بحث در اون مقاله شروع میشن ولی فکر کنم این یکی با بقیه فرق داره... این یکی یه هشدار اولش داشت، نمیتونم بگم که "از Cloud Computing استفاده نکنین" چرا که چه من بخوام و چه نخوام، روند استفاده از تکنولوژی توسط من یا شما تبیین نمیشه بلکه توسط شرکتهای مادر مشخص میشه و متاسفانه ما قدرت زیادی برای نافرمانی نداریم مگه اینکه خودمون تبدیل به یه تولید کننده ی Mainstream بشیم... به امید اون روز...

کلاس تاریخ !

بذارین براتون از دنیای کثیف و بیرحم تکنولوژی بگم ! بذارین براتون بگم که وقتی تکنولوژی باهاتون حال نکنه، چطوری کنارتون میذاره . بهتون میگه "میدونی... مشکل از منه ! نه تو ! منم که نمیتونم با تو باشم ! تو خیلی فراتر از منی ! برو دنبال خوشبختی بگرد ! بیا ! اینم حلقه ت !" و بعدش میبینی که زیر پوتینهای تکنولوژی جدید له شدی !

اگر در سیر تغییر تکنولوژی ریز شده باشین، متوجه میشین برخی از تکنولوژیهایی که در  یک زمان جزو بهترینها بود، در زمانی دیگر نه تنها دیگه به درد نمیخورن بلکه یواش یواش منقرض هم میشن... البته باید گفت که این روند طبیعی و بلای طبیعی هست که بر سر تکنولوژیها میاد... ولی آیا وقتیکه این تکنولوژیهای منقرض شده یک دفعه دوباره مثل روز اولشون مشهور و معروف میشن و حتی از گذشته هم پرطرفدارتر میشن هم طبیعی هستش ؟!

شوخی میکنم ؟! عمرا !

حالا که اینطور شد بذارین دو تا از این تکنولوژیها رو مثال بزنم... اولیش قبلا روی کار اومده بود و حالا در حال انقراضه (هنوز کامل منقرض نشده) و احتمالا در آینده ایی نه چندان دور دوباره برمیگرده... دومیش قبلا منقرض شده بود و حالا دوباره روی کار اومده و موضوع اصلی مقاله ی فعلی هستش...

MultiTasking & MultiProgramming

بذارین از اولی شروع کنم : داستان در مورد تکنولوژی ایی به نام MultiProgramming هستش. MultiProgramming با نام MultiTasking هم شاخته میشه و با اینکه فرقهای معدودی با همدیگه دارن، ولی در نهایت میشه گفت که مثل هم هستند... داستان اینه که در زمانهای دور (نه خیلی دور) CPU ها هنوز چند پردازنده ایی نبودن و اگر سیستم عامل شما چندین کار (Job) برای انجام داشت، باید اونها رو در صف میچید و سپس هر کدام از کارها رو به ترتیب "اول ورود، اول خروج" یا همون FIFO به CPU میفرستاد...

حالا بیاین در نظر بگیریم که سه تا کار برای انجام داریم... در CPU هایی که Mutitasking رو پشتیبانی نمیکردن، هر سه کار باید به ترتیب وارد CPU میشدن، وقتیکه کار اول در CPU بود، کارهای دوم و سوم باید علاف میموندن تا کار شماره ی یک تموم بشه... وقتیکه کار شماره ی یک تموم میشد، به ترتیب کار دوم و سپس کار سوم اجرا میشدن...

خب این مشکلش چیه ؟! CPU هستش دیگه حاجی ! همینطوری کار میکنه ! 10 تا دست نداره که ! در آن واحد میشه یه کار کنه !

خب حالا اینو در نظر بگیرین : کارهای اول و دوم کارهای زمانبری هستن و احتمالا نیاز به I/O و وقفه برای کامل شدن دارن در حالیکه کار سوم یه وظیفه ی ساده مثل یه محاسبه ی Integer هستش و زمانبر نخواهد بود (بیشتر از چندین Cycle واحد محاسبه رو به خودش اختصاص نمیده)... حالا این بدبخت (سومیه !) باید 5 دقیقه صبر کنه تا کارهای اول و دوم تموم بشن و این یعنی اسراف زمان پردازش و تقابل با سیستم...

برای اونایی که تا اینجای مقاله حوصله شون خیلی سر رفته یا اینکه تیکه ی بالا رو نخوندن همینو میگم : حاجی ! اگه Multitasking نباشه، پشت کامپیوترت علاف میشی عیهنو وقتیکه تو صف نونوایی هستی! ممکنه تو دو تا نون بخوای ولی دو نفر جلوی تو هر کدوم دارن آذوقه برای زمستون تهیه میکنن و نفری 50 تا میخوان ! این یعنی چی ؟! یعنی اینکه علافی حاجی ! علاف !

Uniprogramming چیست ؟!

چگونگی کارکرد یک CPU بر اساس UniProgramming

باید برای این مشکل چه تمهیدی اندیشیده میشد ؟! مهندسین به این نتیجه رسیدن که اگه بتونن برای هر کاری که میخواد روی CPU انجام بشه، یه زمان مشخص در نظر بگیرن بطوریکه هر کاری که در صف قرار داره فرصتی برای ارائه ی درخواستش داشته باشه، اونوقت به طور میانگین تمامی کارها بسیار سریعتر از حالت اولیه (وقتیکه همه باید منتظر نوبتشون باشن) انجام میشن...

Multiprogramming یا Multitasking چیست ؟

چگونگی کارکرد یک CPU بر اساس MultiProgramming برای اجرای سه Job

به این تغییر کارها Context Switch گفته میشه... توضیح معنای لغوی Context مربوط به علوم کامپیوتر به زبان فارسی سخته...Context از لحاظ فنی و تکنیکی به مینیمم اطلاعاتی گفته میشه که برای متوقف کردن و دوباره از سر گرفتن و ادامه دادن یک کار (Job) لازم هستش. مترجمای چاقال و باقالی به کلمه ی بالا "تغییر متن" میگن که کاملا غلط و اشتباهه... اگر در زبان انگلیسی کمی غرق شده باشین متوجه میشین که درک این کلمه در انگلیسی راحت ولی توضیحش به فارسی سخت هستش ! برای Context Switch من ترجیحا از "تغییر کار" استفاده میکنم...

برای دوستان بیخیال ! صف نونوایی رو یادتونه ؟! فکر کنین که نونوا به هر کسی که در صف هستش 1 دقیقه فرصت بده، در این یک دقیقه هر مقدار نونی که از تنور بیرون آورده میشه به شخصی که نوبتش هست داده میشه، وقتیکه یک دقیقه ی اون فرد تموم میشه، یه نفر دیگه نوبتش میشه و دوباره به این فرد یک دقیقه داده میشه... اینطوری در مثالی که زدم (اونی که دو نفر جلوت هستن و هر کدوم 50 تا نون میخوان ولی تو دو تا میخوای) در دقیقه ی اول مثلا نفر اول 2 تا نون میگیره... در دقیقه ی دوم نفر دوم مثلا 3 تا گیرش میاد... وقتیکه دقیقه ی سوم میشه و نوبت تو هستش، سریع دو تا نونت گیرت میاد و کارت تموم میشه و از صف بیرون میای، میری خونه کنار کلثوم میشینی و افطار میکنی و از نعماتی که خدا بهت داده تشکر میکنی !

این بود توضیحی بسیار کوتاه و خلاصه از MultiTasking... MultiTasking بنیان بسیاری از تکنولوژیهای اشتراک گذاری محاسبات همچون MultiThreading رو در خودش داره و اگه اینو درک کردین، بسیاری از اونا رو هم میتونین درک کنین... بیشتر خواستین هم توی Wikipedia هستش !

تفاوت زمانی بین Mutliprogramming و Multitasking

تفاوت زمانی بین MultiProgramming و UniProgramming

MultiTasking MultiTasking شوخی نیستشا ! واقعا چنین تکنولوژی ایی در CPU های قدیمی و حتی CPU های قوی امروزی همچون Core i7 استفاده میشه... تکنولوژی معروف Intel با نام Intel Hyperthreading Technology هم بر این اساس ساخته شده بود...

امیدوارم یادتون نرفته باشه که چرا اصلا این مثال رو زدم... میخواستیم ببینیم که چرا چنین تکنولوژی خوبی باید در طول زمان منقرض بشه ؟!

خب... خودتون چی فکر میکنین ؟ مطمئنا چیز بهتری اومده که تونسته اینو پشت سر بذاره... یه کم فکر کنین... چه چیزی بهتر از این میتونست باشه ؟!

ما وقتی از MultiTasking استفاده میکردیم که قیمت CPU به عنوان یه Individual گرون بودش و باید یه طورایی استفاده از CPU ها رو بهینه و Optimize میکردیم... ولی این مشکل با گذشت زمان و دسترسی به تکنولوژیهای ساخت سخت افزار در مقیاسهای کوچکتر (از 90 نانومتر به پایین) از بین رفت و یواش یواش ایده ی ساخت و استفاده از چندین هسته ی محاسباتی (PU) در CPU های جا افتاد... CPU های چند هسته ایی در گذشته هم بودن ولی به خاطر قیمت بالایی که داشتن، فقط در پیاده سازیهای مهم محاسباتی همچون Super Computer ها مورد استفاده قرار میگرفتن...

ولی حالا موضوع فرق میکنه... یواش یواش ایده ی "تقسیم زمان استفاده از CPU" تبدیل به "تقسیم کارها در بین چند PU" شد و امروزه ما شاهد CPU هایی با قیمتهای ارزان ولی هسته های محاسباتی بسیار (از 2 تا شروع کن تا 64 تا و بیشتر !) هستیم.

از نظر مثال بسیار حرفه ایی "نونوایی" هم میشه گفت که به جای اینکه وقتتو دم در نونوایی بربری هدر بدی، میتونی بری کوچه ی بالا از اون یکی نونوایی بربریه که خلوت تر هستش خرید کنی !

موضوع مهمی که باید اینجا بهش توجه بشه اینه که MultiTasking هنوز کاملا منقرض نشده ولی توجه و اهمیتی که قبلا بهش داده میشد، امروزه دیگه بهش داده نمیشه... با اینکه CPU های امروزی هنوز هم استفاده ی خفن شدیدی از MultiTasking میکنن ولی همونطوری که تننباوم هم اشاره کرده بود، این تکنولوژی در حال کمرنگ شدن و در انتها منقرض شدن هستش...

خب... همین که تا اینجاش هم تونستین دووم بیارین خیلی خوبه... حالا مثه یه پسر یا دختر خوب بلند شین، یه دور تو اتاق بزنین، چشمهاتون رو ماساژ بدین، یه آب بخورین و دوباره مثه پسر یا دختر خوب برگردین پشت صندلی میزتون... میدونستین اگه هر یه ربع چشماتون رو استراحت ندین، مثل من کور میشین ؟! من بدون عینکم مثه گاگولای باکلاسم ! خداییش !

خب... میرسیم به سراغ دومین مثالی که میخواستم براتون بزنم.

Thin Client

احتمال بالایی هست که در مورد سیستمهای Time-Sharing، Mainframe ها و تاریخچه ی تحول صنعت کامپیوتر چیزهایی خونده و شنیده باشین. تمرکز من روی بازه ی خاصی از تاریخ صنعت کامپیوتر هستش یعنی زمانی که Mainframe ها حکومت میکردن.

Mainframe ها همون کامپیوترهای خیلی خیلی گنده ایی هستند که شما توی فیلمها میبینین ! مربوط به زمان خاصی هم نیستن، همونطور که بیش از 30 سال پیش به عنوان ابرکامپیوترها و غولهای محاسباتی شناخته میشدن (مثلا IBM 360)، الان هم تولید میشن (مثل IBM System z) ولی خب دست من و شما نمیرسن !

ببینین در مورد یه سرور قوی صحبت نمیکنما ! در مورد سیستمایی صحبت میکنم که حافظه شون میتونه تا 1520 گیگابایت باشه و بیش از 77 تا CPU در هر واحد داشته باشن ! آره ! در مورد سیستمهایی صحبت میکنم که قیمت پایه شون از 1 میلیون دلار (یک میلیارد تومن) شروع میشن !

اگه راستشو بخواین همین الان تو ایران دو تا Mainframe بیشتر وجود نداره که به من و شما ربطی نداره که کجا استفاده میشن ! دسترسی بهشون هم باید با نامه های رده بالا باشه و حتی به عنوان یه دکترای کامپیوتر هم دیدنشون تقریبا غیرممکنه !

Mainframe شرکت IBM با نام IBM System Z

IBM System Z یکی از سری Mainframe های معروفه

میخوام که حواستون رو جمع کنین... بنیان مقاله قراره از اینجا شروع بشه !

در روزگار گذشته که Personal Computer ها آرزوهای چرت و مسخره ی یه آدم بودن (!) شرکتها برای ارائه ی ساختاری محاسباتی از Mainframe ها استفاده میکردن... کاربران پشت دستگاههایی مینشستن که یه مانیتور و یه کیبرد داشت... به این دستگاهها Terminal میگفتن و مطمئنا توی این فیلمهای قدیمی دیدینشون... همون مانیتورهای صفحه سیاه با فونتهای سبز... خودشونن !

Terminal ها قدرت محاسباتی نداشتن و برای انجام کارهاشون به یه قدرت برتر نیاز داشتن... این قدرت برتر Mainframe بودش که ترمینالها بهش وصل میشدن، درخواستشون رو بهش میفرستادن و سپس جوابشون رو بر روی مانیتور میگرفتن...

ترمینال کامپیوتری برای ارتباط با Mainframe

یه Terminal که آب روغن قاطی کرده !

پایه و مبنای پشت چنین Logicیی این بود که سیستمهای ضعیف نیازی به داشتن قابلیتهای یک Mainframe ندارن... چرا باید اطلاعات رو بر روی سیستمهای شرکت به صورت پخش شده قرار بدیم و هر کسی کارش رو با سیستم خودش انجام بده در صورتیکه میتونیم یه سرور پر قدرت (همون Mainframe) قرار بدیم، اطلاعات رو بر روی اون ذخیره کنیم، محاسبات رو بر روی اون انجام بدیم و اطلاعات مورد نیاز یوزرها رو براشون نمایش بدیم ؟

Thin Client ها متفاوت بودن... برخیشون به سیستم عاملی برای BOOT کردن دستگاه و انجام موارد لازم برای برقراری ارتباط با Mainframe نیاز داشتن و برخیشون که با نام Ultra Thin Client (به فارسی : Thin Client خفن !) فقط دارای یه Kernel و هسته ی بسیار ساده ی سیستم عاملی بودن که تنها کارش Initialize کردن ارتباط با Mainframe و برقراری ارتباط با اون بوده...

Ultra Thin Client شرکت Sun Microsystems

Ultra Thin Client شرکت Sun که همه ش همینه !

Thin Client هم مثل MultiTasking یه دفعه منقرض نمیشه، بلکه در طول زمان شروع به کمرنگ شدن میکنه... ممکنه شما الان پلتفرمهای متفاوتی از شرکتهایی همچون IBM (با پلتفرم EEXSun Microsystems (با پلتفرم سری Sun Ray) و یا DELL (با پلتفرم FX100) رو دیده باشین ولی سوال مهم اینه که چند درصد از سهم بازار (چه در ایران و چه در نقاط دیگر دنیا) از این تکنولوژی بهره میبره ؟!

با اینکه ساختار ارتباطی معماری Thin Client بر اساس ساختار Client/Server هستش ولی دلایل متعددی برای کمرنگ شدن این تکنولوژی در طول زمان بوده که از جمله ی اونها میشه به پر رنگتر شدن ساختارهای Client Side و همچنین کندی ارائه ی سرویس به Client ها اشاره کرد.

تفاوت حجمی بین Desktop و Thin Client

تفاوت حجمی یک Desktop و یک Thin Client Agent !

مشکل اول چیز قدیمی ایی نیستش و حتی امروز هم شما باهاش دست به یقه هستین ! فکر کردین که اون FaceBook خراب شده ایی که هر روز ساعتها وقتتون رو پاش هدر میدین چند درصدش Server Based و چند درصدش Client Based هستش ؟! اگه میخواستین سیستمتون رو Thin Client کنین، اون AJAX چاقی که توی صفحاتش Embed شده رو عمه ی Facebook میخواست براتون محاسبه کنه و نمایش بده یا یه سرور گردن شیکسته ؟!

یا همه ی اون بازیهای مزخرف آنلاینی که زندگیتون رو باهاش به هدر میدین (همچین در مورد هدر دادن زمان مینویسم که انگار عمه م هستش که روزی 15 ساعت میخوابه (!) بعدشم از بس خوابیده وقتی بلند میشه تنش درد میکنه ! ) قراره با کدوم ساختار محاسباتی پردازش بشن و به صورت Real-Time نمایش داده بشن ؟!

افزایش میزان پردازش در طرف Client باعث نیاز به سخت افزار قویتر برای سروری که میخواد این بار رو تحمل کنه (نه از یه یوزر بلکه صدها یوزر) میشه و سرور شما بعد از مدتی باید به صورت خود به خود تبدیل به یه Mini Computer بشه. به خاطر اینکه بیست سی سال پیش قیمت و هزینه ی این Mainframe و MiniComputer ها بسیار زیاد بود و شرکتها باید فشار زیادی رو بعد از خرید این دستگاهها تحمل میکردند، با ورود Personal Computer ها، Thin Client ها به سرعت کمرنگ شدن... PC قدرت محاسباتی رو ارائه میداد که یوزرها آرزوش رو داشتن و این قدرت با قیمتی بسیار کمتر از Mainframe های خر هزینه به دست میومد... بهمین دلیل PC ها تا مدتی (حداقل تا میانه ی دهه ی 2000) تونستن Thin Client ها رو کنار بزنن... ولی خواهیم دید که این رقابت در حال برعکس شدن هستش...

یه مشکل دیگه کند بودن ارتباطات شبکه (حداکثر 10 مگابیت در ثانیه در قدیما (!) که در سالهای اخیر بکمک سریهای جدید CAT و همچنین فیبرنوری بهتر شده) بوده که باعث میشده ارتباط بین Client با Server با تاخیر مواجه بشه. بعدا در بحث OnLive به این موضوع به عنوان یه مشکل بزرگ در ارتباطات با نیاز به محاسبات Real-Time زیاد اشاره میکنم که پیاده سازی چنین ساختارهایی رو در کشورهایی با سرعت اینترنت بسیار پایین (بصورت میانگین 56 کیلوبیت) کاملا غیرممکن میکنه...

چرا بحث Thin Client رو مطرح کردم ؟! میخواستم براتون بگم که چطوری این تکنولوژی ایی که در گذشته استفاده میشد و یواش یواش داشت به فراموشی سپرده میشد، حالا دوباره برگشته... بحث Cloud Computing نزدیکی بسیاری با مفاهیم Thin Client و Client / Server Model داره هر چند که با اونها تفاوت داره...

 


قسمت دوم

بذارین شما رو با یه مشکل بسیار خفن آشنا کنم... اگر بتونین این مشکل رو درک کنین و مهمتر از اون اینکه بتونین درک کنین که Cloud Computing چطور حلش کرده، دیگه مطمئن میشم که آماده هستین تا با نقاط ریز و عناصر اصلی تشکیل دهنده ی یک Cloud آشنا بشین...

با بازیهای کامپیوتری که آشنا هستین ؟! بازیهای کامپیوتری قبل از ارائه ی تکنولوژی ابری به نام OnLive ، یک نرم افزار به تمام معنای Client Side شناخته میشدن... برای پردازش بافتهای بازی (وTextures) به میزان زیادی RAM نیاز بود. برای پردازش فیزیک بازی، انیمیشنها، RagDoll، نورپردازی، سایه زنها (Shading)، سایه پردازی و Mapping های مختلف در طول بازی، برنامه نیاز شدیدی به منابع محاسباتی همچون CPU و صد البته GPU داشت. هر چقدر که کیفیت گرافیک، فیزیک و یا Resolution بازی بالاتر میرفت نیاز به موارد بالا بیشتر و بیشتر میشد. خلاصه دلم برات بگه ننه که رقابت شدیدی برای هر چه خفنتر کردن Gaming Rig یوزرها بوجود آمده بود.

لوگوی OnLive

لوگوی Onlive که موضوع اصلی این قسمت مقاله هستش.

دنیای بازی بر روی PC ها همینطوریه... هر روز یه RAM با پهنای باند ارتباطی بیشتر، قابلیت خنک کنندگی بهتر و یا Latency کمتر به بازار عرضه میشه، هر روز یه CPU با تعداد هسته های متعدد و یا Cache سطح یک و دوی بیشتر میاد تو بازار و مهمتر از همه میدونین چیه ؟

میدونستین در بین قطعات یک PC ، کارت گرافیک (که صرفا یا برای بازی یا برای کارهای گرافیکی استفاده میشه) جزو گرونترین و مهمترین قطعات هستش... یه کارت گرافیک جدید nVidia و یا ATI قیمتشون در چند ماه اول عرضه کمتر از 1 میلیون نمیشه !

همه ی اینها برای چی ؟! برای اینکه یوزرها یه نرم افزار Client Side به نام "بازی کامپیوتری" دارن که نیاز به اجرا شدن داره... مهم نیست که چقدر سیستمتون رو قوی میکنین چرا که 6 ماه بعد دوباره همه ی این سخت افزارها قدیمی و به درد نخور میشن و باید دوباره اقدام به خرید یه سری جدیدتر بکنین... در این بین تنها چیزی که عایدتون میشه، ضرره...

تغییر تکنولوژی یکی از مهمترین علل این ضرر هستش... براتون یه مثال میزنم : با سریهای قدیمی کارتهای گرافیکی nVidia آشنا هستین... سریهایی که با اعدادی مثل 4000، 5000 یا 9000 عرضه میشدن... یادمه که من قویترین کارت گرافیک سری 5000 یعنی 5800 Ultra رو در زمان عرضه ش خریده بودم... قیمتش خفن زیاد بود و بهتون نمیگم چقدر !

هنوز یه کمی از خرید من نگذشته بود (10 روز) که تکنولوژی سایه زنی (Shader) جدیدی به نام Pixel Shader 3.0 عرضه شد. Pixel Shader 3.0 قابلیتهای بسیار عالی برای سایه زنی و پیاده سازی انواع Mapping ها داشت و تصاویر حیرت انگیزی ارائه میداد ولی یه مشکل بزرگ استفاده ی کامل از اونرو با مشکل مواجه کرده بود : چونکه تکنولوژی جدیدی بودش، توسط کارت گرافیکهای قدیمی (حتی اگر کارت رو دیروز خریده بودی !) ساپورت نمیشد و میدونین چی جالب بودش ؟ سریهای بعدی کارتهای nVidia که با نام Geforce 6000 شناخته میشدن از این تکنولوژی پشتیبانی میکردن بدین ترتیب که حتی ضعیفترین کارتهای سری 6 (مثل Geforce 6200) میتونستن بازی ایی بهمراه تکنولوژی Pixel Shader 3.0 رو پشتیبانی کنن ولی کارت گرافیک غول و بی پدر مادری مثل Geforce 5800 Ultra ی من نمیتونست اینکار رو بکنه...

نتیجه این شد که باید مثل بدبخت بیچاره ها میرفتم میشستم توی فرومهای مختلف بازیها و مزخرفات بچه مایه دارایی که Geforce 6000+ داشتن رو میشنیدم و حسرت میخوردم !

"پسر ! بازی F.E.A.R خیلی توپه ! دلم برای همه ی بدبختایی که نمیتونن اجراش کنن *سرفه* محمد *سرفه* میسوزه !"

"آخی ! Geforce 5800 Ultra داری و نمیتونی F.E.A.R بازی کنی ؟! اشکال نداره من جاتو خالی میکنم !"

"ممد ! بچه ها اینجا برات یه خیریه زدن تا برای کارت جدیدت پول جمع بشه ! احتمالا تا دو سال دیگه میتونی F.E.A.R رو بازی کنی !"

و مزخرفاتی خیالی مثل همین چیزایی که بالا بود... قبل از اینکه ادامه بدم یه چیزی بگم... شماهایی که مطلب رو خوندین ! اگر لحظه ایی دلتون برای من سوخت یه خبری براتون دارم : خیلی بیکارین ! بیشوخی دارم میگم ! بچه های مردم از گشنگی تو خیابون گدایی میکنن و آینده ایی جز بدبختی انتظارشون رو نمیکشه و شماها به جای اینکه یه کمی سر کیسه (هر کیسه ایی : علم، محبت، یاری، پول، غیره) رو شل کنین، دارین برای اسکلی که "کارت گرافیکی خدا تومنی دلخواهش رو نتونسته بخره !" دل میسوزونین ؟! دل نسوزونین !

The Poor and Lonely

هنر نیست که من هر وقت حوصله م توی نوشتن مقاله سر رفت عکس چند تا بچه ی فقیر توی مطلبم بچپونم ولی بیاین اینکار رو به حساب بهانه ایی برای به یاد آوردن اونها، هر چند گذرا، بگذاریم...

برمیگردیم به مطلب... هدف من از نوشتن این چند خط بالا درک شما از این مطلب بود که سخت افزارهای محاسباتی کامپیوتر در طول زمان قدیمی میشن و شما رو وارد یه چرخه ی بی پایان *خرید-فروش-خرید* دوباره میکنن که حاصلی جزو ضررهای بسیار زیاد نداره...

شاید به ذهنتون برسه که "خب ! دنیای PC اینطوریه ! ولی همونطور که همه مون هم تازگیا خیلی شنیدیم دنیای PC به خاطر دنیای کنسولهای بازی همچون 360 , Wii و PS3 در حال جمع شدن هستش... پس به جای اینکه بریم PC بخریم، میریم یه کنسول میخریم، چند سال با همون کنسول بازی میکنیم، بعدش که یه کنسول جدید اومد قدیمیه رو میفروشیم و جدیده رو میگیریم..."

این تفکر از برخی لحاظ واقعا خوبه... چرا ؟! برای اینکه یه کنسول حداکثر 400 دلار پولش میشه، و شما 400 دلار پول میدین و برای چندین سال از بازیهای اون کنسول بهره میبرین تا وقتیکه اون کنسول توسط یه کنسول جدید عوض بشه... خب این چه مشکلی داره ؟

تا حالا واژه ی TechnoPhile رو شنیدین ؟ تکنوفیل به اسکلایی گفته میشه که خوره ی تکنولوژی هستن، مهم نیست که تلویزیون LCD، سه بعدی و 1080p که اخیرا خریده چقدر خوب هستش، چونکه به محض اینکه شرکتهایی مثل سونی، سامسونگ یا LG تبلیغی در مورد تلویزیونهای LED بیرون بدن، طرف بدون هیچ زمان تلف کردنی بدو بدو میره و تلویزیون جدیده رو میخره !

اصلا هم نمیپرسه که "حاجی ! اینی که خریدی اصلا چه فرقی با LCD یه داشت ؟! اصلا به دردت میخوره ؟ اصلا ارزش هزینه ش رو داشت ؟ آخه اسکل ! اصلا میدونی داری چه غلطی میکنی ؟! نه حاجی ! ولم کنین بذارین برم بزنم دهنشو سرویس کنم مرتیکه رو ! مگه پول علف خره که برمیداری همینطوری هدرش میدی بچه چاقال ! ول کن کتو ! "

***دوستان شرمنده ! من برم بزنم دهن این یارو رو سرویس کنم ببینم چی میگه... 5 دقیقه دیگه برمیگردم ! ***

*** 5 دقیقه بعد ! ***

*** آره چاقال ! هر وقت سیبیلات اینقده بلند شد که برن تو دهنت برگرد بیا ببین میتونی اینجا نفس بکشی یا نه ! چی ؟! رفیقات ؟! اونا رو هم بردار بیار ! اصلا بار کامیونشون کن... حالا بدو برو پیش مامانی بگو جای کبودیای روی ***ت یخ بذاره ! بدو فنچول !***

شرمنده ی همه ی دوستان ! من وقتی آدم بی وجود میبینم که خودش اینقده مرد نیست بیاد جلو، دعوا کنه، بعدش هم بره پی کارش خیلی شاکی میشم ! معلوم نیست مردونگی اینا رو باید ببینیم یا مردونگی رفقاشون رو ! خلاصه، شرمنده به خاطر خراب شدن بحث... همونطور که داشتم میگفتم TechnoPhile یکی از امراض دوران جدید (دوران ما) هستش که یکی از عوامل شکل دهنده ی اصلیش پول و پله ی زیاد و زندگی بی هدف و شناخت هستش...

حالا که درس دینی و روانشناسیمون تموم شد برمیگردیم به Cloud !

میخواستیم در مورد مشکل کنسولها صحبت کنیم... تکنوفیلها بازه ی گسترده ایی از خریداران کنسولها رو تشکیل میدن ولی جالبه بدونین که این افراد وابستگی بیشتری به PCشون دارن تا کنسولشون ! چرا ؟ برای اینکه کنسول در سال اول عرضه ش یه سخت افزار محاسباتی قوی داره و بازیهاش از لحاظ فنی و گرافیکی میتونن با بازیهای PC رقابت کنن... بعد از یک سال این سخت افزار هر چقدر هم که قوی باشه شروع به قدیمی شدن میکنه و اینطور میشه که میبینین بازیهایی که در سال 2001 برای PS2 عرضه میشدن از لحاظ گرافیکی خیلی خفن تر از بازیهای PC بودن ولی وقتی 4 سال جلو میاین و اونوقت میخواین تفاوت بازیهای PS2 و PC رو بسنجین، از ضعیف بودن گرافیک PS2 در برابر PC شگفت زده میشین !

پس هر دو سیستم یه ضعف بزرگ دارن : Up To Date نگه داشتن یک PC هزینه بر هستش و در طرف دیگر کنسولهای بازی با اینکه هزینه ی خرید اولیه دارن، در طول زمان قدرت گرافیکی شون رو به نقصان میره...

شرکتهای کنسول سازی میتونن تا حدی این مشکل رو برطرف کنن ولی این مشکل با ساختارهای کنسول امروزی هیچوقت برطرف نمیشه... وقتیکه XBOX عرضه شده بود، مایکروسافت اینقده چرت و پرت اضافی (Peripheral) براش عرضه کرد که منتقدین شاکی شدن و گفتن که "اصلا چرا مایکروسافت به XBOXش یه PC مخصوص بازی نمیگه ؟ این دستگاه هیچکدوم از مشخصات کنسولها رو نداره ! نه CPUش مخصوص بازی هستش و هم اینکه اینقده چیزهای جدید برای چسبوندن بهش ارائه شده که خیلی شبیه یه PC کردتش !" از طرفی هم PS3 ساختاری داره که میتونین درست مثل یک PC بر روش سیستم عامل نصب کنین. سیستم عامل Yellow Dog لینوکس به همین خاطر معروف شد.

از منظری دیگه هم سونی با ارائه ی CPU ی قدرتمند و برداری به نام Cell بر روی PS3 سعی کرد مشکل "ضعیف شدن کنسول در طول زمان" رو حل کنه ولی...

Cell یه CPU هشت هسته ایی بود که 7 تا از SPU هاش (Synergistic Processing Unit) قابلیت محاسبه داشتن و SPU آخرش بعنوان زاپاس کنار گذاشته شده بود. این CPU برخلاف اکثر CPU های دوران ما (حتی CPU های امروزی) یک CPU برداری (Vector Processor) بودش که بر اساس معماری Power شرکت IBM کار میکرد.

برای اطلاعات بیشترتون بگم که CPU های برداری میتونین پردازش رو بر روی آرایه ایی از اطلاعات اعمال کنن در حالیکه اغلب CPU های دیگر اسکالر (Scalar) هستن و پردازش رو در یک آن میتونن فقط بر روی دو داده (یا یک داده) اعمال کنن... CPU های برداری خوراک محاسبات اعشاری (مثل کارهای گرافیکی) هستن و قدرت بسیار بالایی دارن...

Cell CPU & Microprocessor

Cell در میان دو انگشت که به وضوح میشه 8 تا SPUش رو با رنگهای سبز نیلی تشخیص داد.

سونی CPUیی برای کنسولش ارائه داد که امیدوار بود تا چندین سال جواب تکنوفیلها رو بکمک قابلیت محاسباتی خفنش بده... ولی یه مشکلی بودش : ساختار کار با این CPU آنقدر پیچیده و سخت هستش که بازیهایی که در سال اول برای PS3 عرضه شدن هیچکدومشون نتونسته بودن از قابلیتهای بسیار Cell کمک بگیرن ! در واقع برنامه نویسها به زمان زیادی برای همسان شدن با SDK مربوط به PS3 نیاز داشتن و همین باعث شد که درک و پیاده سازی درست و حسابی این CPU هم نه تنها زمان ببره، بلکه با گذشت 3 سال از عرضه ی PS3، هنوز هم تمامی قابلیتهای Cell به چالش کشیده نشدن... برای درک عظمت Cell میشه به این موضوع اشاره کرد که بعد از چندین سال از عرضه ش، تازه CPU های بیش از دو هسته ایی Intel و AMD دارن برای PC ها مد میشن !

خب ! اینایی که گفتم خوب بودش ! پس مشکل چیه ؟

مشکل اینه که یوزرها این وسط قربانی شدن ! یوزرهایی که گول تبلیغات عظیم سونی در مورد قدرت محاسباتی Cell رو خورده بودن، حداقل یکسال و نیم باید صبر میکردن تا بتونن قدرت بالای محاسباتی این کنسول رو در بازیهاشون لمس کنن...

پس در هر دو مورد PC و کنسول به این نتیجه رسیدیم که داریم وقت و هزینه رو هدر میدیم... حالا میرسیم به جایی که Cloud Computing این مشکل رو حل میکنه...

میدونم که اطلاعات به درد نخور زیادی رو مجبور بودین از اول مقاله تا بحال بخونین... اطلاعاتی که بعضیشون هیچ ربطی به Cloud Computing نداشتن و حتی اگر گفته هم نمیشدن، ضرری وارد نمیکردن... ولی این شیوه و روش من برای ارائه ی کامل یه مطلب هستش، به نظر من این اطلاعات "به درد نخور اضافی" نه تنها به درد بخور هستن بلکه به شما یه دید فراتر از موضوعی که دارین درباره ش میخونین میده...

خیلی مهمه این رو درک کنین که در IT تمامی موضوعات در نهایت به هم مرتبط هستند و اگر بتونین ارتباط بین اونها رو کشف کنین (هر چند اگر برخیشون به نظر به درد نخور بیان) به شما درکی میده که اونوقت میتونین در هر موضوعی ازش استفاده کنین.

Penny Arcade Cloud Computing Comic

یکی از کامیکهای Penny Arcade که به موضوع عدم شناخت افراد با Cloud Computing میپردازه.

حالا که میخوام به Cloud بپردازم، قبلش بهتون میگم که قراره چطور باهاش آشنا شین... دیدین ننه باباهای بی مسئولیت وقتی میخوان به بچه شون شنا یاد بدن، بدون هیچ آشنایی قبلی یه دفعه بچه ی ننه مرده رو برمیدارن مثل گونی سیب زمینی پرت میکنن وسط استخر ؟!

اینجا هم من میخوام بدون هیچ توضیح اولیه ایی شما رو پرت کنم وسط استخر... هنوز به خودتون نیومدین میبینین که دارین در مورد Cloudیی میخونین، که هنوز یه توضیح درست براش ارائه نشده ! البته ناراحت نباشین ! توضیح هم به موقعش میرسه ! شروع میکنیم :

در طول مقاله به این نتیجه رسیدیم که تلاش برای اول موندن در داشتن یه سخت افزار محاسباتی خفن (مثل GPU) نتیجه ایی جز ضرر دیدن نداره... یه شرکت مایه دار به نام OnLive در آمریکا متوجه این موضوع شد و نشست فکر کرد.

این شرکت گفت که : " اگر من بتونم بازی که یوزر میخواد انجام بده رو در شرکت خودم و به کمک سرورهای پر قدرتم Render کنم و بعدش تصویر رندر شده رو برای یوزر بفرستم، تنها چیزی که یوزر بهش نیاز داره یه مانیتور با یه کیبرد و موس خواهد بود ! "

صبر کن بینم ! چی شد ؟!

" یعنی تو داری میگی میشه یه بازی مثل Crysis با اون گرافیک خفن رو فقط با داشتن یه مانیتور، یه کیبرد، یه ماوس و صد البته یه ارتباط اینترنت سرعت بالا با بالاترین جزئیات گرافیکی انجام داد ؟! "

آره ! من دارم همین رو میگم !

ببینین ! بازیهای خفن با نیاز به محاسبات گرافیکی و غیر گرافیکی بالا، ما رو مجبور میکردن که در خونه ی خودمون و بر روی کامپیوتر شخصی خودمون یه عالمه سخت افزار گرون قیمت نصب کنیم... چرا ؟! تا این سیستم بتونه صحنه های پر جزئیات بازی رو در آن Render کنه و به ما نمایش بده... بدین حالت که اگر من ماوس رو یه کم حرکت بدم، نشونه ی اسلحه م توی بازی هم به همون سرعت حرکت داده بشه...

بازیهای کامپیوتری یه تفاوت بنیادی با انیمیشنهای از پیش رندر شده (مثل Toy Story 3) دارن و اون هم اینه که بازیهای کامپیوتری به صورت Real-Time باید رندر بشن و نه Pre-Rendered... این نیاز به رندر آنی، نیاز دیگری به نام سخت افزار خفن رو ایجاد میکنه تا این سخت افزار بتونه به کمک قدرت بالای محاسباتش هر صحنه ی بازی رو سریعا به ما نشون بده.

شرکت OnLive اومده و امکان انجام این محاسبات رو از خونه ی شما، به یکی از شعبه هاش منتقل کرده... در این شعبه ها محاسبات خفن گرافیکی و غیرگرافیکی انجام میشن تا صحنه ی مورد نظر شما رو رندر کنن... سپس این تصویر رندر شده مثل فیلمی که روی اینترنت Stream میکنین، بر روی مانیتور یا تلویزیون شما نمایش داده میشه !

این یعنی فوق العاده !

اسکرین شاتهای Crysis بر روی Onlive

همونطور که در تصویر میبینین، بازی Crysis با تنظیمات گرافیکی Medium از طریق OnLive در حال اجرا هستش.

باید توی موضوع ریزتر بشیم :

ببینین... یه بازی با رزولوشن 720p یا همون (720 * 1280) در هر تصویرش تقریبا 1 مگاپیکسل حضور دارن (اصلش 0.92 مگاپیکسل هستش) و اگر هر کدوم از این پیکسلها بخوان با ساختار رنگی 32 بیتی نمایش داده بشن، اونوقت طبق محاسبات من مانیتور یا تلویزیون شما در هر ثانیه باید به صورت خام 3.68 مگابایت داده رو برای نشون دادن پردازش کنه. پهنای باند 3.68 مگابایت بر ثانیه برابر یه اینترنت 30 مگابیت در ثانیه هستش و شما خودتون میدونین که چنین اینترنتی در ایران قیمتش چقدره...

تا جایی که من میدونم، دانشگاه ما سرعت 50 مگابیت در ثانیه رو با قیمت تقریبی ماهیانه ی 50 میلیون تومان در ایران اجاره میکرد !

OnLive اومد و ادعا کرد که " اگر سرعت اینترنتتون تقریبا 5 مگابیت در ثانیه هستش (یعنی 0.625 مگابایت در ثانیه) اونوقت ما میتونیم سرویس OnLive رو براتون اجرا کنیم... و این کمتر از یه معجزه نبودش !

چرا معجزه ؟! برای درک این موضوع باید باز هم در ساخت و کار OnLive ریزتر بشیم :

برای استفاده از Onlive در ساده ترین حالت، تنها سخت افزاری که شما لازم دارین یه لپ تاپ یا یه کامپیوتر بسیار ارزان قیمت (بدون قدرت محاسباتی بالا... حتی کارت گرافیکش میتونه OnBoard هم باشه !) بهمراه یه اینترنت پرسرعت (نه پرسرعت 128 کیلوبیتی خز مخابرات ما ! یه اینترنت 5 مگابیتی !) هستش.

1. به کمک اینترنت به OnLive وصل میشین.

2. بازی مورد نظرتون رو انتخاب میکنین.

3. بازی بر روی سرورهای OnLive اجرا و رندر میشه (بازی درون ابر Onlive اجرا میشه)

4. شما با کلیک کردن ماوس میخواین یه شلیک انجام بدین.

5. فرمان ارسالی شما به کمک اینترنت به ابر Onlive ارسال میشه.

6. ابر Onlive شروع به اعمال فرمان شما در بازی میکنه و سپس نتیجه ی نهایی در بازی رو به عنوان یه تصویر رندر شده از طریق اینترنت به شما ارسال میکنه.

7. تنها چیزی که شما میفهمین اینه که یه شلیک کردین و این شلیک در مانیتور به شما نمایش داده میشه درست مثل اینکه کامپیوتر خودتون داره بازی رو اجرا میکنه !

میدونین موضوع کی جالبتر میشه ؟! وقتیکه شما میتونین به کمک گوشی موبایلتون قویترین بازیها از نظر پردازشی (که حتی سیستمهای خانگی خفن هم نمیتونن کامل رندرشون کنن !) رو بازی کنین ! اونم با بالاترین کیفیت !

OnLive Platforms

همونطور که میبینین OnLive با یک PC ، MAC و یا یه تلویزیون و Adapter مخصوصش قابل اجرا هستش.

باز هم ریزتر میشیم تا بفهمیم که تکنولوژی ابر داره چه معجزه ی خفنی میکنه !

برای اینکه تصویر رندر شده بتونه به شما منتقل بشه باید به کمک یه Encoding انکود بشه و برای شما ارسال بشه. دو مسئله ی خیلی مهم در این انتقال باید مورد توجه قرار بگیرن :

1. Latency یا سرعت ارتباط

2. Video Compression و یا میزان فشردگی تصویر ارسالی

سرعت ارتباط غالبا با پهنای باند تفاوت داره... فکر کنین که یه اینترنت 50 مگابیت دارین (این پهنای باندتون هستش) و میخواین یه دانلود رو شروع کنین... وقتیکه روی فایل مورد نظرتون کلیک میکنین، به جای اینکه دانلود سریع شروع بشه، میبینین که این عمل 4 ثانیه طول میکشه، بعد از 4 ثانیه دانلودتون با سرعت بالای 50 مگابیت شروع میشه... به این تاخیر در ارتباط Latency میگن که خیلی وقتها بسیار مهمتر از پهنای باند هستش بخصوص وقتیکه Upload هم به اندازه ی Download مهم هستش.

Video Compression به میزان فشردگی تصویر ارسالی به شما گفته میشه. اگر قرار باشه که تصویر ارسالی به شما اصلا کمپرس نشه اونوقت حتی اینترنت 5 مگابیت بر ثانیه ی آمریکایی ها هم کامل نخواهد بود... چرا که هدف اینه که تصویری بهمراه صدایی با کیفیت ولی با حجمی کمتر از 5 مگابیت در هر ثانیه به یوزر ارسال کنیم.

Encoding به متدی گفته میشه که برای فشرده کردن تصویر و صدای بازی رندر شده ازش استفاده میکنن... چیز عجیب غریبی نیست و مطمئنا شما باهاش آشنا هستین... MP3 که از دوران طفولیت شنیدین یه نوع Encoding هستش همونطوری که MPEG 1 و MPEG 2 هم Encoding های دیگر با مشخصات خاص خودشون هستند.

مثلا MPEG 2 برای فیلمای DVD استفاده میشه و MPEG 4 و زیرمجموعه هاش برای فیلمهای HD بر روی Blu-Ray مورد استفاده قرار میگیره (یاد HD-DVD بخیر !)

ابر محاسباتی OnLive باید درخواستها رو از یوزرها بگیره و به منابع درونیش اختصاص بده. این منابع وظیفه ی انجام محاسبات رو بر عهده دارن... هر وقت این محاسبات (رندر، تنظیم صدا و غیره) تموم شد، نتیجه ی نهایی به عنوان یه فایل تصویری به یوزر ارسال میشه. ابر باید این محاسبات رو کمتر از 80 میلی ثانیه (یعنی Latency ارتباط باید حداکثر 80 میلی ثانیه باشه) انجام بده وگرنه...

به نظرتون اگر ابر محاسباتی OnLive نتونه این محاسبات مهم و عظیم رو در کمتر از 80 میلی ثانیه انجام بده، چی میشه ؟! در اینصورت مغز شما میتونه این Latency بالا رو بعنوان "پایین اومدن سرعت اجرای بازی" و چیزی که بازیبازای حرفه ایی بهش Lag میگن شناسایی کنه...

هر وقت که سرعت پردازش تصویری کندتر از سرعت پردازش تصویر بر روی چشمان ما و تحلیلش بر روی مغز ما باشه، اصطلاح Lag زدن بازی مورد استفاده قرار میگیره و به نظر میاد که بازی داره گیر میکنه...

به همین خاطر (اهمیت سرعت محاسبات در ابر) شرکت OnLive مجبوره که از یه Encoding درست و حسابی برای انتقال تصویرش کمک بگیره... در برهه ی اول، اولین چیزی که به ذهن خودم رسید انکودینگ H.264 بودش (یکی از مشتقات MPEG 4) ولی متوجه مشکلی شدم.

تا حالا این فیلمهای درپیت 3GP رو روی گوشیتون اجرا کردین ؟! دیدین در صحنه هایی که حرکت زیاد هستش (اجسام زیاد اینور اونور میرن) کیفیت فیلم به گند کشیده میشه ؟ بعضی وقتا اینقده تصویر به هم میریزه که اصلا نمیشه گفت چی داره به نمایش در میاد ؟!

این نوعی از انکودینگ هستش که حالت پیشرفته ترش در MPEG 4 مورد استفاده قرار میگیره و طرز کارش به صورت ساده اینطور هست :

یک فیلم از تعدادی عکس تشکیل شده که پشت سر هم نمایش داده میشن. هر چقدر این فیلم بخواد با کیفیت تر بشه، عکسهایی که تشکیلش میدن باید کیفیت بالاتری داشته باشن و بدین ترتیب میبینیم که حجم فیلمهای با کیفیت تر بالاتر از حجم فیلمهای بی کیفیت هستش.

انکودینگ 3GP و یا H.264 دارای این ساختار هستن که درشون تلاش میشه با کمترین تغییر در تصویر فعلی، تصویر جدید رو بسازن... این مثال رو در نظر بگیرین : دارین یه سریال مزخرف ایرانی ماه رمضونی میبینین... همه تون با سریالهای ایرانی آشنا هستین : یه یارو یا نیم ساعت زر مفت میزنه یا اینکه یه آبجی شیلنگ رو باز کرده داره اشک میریزه و حرف مفت میزنه !

در این تصاویر دوربین حرکت نمیکنه و بدین ترتیب تصویر پشت زنه ساکن هستش پس نتیجه میگیریم که نیازی نیست در طول فیلم، عکسهایی که این قسمت فیلم رو تشکیل میدن همگی تصویر پشت سر زن رو داشته باشن و بدین ترتیب یه تصویر از پشت سر زن برمیرداریم و اونایی که اضافه هستن دیگه به دردمون نمیخوره... صورت زنه چی میشه ؟! انکودینگ سعی میکنه به کمک فریمهای بعدی و قبلی تصویر حاضر در صفحه، حدس بزنه که کجاها تغییر میکن... مکانهایی که قراره تغییر کنن رو جدید میکنه (مثل اشک و لبها) و مکانهای قدیمی رو بهشون دست نمیزنه...

این تلاش برای حدس زدن و دوباره سازی تصویر موجب میشه که در تصاویری که حرکت توشون زیاد هستش و با انکودینگهای با فشردگی زیاد فشرده شدن، یه نوعی در هم ریختگی و بدریخت شدن تصویر به وجود بیاد.

تفاوت انکودینگهای MPEG 4 و MPEG 2

تصویر سمت چپ با انکودیگ MPEG 2 و تصویر سمت راست با انکودینگ MPEG 4 انکود شدن.

دو تصویر از لحاظ حجمی تقریبا یکسان هستند.

اینکه OnLive بتونه یه انکودینگ درست ارائه بده که نه تنها Compression درست و حسابی داشته باشه بلکه با Latency های مختلف هم بتونه به درستی سرویس بده یه چالش بسیار بزرگ برای شرکتش بود. اونا نمیتونستن از ساختار معمول MPEG 4 (همونی که از فریمهای آینده و گذشته برای درست کردن تصویر فعلی استفاده میکنیم) بهره ببرن چرا که برای استفاده از فریمهای آینده، ابر محاسباتی باید اطلاعات فعلی رو Buffer میکرد و این Buffering موجب بالا رفتن Latency ارتباط میشد (بازی با صددرصد Lag مواجه میشد).

این شرکت مجبور شد از نوع خاصی انکودینگ H.264 استفاده کنه که درش یک تصویر به 8 قطعه Stream جدا و غیرمرتبط تقسیم میشه، هر کدوم از این Stream ها توسط یک Encoder جدا انکود میشن و در نهایت به یوزر عرضه میشن، و مهمتر از همه اینه که بدونیم تمامی این اعمال در ابر باید کمتر از 80 میلی ثانیه رخ بدن...

چرا اینو گفتم ؟ برای اینکه میخوام بدونین که در محاسبات درون ابر و بصورت Real-Time و On-Demand شوخی نداریم... Cloud Computing های مختص محاسبات یه Microsoft Terminal Server نیستن که هر آبچاقالی که یاد گرفته Component ویندوز نصب کنه و Service هاش رو خاموش روشن کنه، بتونه پیاده سازیش کنه (منظورم با کسی نبودشا ! میخواستم روی موضوع تاکید کنم !)

قبل از اینکه این قسمت مقاله هم تموم بشه بذارین به یه موضوع مهم هم اشاره کنم : همونطور که در عکسهای بازی Crysis در بالاتر هم دیدین من اشاره کردم که بازی در حالت Medium اجرا شده... در واقع هنوز OnLive نمیتونه یه بازی بسیار پرجزئیات همچون Crysis Warhead رو به کمک ابرمحاسباتیش به طور کامل و در جزئیات Ultra (نه Medium) نشون بده... مهمترین مشکلی که برای OnLive در اینحالت پیش میاد بالا رفتن Latency هستش... همونطور که یادتونه گفتم 80 میلی ثانیه بیشترین مقداری هستش که میشه به عنوان مجاز برای Latency نام برد ولی جالبه بدونین که 80 میلی ثانیه برای برخی بازیهایی که نیاز به عکس العمل بسیار سریع دارن (مثل Call of Duty 4 که Latency میانگینش 66 میلی ثانیه هستش) هم زیاد هستش و به گفته ی مدیرعامل OnLive، شرکتشون در حال تلاش برای پایین آوردن این مقدار هستش.

منوی اصلی OnLive

منوی اصلی OnLive قبل از شروع بازی مورد نظرتون.

همونطور که بعدا خواهم گفت یک Cloud از عناصر مجزا و در عین حال کاملا مرتبط با هم تشکیل شده و هدف اصلیش (که موارد متعددی هستن) غالبا بر روی ارائه سرویسش (حالا هر چی) با سرعت و کارآمدی بالا هستش و هر کسی بدون مهندسی درست و حسابی ساختاری که میخواد ارائه بده و یا استفاده کنه، نمیتونه از ابر بهره ببره و یا اینکه پیاده سازیش کنه.

حالا که تا اینجا همراه من اومدین و یه برداشت ذهنی خوب ولی هر چند ناکامل از Cloud پیدا کردین بذارین یه تفال به Morpheus از تریلوژی Matrix بزنیم و ببینیم که شما دوست دارین این سفر رو با ما ادامه بدین یا نه :

I imagine that right now, you're feeling a bit like Alice… Tumbling down the rabbit hole… You take the blue pill, the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill, you stay in Wonderland, and I show you how deep the rabbit hole goes

خب... خسته شدین ؟ میخواین قرص آبی رو بردارین و بخورین ؟ انتخاب با خودتونه...

ولی اگه قرص قرمز رو برمیدارین، منتظر آشنا شدن با انواع مفاهیم تکنیکی و غیرتکنیکی Cloud Computing باشین... این کامیکی که در پایین میبینیم، درک فعلی ما از Cloud Computing هستش :

Cloud Processes Comic

حتی هنوز هم یه توضیح واقعا کامل برای Cloud ارائه داده نشده و اونور آبیها هم باهاش مشکلات شناختی بسیاری پیدا کرده ن !

وقتیکه جلوتر بریم تمام سعیمون رو میکنیم که با تمامی عناصر تشکیل دهنده ی Cloud و همچنین انواع سرویسهایی که شرکتهای مختلف به عنوان پلتفرم Cloudشون ارائه میدن، آشنا بشیم...

تا اونموقع، همراه من باشین !

 

ادامه دارد...

 

 

دانلود مقاله ی ناکامل بالا (!) بصورت نسخه ی PDF :محاسبات ابری یا Cloud Computing چیست ؟!

 

 

نظرات  

 
0 #31 rayovac hearing aid ۱۳۹۴-۰۶-۱۹ ۱۸:۲۱
As Bluetooth technology progresses, you are most definitely going to see hearing aid batteries and
other hearing aid devices become more effective and compact.
Any request for a due process hearing request from a parent to a local
educational agency (LEA) or a school district requires the school district to provide you with prior written notice,
regarding the subject matter of your request for
a hearing. And check out the venting options available
which can help to reduce blockage in the ear canal
and provide for less chance of feedback and whistling problems.
نقل قول
 
 
0 #30 a ۱۳۹۲-۱۲-۰۳ ۲۱:۰۶
ممنون میشم ادامه بدین
نقل قول
 
 
+1 #29 samaneh ۱۳۹۲-۰۹-۰۸ ۲۱:۲۴
عالیه بود.از خوندنش لذت بردم.خیلی مشتاقم منابع این مقاله را مطالعه کنم اگر امکانش باشه...و منتظر قسمت سوم هستم :-)
نقل قول
 
 
0 #28 PsychoGeek ۱۳۹۲-۰۵-۰۹ ۱۱:۰۹
با سپاس فراوان....
پیروز و پایدار باشید
نقل قول
 
 
+2 #27 امیر ۱۳۹۱-۰۹-۱۱ ۰۰:۲۶
سلام ... ارزو دارم که خوب باشین .
این شیوه ارائه در عین سادگی و عامیانه بودن (البته برا کسانی که اوون اصطلاحات فرنگی براشون مایه دردسر نیست ) کمی تاثبر گذاره و یکی از چندین راه برای جذب مخاطب است .
مقاله خوب و جالبی بود البته تا اینجای راه بدور از موضوع اصلی ...نه انقدر که نتوان تصور کرد که چیست و هاله ی از ابهام باشد ولی خالی از آن هم نیست .
همچنان دست به آسمان برده ایم و محتاجیم به دعا که فرجی شود و ادامه بحث از سر گرفته و ارزو کنیم از پروردگارتان که مورد رحمت قرارتان دهد ، همواره شاد باشید .
نقل قول
 
 
0 #26 احسان ۱۳۹۱-۰۸-۱۰ ۰۳:۱۶
دوست عزیز این بحث رو تموم کنین نه :)
ما خو جووونمون به لبمون اومد از انتظار :sad:
نقل قول
 
 
0 #25 k ۱۳۹۱-۰۵-۱۱ ۲۲:۲۰
فوق العاده واسه این مفاله واقعا کمه...
منتظر قسمت سوم هستما..........
fabilous
نقل قول
 
 
0 #24 parisa ۱۳۹۰-۱۰-۱۷ ۲۳:۲۲
سلام.مقاله تون رو خوندم.من دانشجوی ارشد نرم افزار هستم.میخواستم پایان نامه ام رو در حیطه محاسبات ابری و یک ایده راجب این مسئله انجام بدم.شدیدا احتیاج به کمک دارم اگه میتونید کمکم کنید ممنون میشم.
نقل قول
 
 
0 #23 reza rad ۱۳۹۰-۰۶-۱۵ ۱۷:۱۹
chera linke PDF nadare ?

ba tashakor
نقل قول
 
 
0 #22 پوریا ۱۳۹۰-۰۵-۱۶ ۰۱:۳۴
سلام
همین الان مقاله شما رو در مورد cloud computing خوندم. خیلی خیلی عالی بود. جدا یکی از بهترین متن هایی بود که تا حالا خوندم. کاملا قابل فهم و با نثر عامیانه.
انقدر از این مقاله ها و حتی کتاب ها بدم میاد. مگه ما با هم اینجوری حرف میزنیم که تو کتابامون اینجوری می نویسیم.
به هر حال بگذریم. خیلی حیف (و ضدحال :sad: ) بود. برای چی ادامش ندادین. تازه رسیده بود به cloud computing. مقاله های انگلیسی همش چرت و پرت می نویسه. تا اینجاهم که شما نوشتید همش در مورد بازیه که client side هستش. خوب آدم که میخواد بره سرور کرایه کنه دیگه مجازی یا واقعی بودنش چه فرقی داره؟ مقاله های فارسی هم ترجمه ی هموناس. این خیلی عالی بود.
نقل قول
 

ارسال نظر


کد امنیتی
بروزرسانی

مقالات سر راهی !

همه چیز درباره ی EFS یا Encrypting File System

تا حالا شده از اون فایلا داشته باشین که نمیخواستین کسی بتونه بازش کنه ؟ مثلا از اون فایلایی که روی Flash RAM تون هست و همه جا با خودتون میبرینش ولی نمیخواین سیستمی غیر از سیستم خودتون بتونه باز و اجراش کنه ؟ یا اینکه یه شبکه دارین و شک دارین که یکی داره توش اطلاعاتی که نباید بخونه رو میخونه و شما میخواین فایله رو طوری رمز کنین تا خودش که هیچی، باباش هم نتونه فایله رو باز کنه !

دوران ویندوزهای 95 و 98 وقتی بود که اگه نمیخواستی فایلات رو Hidden کنی باید با بدبختی سراغ نرم افزارهای قفل گذاری کوفتی میرفتی ! هیچوقت یادم نمیره که یه بار یکی از عزیزترین فایلهام رو بدون اینکه ازش Backup بگیرم بهش سپردم و... و... و...

همه چیز درباره ی EFS یا Encrypting File System

تبلیغات تصویری

آگهی
آگهی