simulation931_FinPrj.pdf

‫به نام هستیبخش مهربان‬
‫پروژه نهایی درس شبیهسازی کامپیوتری‬
‫دانشکده کامپیوتر‪ ،‬دانشگاه صنعتی شریف – ترم اول ‪39-39‬‬
‫موعد تحویل‪39/44/49 :‬‬
‫در این پروژه شما باید سیستمی که در ادامه معرفی خواهد شد را به صورت رخداد گسسته شبیهسازی کنید و خروجیهای مورد‬
‫نظر برای ارزیابی سیستم را بدست آورید‪.‬‬
‫معرفی کلی سیستم‬
‫سیستم مورد نظر یک محیط پردازش کار است که تعدادی سرور پردازشی آماده به خدمت در آن وجود دارد‪ .‬هر سرور تعداد‬
‫مشخصی هسته پردازشی دارد که با سرعت مشخصی کار میکنند‪ .‬در این مح یط کارها که ممکن است از انواع مختلفی باشند با‬
‫نرخ مشخصی از بیرون وارد سیستم میشوند‪ .‬هر کار ورودی ابتدا وارد یک سرور زمانبند میشود‪ ،‬این سرور مشخص میکند که‬
‫هر کار برای دریافت سرویس به کدام سرور پردازشی فرستاده شود‪ .‬کارها دارای یک ضرب االجل‪ 1‬هستند که حداکثر زمان انتظار‬
‫آنها تا شروع دریافت سرویس را مشخص میکند‪ .‬اگر ضرب االجل کاری فرا برسد ولی کار هنوز در صف باشد‪ ،‬کار صف را ترک‬
‫خواهد کرد‪ .‬هیچ کدام از صفهای سیستم محدودیت ظرفیتی ندارند‪ .‬شکل ‪ 1‬نمونهای فرضی از چنین سیستمی را نشان میدهد‬
‫که شامل ‪ ۳‬سرور پردازشی است‪.‬‬
‫سرور پردازشی ‪1‬‬
‫ورود به سیستم‬
‫سرور زمانبند‬
‫سرور پردازشی‪۲‬‬
‫سرور پردازشی ‪۳‬‬
‫شکل ‪ 1‬نمای کلی سیستم‬
‫انواع کارها‬
‫در سیستم دو نوع کار وجود دارد‪ ،‬ما آنها را نوع ‪ 1‬و ‪ ۲‬مینامیم‪ .‬نوع کارها تنها بر اولویت آنها در صفها تأثیر دارد به این صورت‬
‫که در هر صف اولویت همیشه با کار از نوع ‪ 1‬است و در میان کارهای از یک نوع‪ ،‬اولویت بر اساس زمان ورود به سیستم مشخص‬
‫‪Deadline‬‬
‫‪1‬‬
‫پروژه نهایی درس شبیهسازی کامپیوتری‬
‫پاییز ‪۳۳‬‬
‫میشود‪ .‬توزیع ورود کلی به سیستم (شامل هر دو نوع کار) به صورت پوآسن با نرخ ‪ λ‬است که به صورت میانگین ‪ 1۱‬درصد کارها‬
‫از نوع ‪ 1‬و بقیه از نوع ‪ ۲‬هستند‪ .‬ضرب االجل یک کار ممکن است در زمان حضور در صف زمانبند‪ ،‬در حال سرویسگیری از‬
‫زمانبند و یا در زمان حضور در صف سرورهای پردازشی فرا برسد‪ .‬ضرب االجل کارها هم دارای توزیع نمایی با میانگین ‪ α‬است‪.‬‬
‫راهنمایی‪ :‬برای تولید اعداد تصادفی از توزیع نمایی از روش ‪ Inverse Transform‬استفاده کنید و توجه داشته باشید وقتی توزیع‬
‫تعداد یک رخداد در یک بازه زمانی از توزیع پوآسن با نرخ 𝛼 پیروی میکند‪ ،‬توزیع زمان بین رخدادها از نوع نمایی با میانگین‬
‫‪1‬‬
‫𝛼‬
‫است‪.‬‬
‫زمانبند‬
‫زمانبند‪ ،‬یک سرور با یک صف و یک هسته است (‪ .)M/M/1‬زمانبند همواره ‪-‬اگر کاری موجود باشد‪ -‬یک کار را از سر صف‬
‫ورودی خود بر می دارد و بر اساس اینکه طول صف کدام سرور پردازشی در حال حاضر از همه کوتاهتر است کار را به آن سرور‬
‫میفرستد‪ .‬اگر چند سرور دارای صف خالی باشند زمانبند کار را به صورت تصادفی به یکی از آنها میفرستد‪ .‬نرخ سرویسدهی در‬
‫هسته زمانبند از توزیع پوآسن با نرخ ‪ μ‬پیروی میکند‪.‬‬
‫سرورهای پردازشی‬
‫هر سرور پردازشی یک صف با چند هسته است‪ .‬در صورتی که یک کار به یک سرور پردازشی وارد شود و هسته بیکاری وجود‬
‫داشته باشد بالفاصله شروع به دریافت خدمت میکند وگرنه در صف آن سرور منتظر میماند‪ .‬هر گاه یک هسته کاری را به پایان‬
‫برساند‪ ،‬اگر کار دیگری سر صف منتظر باشد بالفاصله آن کار را بر میدارد و شروع به سرویسدهی به آن کار میکند‪ .‬هستههای‬
‫مختلف از سرورهای مختلف با سرعتهای مختلفی سرویسدهی میکنند‪ ،‬بنابراین شما باید در این مرحله برای یک کار بر اساس‬
‫اینکه بر روی کدام هسته اجرا خواهد شد زمان اجرایی را از توزیع نمایی با میانگین مشخصی تولید کنید‪.‬‬
‫ورودی‬
‫ورودی برنامه شما یک فایل است که در خط اول آن اطالعات زیر قرار دارد‪:‬‬
‫‪M, λ, α, μ‬‬
‫‪ ،M‬تعداد سرورهاست که ‪ M<100‬و ‪ λ‬نرخ ورودی کلی کارها به سیستم و ‪ α‬میانگین زمان ضرب االجل است و ‪ μ‬نرخ‬
‫سرویسدهی در زمانبند است‪ .‬در ‪-i‬امین خط پس از خط اول اطالعات زیر قرار دارد‪:‬‬
‫‪Ni, μi1, …, μij‬‬
‫که ‪ Ni‬تعداد هستههای سرور ‪-i‬ام و عددی بین ‪ 1‬تا ‪ ۵‬است و ‪ μij‬نرخ سرویسدهی هسته ‪-j‬ام از سرور ‪-i‬ام است‪.‬‬
‫خروجی‬
‫برای تولید خروجیها‪ ،‬شبیهسازی شما باید شامل ‪ ۲‬فاز باشد‪ .‬فاز اول که اصطالحاً به آن ‪ warm up‬میگویند به این هدف اجرا‬
‫می شود که سیستم از حالت گذرا عبور کند و به حالت پایدار خود برسد‪ .‬در طول این فاز سیستم به صورت معمول کار خواهد کرد‬
‫‪2|Page‬‬
‫پاییز ‪۳۳‬‬
‫پروژه نهایی درس شبیهسازی کامپیوتری‬
‫ولی شما نباید آمارهای مورد نیاز برای محاسبه خروجیها را جمعآوری کنید‪ ،‬در پایان این فاز همه آمارها صفر هستند ولی‬
‫تعدادی کار در صفها و هستهها حضور دارند‪ .‬پس از پایان این فاز است که جمعآوری آمار شروع میشود‪ .‬فاز اول زمانی تمام‬
‫میشود که ‪ ۵۱۱۱‬کار سیستم را ترک کرده باشند‪.‬‬
‫در مورد خروجیها شما باید شبیهسازی را تا زمان رسیدن به بازه اطمینان ‪ ۳۵‬درصد و دقت ‪ ۱۰۱۵‬ادامه دهید‪ .‬دقت به صورت‬
‫نسبت بازه اطمینان به اندازه متغیر تعریف میشود و هرگاه این مقدار در مورد هر کدام از خروجیها از ‪ ۵‬صدم کمتر شد خروجی را‬
‫گزارش کنید‪ .‬توجه داشته باشد که مقدار 𝑛 و 𝜎 به ترتیب تعداد و انحراف معیار دادههای مرحله پایدار هستند‬
‫‪Pr(|𝑋̅ − 𝑠| ≤ 𝑒) = 𝑃0‬‬
‫𝑠 ‪𝑋̅ −‬‬
‫× 𝑛√ = ̅𝑌‬
‫𝜎‬
‫‪Pr(|𝑌̅| ≤ 1.96) = 0.95‬‬
‫𝜎‪1.96‬‬
‫≤ |𝑠 ‪Pr (|𝑋̅ −‬‬
‫‪) = 0.95‬‬
‫𝑛√‬
‫𝜎‪1.96‬‬
‫= 𝑦𝑐𝑎𝑟𝑢𝑐𝑐𝐴‬
‫̅𝑋𝑛√‬
‫ممکن است در مورد یک خروجی هرگز به این دقت نرسیم و یا نیازمند زمان زیادی باشیم برای پرهیز از رخداد چنین حالتی یک‬
‫حد باال برای تعداد کارهای خارج شده در نظر بگیرید و پس از رسیدن به این حد شبیهسازی را در تمام کنید‪ .‬این مقدار را برابر‬
‫‪ ۵۱‬میلیون در نظر بگیرید‪ .‬در پایان شبیهسازی از شما انتظار میرود که مقادیر زیر را به عنوان خروجی گزارش کنید‪ .‬در مورد هر‬
‫کدام از موارد دقت را ذکر کنید‪.‬‬
‫‪ .1‬میانگین زمان صرف شده در سیستم به تفکیک کالس و کلی‬
‫‪ .۲‬میانگین زمان انتظار در صف به تفکیک کالس و کلی‬
‫‪ .۳‬میانگین تعداد ضرب االجلهای منقضی شده به تفکیک کالس و کلی‬
‫‪ .4‬میانگین طول صف هر یک از سرورهای پردازشی و زمانبند‬
‫‪ .۵‬تعداد کارهای مورد نیاز برای رسیدن تمام آمارها به دقت مورد نظر‬
‫تذکرات پایانی!‬
‫‪ ‬تمام قسمتهای پروژه را باید خودتان پیادهسازی کنید و حق استفاده از برنامههای شبیهساز را ندارید‪ .‬با هر زبان برنامه‬
‫سازی که راحت هستید میتوانید کد بزنید ولی جاوا و سی ترجیح داده میشود‪.‬‬
‫‪ ‬پروژه باید در تیمهای ‪ ۲‬نفره تحویل داده شود‪ .‬اگر در یافتن همگروهی با مشکل مواجه شدید حداکثر تا ‪ 1۵‬دی از‬
‫طریق ایمیل ‪ [email protected]‬اطالع دهید‪.‬‬
‫‪ ‬به ازای هر روز تأخیر در ارسال ‪ ۲۵‬درصد از نمره را از دست خواهید داد‪.‬‬
‫‪ ‬طراحی مناسب کد و خوانایی آن بخشی از نمره شما را تشکیل میدهد‪.‬‬
‫‪3|Page‬‬
‫پروژه نهایی درس شبیهسازی کامپیوتری‬
‫پاییز ‪۳۳‬‬
‫‪ ‬پروژه تحویل حضوری دارد و تسلط اعضای گروه بر همه بخشهای کد الزامی است‪ .‬ممکن است از شما خواسته شود در‬
‫زمان تحویل بخشی از کد را عوض کنید‪.‬‬
‫‪ ‬تا پیش از موعد‪ ،‬کدها و مستندی شامل توضیحات در مورد کدها را در قالب یک فایل فشرده‪ ،‬ضمیمه ایمیلی به آدرس‬
‫‪ [email protected]‬با عنوان>‪ prj931_<student#_1>_<student#_2‬کنید‪.‬‬
‫موفق باشید‬
‫‪4|Page‬‬