Sorry, no posts matched your criteria.

این سایت در ستاد ساماندهی ثبت شده و تابع قوانین جمهوری اسلامی میباشد

یافتن علت افت کارایی آخرین پردازنده‌های AMD در بنچمارک‌ها

۱۹ بهمن ۱۳۹۷
8 بار
بدون نظر


پردازنده‌هایی Multi-Die شرکت AMD مانند Threadripper 2 و Epyc در بنچمارک‌ها افتِ سطح عملکرد محسوسی را نشان داده‌اند که.کارشناسان دنیای سخت‌افزار مشتاقانه پیگیر حل آن هستند.

وندل از تیم Leve1Tech در حال پژوهش پیرامون دلایل افت عملکرد پردازنده‌ی نسل دوم تردریپر (AMD (Threadripper 2 با پیکربندی quad-die در مقایسه با پیکربندی dual-die در بنچمارک‌ها است. در خلال این پژوهش، وندل دریافت که این مشکل محدود به ویندوز مایکروسافت بوده و اجرای همان برنامه‌ی کراس پلتفرم در محیط لینوکس باعث بروز چنین افت عملکردی نخواهد شد. این کارشناس سخت‌افزار همچنین متوجه شد که این اشکال تنها محدود به پردازنده‌های تردریپر ۲ نیست و در پردازنده‌های سرور اپیک (EPYC) شامل quad-die نیز دیده می‌شود.

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

در عین حال، وندل متوجه شده بود که حذف CPU 0 از فرایند تردپول (Thread pool) پس از شروع اجرای برنامه در محیط ویندوز، می‌تواند باعث بازیابی تمام کارایی از دست رفته شود. برای توضیح بیشتر باید اضافه کرد که تردپول اصطلاحی در برنامه‌نویسی کامپیوتری و الگوی طراحی نرم‌افزار برای دستیابی به اجرای همزمان برنامه‌ها است. در واقع در فرایند تردپول، تعدادی از رشته‌های پردازشی توسط برنامه‌ای ناظر به صورت رزرو و در حال انتظار برای تخصیص به اجرای همزمان یک برنامه نگه داشته می‌شوند.

بعد از بالا گرفتن مباحث پیرامون علت چنین اشکالی، ایان کاترس از سایت فناوری AnandTech با برخی از آزمایش‌ها و تست های اضافی‌تر به کمک وندل شتافت. وی در حین اجرای برنامه CPU Suite که برنامه‌ای برای بنچمارک پردازنده است، با اعمال یک affinity mask در ران‌تایم، CPU 0 را از گزینه‌های موجود در ران‌تایم حذف کرد. نتیجه‌ی این تست منفی بود، یعنی راهکار اعمال‌شده درمورد CPU 0، در واقع آن را در ران‌تایم تغییر می‌داد.

affinity mask

در ادامه وندل تست‌های خود را روی یک پردازنده‌ی EPYC 7751، یکی از تراشه‌های بزرگ با چهار Die به انجام رساند و متوجه شد که اشکال کاهش سطح عملکرد محدود به تردریپر نبوده و در برادر بزرگترش هم دیده می شود. پس این اشکال مربوط به حافظه نیست و قطعاً در ارتباط با برنامه‌ی زمانبندی ویندوز (Windows Scheduler) بود. 

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

نتیجه بررسی‌ها این بود که در محیطی با طراحی NUMA زمانبند ویندوز در واقع «بهترین نود NUMA» را برای پردازش هر بیت از نرم‌افزار تخصیص داده و زمانبند طوری برنامه‌ریزی شده که آن رشته‌های پردازشی مربوطه را تا حد امکان به «بهترین نود NUMA» منتقل کند. در این صورت دیگر رشته‌هایی که از همان تنظیمات «بهترین نود NUMA» استفاده می‌کنند، با ایجاد ممنوعیت پردازشی در آن نود کنار گذاشته می‌شوند. به هنگام اجرای یک کد باینری که ۳۲ یا ۶۴ رشته‌ی پردازشی جدید تولید می‌کند، به هریک از این رشته‌های پردازشی آن کد باینری همان «بهترین نود NUMA» تخصیص می‌یابد و این رشته‌ها به طور مداوم به آن نود کشانده می‌شوند. در چنین حالتی، رشته‌هایی که در حال حاضر خواستار قرار گرفتن در آن نود هستند، از چرخه‌ی پردازشی کنار گذاشته می‌شوند. این فرایند باعث ایجاد رقابت بر سر تصاحب هسته‌ها (Core Contention) می‌شود. در این حالت یک برنامه با شیوه‌ی پردازش چند رشته‌ای ممکن است نیمی از زمان خود را صرف ترکیب و برهم زنی رشته‌های پردازشی خود برای انطباق بر «بهترین نود NUMA» کند.

کارکرد اصلی «بهترین نود NUMA» اصولاً حین اجرای ماشین‌های مجازی نمایان می‌شود، به طوری‌که هر ماشین مجازی ران‌تایم مخصوص به خود را اجرا کرده و به «بهترین نود NUMA» از میان چنین تراشه‌هایی، بسته به اینکه چه محتوای دیگری به طور همزمان در حال اجرا است، تخصیص داده می‌شود.

یکی از حدس‌های ممکن این بود که اشکال اخیر تنها در محیط NUMA-ی پردازنده های دوتایی یا پردازنده‌های AMD با دو Die پدیدار می‌شود. این تصور مایکروسافت را بر آن داشت که دست به ارائه‌ی یک hotfix جایگزین برای محیط‌هایی با NUMA دوگانه بزند. این hotfix حالت بهترین نود NUMA را غیرفعال می‌کند. در آینده احتمال دارد معرفی تعداد بیشتری از پلتفرم‌های ورک‌استیشن با دو سوکت باعث شود از حالت «بهترین نود NUMA» به سمت محیط‌های ۳+ NUMA حرکت کنیم. به همین علت است که ما چنین اشکالی را در تردریپرهای quad-die مشاهده می‌کنیم، درحالی‌که درمورد ترددریپرهای dual-die این‌گونه نیست.

در حال حاضر وندل با همکاری Jeremy از تیم ‌Bitsum (خالق نرم افزار Coreprio)، در تلاش برای توسعه‌ی راهکاری نرم‌افزاری برای غلبه بر این مشکل است. نرم افزار Coreprio گزینه‌ای به نام NUMA Disassociator دارد که هر چند ثانیه یکبار به کاوش نرم‌افزارهای فعال پرداخته و به جای اجرای affinity mask، در همان حین اجرای نرم‌افزار، Thread Afinity را تنظیم می‌نماید. قطعاً این راه حل موقتی خوبی است؛ اما مسئله باید به‌طور ریشه‌ای و از مجرای برنامه‌ی زمانبندی ویندوز حل‌و‌فصل شود.

coreprio

نظر AMD در مورد این یافته‌ها

هم‌اکنون پرسش‌هایی مطرح است مبنی‌بر اینکه شرکت‌های AMD و مایکروسافت تاچه‌حدی از چنین اشکالاتی اطلاع دارند، با چه کسانی در تماس هستند و تاکنون چه اقداماتی انجام شده است. AMD نظرات خود را در این زمینه ارائه کرده است. این شرکت اظهار داشته است که متخصصانش به تلاش و همکاری نزدیک با تیم مایکروسافت برای حل این اشکال ادامه خواهند داد. کارشناسان AMD می‌گویند از این اشکال مطلع هستند و وندل را از بابت تلاش برای ریشه‎یابی چنین اشکالی تحسین کرده‌اند؛ ولی از ارائه‌ی جزییات بیشتر خودداری کرده‌اند. در حال حاضر کارشناسان این شرکت در حال تطبیق نکات و تشریک مساعی با تیم Bitsum بوده و کمک شایانی به ابن تیم برای توسعه‌ی ابزار اعمال affinity mask کرده‌اند؛ با این وجود ابزار NUMA Disassociator به‌مراتب جدیدتر است.

زمان لازم برای حل این اشکال بستگی به عواملی دارد که میان AMD و مایکروسافت در جریان است، با این حال قرار است اطلاعیه‌هایی در مورد زمان آماد‌ه‌سازی یک وصله‌ی بروزرسانی برای حل مشکل و میزان تاثیر آن بر سطح عملکرد پردازنده منتشر شود. در کنار آن، راه‌حل‌های دیگری برای بهینه‌سازی سطح عملکرد نیز ارائه خواهد شد. AMD همچنان از سطح عملکرد تردریپر ۲ خشنود است و مشتاقانه بر عملکرد این پردازنده در بیشتر آزمون‌های مربوط به سطوح عملکرد تاکید دارد. به هر ترتیب عملکرد این پردازنده در فرایند رندرینگ همچنان بالاتر از رقبا است و AMD با تولیدکنندگان نرم‌افزار در تعامل است تا سطوح عملکرد پردازنده‌های خود را از این نیز فراتر ببرد.


لینک کوتاه مطلب

http://sarpolnews.ir/?p=2728

برچسب ها

مطالب مشابه