عنوان پروژه: dynamic resource allocation in serverless edge computing using multi agent deep reinforcement learning using DVFS
خلاصه مسئله: به این صورت هستش که یک سیستم پردازشی با منابع محدود (cpu) در اختیار داریم که تسک ها وارد سه صف میشن و الگوریتم باید تصمیم بگیره به کدوم صف تخصیص منابع بده و کدوم صف رو خاموش کنه. agent این الگوریتم باید به سه سوال پاسخ بده: ۱-از بین ۳ instance فرض شده در این پیاده سازی کدام instance روشن و کدام خاموش شود ۲ـ در صورت روشن ماندن چند عدد cpu تخصیص یابد ۳- هر سی پی یو با چه فرکانسی کار کند.
توضیح:
در محیط serverless edge computing درخواست های مختلفی از سمت دستگاه ها و برنامه های محتلف برای سرور ارسال می شود تا سرور انها را پردازش کرده و در زمان مناسب پاسخ دهد. هر سرور دارای منابع مختلفی مانند cpu ram و غیره است. در این پیاده سازی فرض شده که مدیریت منابع فقط در رابطه با cpu انجام شود و بقیه منابع در نظر گرفته نمیشود. پیاده سازی این پروژه روی یک سرور فرض شده است و فرض شده که سرور سه instance دارد. Instance به ماشین مجازی گفته میشود که قدرت خود را از سرور میگیرد.
نرخ ورود تسک ها به سیستم توزیع پواسون است.
به ازای هر instance یک صف وجود دارد. در هر صف تسک های مربوط به ان instance در آن قرار میگرد تا به نوبت اجرا شوند. در هر صف تسک های یک جنس وارد آن می شود. به طور مثال تسک های صف شماره یک تسک هایی با workload بالا و deadline بالا هستند.
در این سیستم ۶ cpu در نظر گرفته شود. همه cpuها همگن و دارای یک قدرت پردازشی است. الگوریتم باید تصمیم بگیرد در هر بازه زمانی چ instance هایی روشن باشند، به هر instance روشن چند cpu تخصیص یابد و هر cpu با چه فرکانسی کار کند.
در این سیستم از نظر زمانی، دو موضوع epoch و time slot مطرح است. مجموع چند time slot یک epoch در نظر گرفته میشود. الگورتیم باید فقط چند بار در هر epoch ها اجرا شود تا خط مشی سیستم را تا epoch بعدی مشخص. کند. به عنوان مثال سیستم دارای ۱۰۰ تایم اسلات است. الگوریتم در تایم اسلات های ۰-۲۵-۵۰-۷۵ اجرا میشود و ان سه موضوع اصلی { چه instanceهایی روشن، هر instance چند cpu تخصیص پیدا کند، هر cpu با چه فرکانسی کار کند) تصمیم گیری می شود.
چند نکته:
Action ما در الگوریتم DRL درواقع تصمیم برای خاموش یا روشن بودن هر instance است. به علاوه اینکه الگوریتم تصمیم بگیرد چند سی پی یو به هر instance روشن تخصیص دهد. به علاوه اینکه هر instance با چه فرکانس کاری کار کند. پس action این الگوریتم سه کار باید انجام شود.
در این الگوریتم، هر state نمایانگر وضعیت حال سیستم است. به طور مثال چه instanceهایی روشن است، هرکدام چند سی پی یو در اختیار دارند، هر سیپییو با چه فرکانس کاری مشغول به کار است و …
معیارهای اصلی reward: زمان پاسخ کمتر، هزینه انرژی، cold start کمتر
بین exploration and exploitation یک تناسب درست و مشخص را در نظر گرفته شود
جزییات پیاده سازی
باید به ازای هر صف یک penalty cost درنظر گرفته بشه. هر مقداری که براشون به دست میاد باید بر اساس درصد violation باشه. مثلا q1 به ازای هر ثانیه که ددلاین رعایت نمیشه violation خواهد داشت. فرمولش: response time -deadline) / deadline *100). بعد یه تسکی مثلا ۲۰ درصد violation داشته penalty cost این صف هم ۱ سنت جریمه به ازای هر درصد violation. این دوتا ضرب میکنی اون هزینه اییه که جریمه باید بدی
هزینه فرکانس کاری cpuها رو هم باید درنظر گرفت. مثلا به ازای هر time slot که یک سی پی یو روشن است مقداری پول میگیرم با هر فرکانس کاری که داشته باشیم
هدف اینه که هزینه ها و جریمه کاهش پیدا کنه
چیزهایی که باید ریپورت شه: هزینه violation به اضای هر q و هزینه کلی، هزینه مصرف انرژی کل سیستم، هزینه violation + هزینه انرژی، average and max and min response time for each q، average response time for system، تعداد cold startها
این فرمول کلی سیستم: minimize = alfa(violation) + 1-alpha (energy cost)
همه cpuها نباید حتما روشن باشن. یه رندوم بزن چندتا روشن باشه چندتا خاموش باشه