تعداد هسته واقعی یعنی چه؟ هسته فیزیکی در برابر هسته منطقی
هر پردازنده مدرن دو لایه هسته دارد: هستههای واقعی که تراشه ساخته، و هستههای مجازی که سختافزار از روی آنها میسازد.
هسته فیزیکی چیست؟
هر هسته فیزیکی یک واحد اجرایی کامل با واحد محاسباتی (ALU)، واحد ممیز شناور (FPU)، حافظه نهان اختصاصی و واحد Branch Prediction است. دو هسته فیزیکی یعنی دو مسیر اجرای کاملاً مستقل.
هسته منطقی چیست؟
فناوری Simultaneous Multithreading یا SMT، هر هسته فیزیکی را به دو رشته اجرایی تقسیم میکند. این دو رشته واحدهای اجرایی و حافظه نهان ندارند؛ فقط زمانبندی منابع مشترک را بهینه میکنند.
نتیجه در کارهای معمولی حدود ۲۰ تا ۳۰ درصد عملکرد بیشتر است، نه دو برابر.
چرا در مجازیسازی هسته منطقی گمراهکننده است؟
فرض کنید یک سرور با ۱۶ هسته فیزیکی دارید که با SMT به ۳۲ رشته اجرایی تبدیل میشود. اگر سیستمعامل هر ۳۲ رشته را به یک ماشین مجازی بدهد، آن ماشی در واقع فقط ۸ هسته فیزیکی در اختیار دارد.
این یعنی:
- کارایی پایینتر، چون رشتهها روی یک هسته فیزیکی رقابت میکنند
- تأخیر غیرقابل پیشبینی، چون زمانبندی به بار لحظهای وابسته است
- در بارهای CPU-Intensive کارایی گاهی از حالت یک رشته به ازای هر هسته بدتر میشود
قاعده عملی تخصیص
| نوع بار کاری | توصیه |
|---|---|
| مجازیسازی عمومی | یک رشته به ازای هر هسته فیزیکی |
| وب و دیتابیس | یک رشته به ازای هر هسته |
| محاسبات علمی | یک رشته به ازای هر هسته |
| محیط توسعه و تست | استفاده آزاد |
چگونه از SMT خالی شویم؟
اگر بار کاری شما حساس به تأخیر است، معمولاً بهتر است SMT را در BIOS غیرفعال کنید و هر هسته فیزیکی را به یک ماشین مجازی بدهید. عملکرد کلی در این حالت اغلب بهتر و پایدارتر است.
در سوکتهای نسل جدید، خرید سرور با SMT غیرفعال یک گزینه واقعی است، اما مطمئن شوید که پردازندهای که خریدهاید اجازه غیرفعالسازی بدهد.