Simulation932_CA2.pdf

‫به نام هستیبخش مهربان‬
‫‪ - ۴۳۶۰۴‬شبیهسازی کامپیوتری‬
‫ترم دوم ‪4۰-4۴‬‬
‫دانشکده مهندسی کامپیوتر‬
‫پروژه شماره ‪2‬‬
‫موعد تحویل‪ 0۳ :‬تیر ‪4۴‬‬
‫در این پروژه شما باید سیستمی که در ادامه معرفی خواهد شد را به صورت رخداد گسسته شبیهسازی کنید و خروجیهای مورد‬
‫نظر برای ارزیابی سیستم را بدست آورید‪.‬‬
‫معرفی کلی سیستم‬
‫سیستم مورد نظر یک محیط پردازش کار است که یک سرور پردازشی و دو سرور پیشپردازنده در آن وجود دارد‪ .‬سرور پردازشی‬
‫یک سیستم چند هستهای است که همه هستههایش با سرعت برابر کار میکنند‪ .‬سرورهای پیشپردازنده تک هستهای هستند‪ .‬در‬
‫این محیط‪ ،‬کارها با نرخ مشخصی از بیرون وارد سیستم میشوند و ابتدا به صف یکی از دو سرور پیشپردازنده میروند‪ .‬کارها پس از‬
‫دریافت یک سرویس پیشپردازشی به سرور پردازش اصلی منتقل میشوند‪ .‬شکل ‪ 0‬نمونهای فرضی از چنین سیستمی را نشان‬
‫میدهد که شامل یک سرور پردازشی سههستهای است‪.‬‬
‫‪𝜇1‬‬
‫𝜇‬
‫‪𝜆1‬‬
‫سرور پیشپردازنده ‪0‬‬
‫𝜇‬
‫𝜇‬
‫سرور پردازشی‬
‫‪𝜇2‬‬
‫سرور پیشپردازنده ‪2‬‬
‫شکل ‪ -1‬نمای کلی سیستم‬
‫‪𝜆2‬‬
‫سرورهای پیشپردازنده‬
‫سرور پیشپردازنده ‪ 0‬یک سیستم ‪ M/M/1/K/∞/SJF‬است‪ .‬به این معنی که ظرفیت صف آن محدودی است و نظام صف آن هم‬
‫«ابتدا رسیدگی به کوتاهترین کار و به صورت غیرقبضهای‪ »0‬است‪ .‬در صورتی که صف سرور شمارهی ‪ 0‬پر باشد‪ ،‬کارهای ورودی به‬
‫آن بلوکه میشوند‪ .‬این سرور ‪ -‬اگر کاری موجود باشد ‪ -‬کاری که کوتاهترین زمان سرویس را دارد از صف ورودی خود بر میدارد و‬
‫عملیات پیشپردازشی خاصی را بر روی آن انجام میدهد و آن را به آن سرور پردازشی میفرستد‪ .‬اگر کاری با طول کوتاهتر از کاری که‬
‫اکنون در حال سرویسگیری است‪ ،‬وارد صف شود‪ ،‬منتظر خالی شدن سرور میماند‪ .‬به عبارت دیگر‪ ،‬وقتی سرویسدهی به یک کار‬
‫شروع میشود؛ آن کار تا پایان زمان سرویس خود‪ ،‬سرور را ترک نمیکند‪ .‬ظرفیت صف این سرور محدود و برابر با ‪ K=100‬است‪ .‬ورود‬
‫کارها به صف این سرور با نرخ ‪ 𝜆1 = 7‬کار در ثانیه و سرویس دهی با نرخ ‪ 𝜇1 = 6‬کار در ثانیه انجام میگیرد‪.‬‬
‫سرور پیشپردازنده ‪ 2‬کندتر است ولی طول صف آن نامحدود است‪ .‬به بیان رسمیتر‪ ،‬یک سیستم ∞‪ M/M/1/‬است‪ .‬نرخ ورود به‬
‫صف این سرور برابر با ‪ 𝜆2 = 2‬کار در ثانیه است‪ .‬این سرور ‪ -‬اگر کاری موجود باشد ‪ -‬کاری را از سر صف ورودی خود بر میدارد و‬
‫عملیات پیشپردازشی خاصی را بر روی آن انجام میدهد و آن را به سرور پردازشی میفرستد‪ .‬نرخ سرویس دهی هسته سرور پیشپردازنده‬
‫شمارهی ‪ 2‬برابر با ‪ 𝜇2 = 3‬کار در ثانیه است‪.‬‬
‫سرور پردازشی‬
‫سرور پردازشی یک سیستم ‪ M/M/c‬است که ‪ c‬بین ‪ ۴‬تا ‪ 02‬متغیر است‪ .‬در صورتی که یک کار به صف سرور پردازشی وارد شود‬
‫و سرور هستهی بیکار داشته باشد‪ ،‬بالفاصله شروع به دریافت خدمت میکند‪ .‬در غیر این صورت‪ ،‬کار در صف آن سرور منتظر میماند‪.‬‬
‫هر گاه یک هسته کاری را به پایان برساند؛ اگر کار دیگری سر صف منتظر باشد بالفاصله آن کار را بر میدارد و شروع به سرویس‬
‫دهی به آن کار میکند‪ .‬نرخ سرویس دهی هر یک از هستههای سرور پردازشی برابر با ‪ 𝜇 = 1.2‬کار در ثانیه است‪.‬‬
‫خروجی‬
‫برای تولید خروجیها‪ ،‬شبیهسازی شما باید شامل ‪ 2‬فاز باشد‪ .‬فاز اول که به آن ‪ warm up‬میگویند به این هدف اجرا میشود که‬
‫سیستم از حالت گذرا عبور کند و به حالت پایدار خود برسد‪ .‬در طول این فاز‪ ،‬سیستم به صورت معمول کار خواهد کرد ولی شما‬
‫نباید آمارهای مورد نیاز برای محاسبه خروجیها را جمعآوری کنید‪ .‬در پایان این فاز همه آمارها صفر هستند ولی تعدادی کار در‬
‫صفها و هستهها حضور دارند‪ .‬پس از پایان این فاز است که جمعآوری آمار شروع میشود‪ .‬فاز اول زمانی تمام میشود که ‪ ۰۳۳۳‬کار‬
‫سیستم را ترک کرده باشند‪.‬‬
‫‪Non-Preemptive Shortest Job First discipline‬‬
‫‪0‬‬
‫در مورد خروجیها شما باید شبیهسازی را تا زمان رسیدن به بازه اطمینان ‪ 4۰‬درصد و دقت ‪ ۳۰۳۰‬ادامه دهید‪ .‬دقت به صورت نسبت‬
‫نصف بازه اطمینان (‪ )e‬به اندازه میانگین تخمینی (̅𝑋) تعریف می شود و هرگاه این مقدار در مورد هر کدام از خروجیها از ‪ ۰‬صدم‬
‫کمتر شد خروجی را گزارش کنید‪ .‬توجه داشته باشد که مقدار 𝑛 و 𝜎 به ترتیب تعداد و انحراف معیار دادههای مرحله پایدار هستند‪.‬‬
‫‪Pr(|𝑋̅ − 𝑠| ≤ 𝑒) = 𝑃0‬‬
‫𝑠 ‪𝑋̅ −‬‬
‫× 𝑛√ = ̅𝑌‬
‫𝜎‬
‫‪Pr(|𝑌̅| ≤ 1.96) = 0.95‬‬
‫𝜎‪1.96‬‬
‫≤ |𝑠 ‪Pr (|𝑋̅ −‬‬
‫‪) = 0.95‬‬
‫𝑛√‬
‫𝜎‪1.96‬‬
‫= 𝑦𝑐𝑎𝑟𝑢𝑐𝑐𝐴‬
‫̅𝑋𝑛√‬
‫ممکن است در مورد یک خروجی هرگز به این دقت نرسیم و یا نیازمند زمان زیادی باشیم‪ .‬برای پرهیز از رخداد چنین حالتی یک‬
‫حد باال برای تعداد کارهای خارج شده در نظر بگیرید و پس از رسیدن به این حد‪ ،‬شبیهسازی را تمام کنید‪ .‬این مقدار را برابر ‪۰‬‬
‫میلیون در نظر بگیرید‪.‬‬
‫در پایان شبیهسازی از شما انتظار می رود که مقادیر زیر را به عنوان خروجی گزارش کنید‪ .‬در هر یک از موارد‪ ،‬دقت محاسبه خود را‬
‫ذکر کنید‪.‬‬
‫أ‪.‬‬
‫احتمال آن که کار ورودی به سرور پیشپردازنده ‪ 0‬بلوکه شود را محاسبه کنید ( ‪.)𝑃𝑏1‬‬
‫ب‪ .‬برای هر یک از خروجیهای زیر‪ ،‬یک نمودار بر حسب تعداد هستههای سرور پردازشی (‪ )c‬رسم کنید‪ c .‬بین ‪ ۴‬تا ‪ 02‬میتواند متغیر‬
‫باشد (محور افقی را ‪ c‬و محور عمودی را خروجی مورد نظر بگیرید)‪.‬‬
‫میکند‪2‬‬
‫( 𝑙𝑎𝑡𝑜𝑡𝑇)‪.‬‬
‫‪-‬‬
‫میانگین کل زمانی که یک کار از لحظه ورود به سیستم تا لحظه خروج از سرور پردازشی سپری‬
‫‪-‬‬
‫میانگین طول صف سرور پردازشی ( ‪)𝐿𝑄3‬‬
‫‪-‬‬
‫زمان انتظار کل سیستم که عبارت است از مدت زمانی که یک کار در صف سرور پردازشی و یکی از دو صف مربوط به‬
‫سرورهای پیشپردازنده سپری میکند ( 𝑙𝑎𝑡𝑜𝑡𝑊)‪.‬‬
‫نکات پایانی‬
‫‪ ‬تمام قسمتهای پروژه را باید خودتان پیادهسازی کنید و حق استفاده از برنامههای شبیهساز را ندارید‪ .‬با هر زبان برنامه‬
‫سازی که راحت هستید میتوانید کد بزنید‪.‬‬
‫‪ ‬طراحی مناسب کد و خوانایی آن بخشی از نمره شما را تشکیل میدهد‪ .‬شبیهسازی شما حتماً باید به صورت رخداد گسسته‬
‫باشد‪.‬‬
‫‪ ‬پروژه تحویل حضوری دارد و تسلط اعضای گروه بر همهی بخشهای کد الزامی است‪ .‬ممکن است از شما خواسته شود در‬
‫زمان تحویل بخشی از کد را عوض کنید‪.‬‬
‫‪Turnaround Time‬‬
‫‪2‬‬
‫‪ ‬پروژه باید در گروه های دو نفره انجام گیرد‪ .‬اگر در یافتن همگروهی دچار مشکل شدید‪ ،‬حداکثر تا تاریخ ‪ 2۰‬خرداد‪ ،‬به‬
‫ایمیل ‪ [email protected]‬اطالع دهید‪.‬‬
‫‪ ‬پروژههای خود را به آدرس ایمیل ‪ [email protected]‬ارسال نمایید‪.‬‬
‫‪ o‬در عنوان ایمیل عبارت ]‪ ce643-CA2-[#Student1-ID]-[#Student2_ID‬را قرار دهید‬
‫‪ o‬تنها یک فایل ‪ .zip/.rar‬با نام ]‪ ce643-CA2-[#Student1-ID]-[#Student2_ID‬ضمیمه نمایید‪.‬‬
‫‪ ‬پروژه تحویل با تأخیر ندارد‪.‬‬
‫موفق باشید ‪‬‬