آیا Hyper-Threading را در سرور HP فعال کنیم؟ تأثیر آن بر VMware، Performance و مصرف CPU

آیا Hyper-Threading را در سرور HP فعال کنیم؟

در سرور HP، به‌خصوص مدل‌هایی که به پردازنده‌های Intel Xeon مجهز هستند، یکی از تنظیماتی که هنگام راه‌اندازی یا بهینه‌سازی سرور با آن روبه‌رو می‌شویم Hyper-Threading است. این قابلیت در ظاهر ساده به نظر می‌رسد؛ کافی است آن را از BIOS یا محیط HPE UEFI System Utilities فعال یا غیرفعال کنیم. اما وقتی پای VMware، ماشین‌های مجازی متعدد، مصرف CPU و Performance واقعی سرور وسط باشد، تصمیم‌گیری کمی پیچیده‌تر می‌شود. سؤال اصلی این است: آیا همیشه باید Hyper-Threading را روی سرور HP فعال نگه داریم؟

در بیشتر سناریوهای مجازی‌سازی، پاسخ مثبت است. Hyper-Threading معمولاً می‌تواند استفاده از منابع CPU را بهبود دهد و در محیط‌هایی مثل VMware ESXi امکان استفاده مؤثرتر از Threadهای پردازنده را فراهم کند. با این حال، نباید آن را با دو برابر شدن قدرت پردازشی اشتباه گرفت و در برخی Workloadهای خاص، غیرفعال کردن آن ممکن است منطقی باشد.

Hyper-Threading یا Intel Hyper-Threading Technology (HTT) فناوری‌ای است که باعث می‌شود هر هسته فیزیکی پردازنده بتواند دو Thread منطقی را در اختیار سیستم‌عامل قرار دهد. برای مثال، فرض کنید یک سرور HP دارای پردازنده‌ای با 16 هسته فیزیکی باشد. با Hyper-Threading فعال، سیستم‌عامل معمولاً 32 Logical Processor مشاهده می‌کند.

اما نکته مهم این است که 32 Thread منطقی به معنی داشتن 32 هسته فیزیکی نیست. دو Thread روی یک Core فیزیکی، بخشی از منابع همان Core را به اشتراک می‌گذارند. بنابراین Hyper-Threading قرار نیست Performance پردازنده را دقیقاً دو برابر کند.

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

اگر سرور HP شما برای VMware، مجازی‌سازی، سرویس‌های شبکه، Application Server، Database یا چندین Workload هم‌زمان استفاده می‌شود، در اغلب موارد فعال بودن Hyper-Threading انتخاب مناسب‌تری است. به‌عنوان مثال، روی یک سرور HP ProLiant که چندین ماشین مجازی Windows و Linux روی VMware ESXi اجرا می‌شوند، تعداد بالاتر Logical CPUها به Scheduler اجازه می‌دهد Threadهای بیشتری را مدیریت کند.

با این حال، یک نکته بسیار مهم وجود دارد:

Hyper-Threading جایگزین هسته فیزیکی نیست.

اگر یک سرور 16 Core / 32 Thread داشته باشید، نباید انتظار Performance مشابه یک CPU واقعی 32 Core داشته باشید.

یکی از مهم‌ترین سناریوهای استفاده از Hyper-Threading، محیط‌های VMware vSphere و ESXi است. VMware می‌تواند Logical Processorهای حاصل از Hyper-Threading را شناسایی کند و از آن‌ها برای زمان‌بندی اجرای vCPUهای ماشین‌های مجازی استفاده کند. در نتیجه، وقتی تعداد VMها زیاد باشد، ESXi می‌تواند از ظرفیت پردازنده بهتر استفاده کند.

فرض کنید روی یک سرور HP، چهار ماشین مجازی دارید که هرکدام 4 vCPU دارند. در مجموع 16 vCPU در اختیار VMها قرار گرفته است. اگر پردازنده سرور 16 Core / 32 Thread باشد، ESXi Logical CPUهای بیشتری برای زمان‌بندی Workloadها در اختیار دارد. البته VMware به شکل هوشمندانه‌ای بین Coreهای فیزیکی و Threadهای منطقی تفاوت قائل می‌شود و نباید تصور کرد که همه Logical CPUها دقیقاً معادل Core مستقل هستند.

Hyper-Threading از دید VMware

برای بررسی اینکه آیا CPU سرور واقعاً تحت فشار قرار گرفته یا نه، فقط به درصد CPU Usage نگاه نکنید. یکی از شاخص‌های مهم در VMware، CPU Ready است. CPU Ready نشان می‌دهد یک ماشین مجازی چه مدت منتظر مانده تا CPU فیزیکی برای اجرای آن در دسترس قرار بگیرد. اگر CPU Ready بالا باشد، ممکن است مشکل از مواردی مانند:

  • تعداد زیاد VMها
  • تخصیص بیش از حد vCPU
  • CPU Overcommitment
  • Workload سنگین
  • محدودیت منابع پردازنده

باشد.

فعال بودن Hyper-Threading می‌تواند در برخی شرایط به کاهش فشار Scheduler کمک کند، اما قرار نیست مشکل CPU Overcommitment شدید را به‌تنهایی حل کند.

بله، اما میزان افزایش Performance به نوع Workload بستگی دارد. در Workloadهایی که به‌صورت هم‌زمان Threadهای زیادی اجرا می‌کنند، Hyper-Threading می‌تواند باعث افزایش Throughput شود. در بعضی Workloadها این افزایش محسوس است و در برخی دیگر تفاوت بسیار کمی ایجاد می‌کند.

برای مثال:

Virtualization: معمولاً مفید است
Web Server: معمولاً مفید است
Application Server: معمولاً مفید است
Multitasking: معمولاً مفید است
برخی Database Workloadها: وابسته به نوع Workload
برخی پردازش‌های کاملاً CPU-bound: ممکن است سود کمی داشته باشد

بنابراین نمی‌توان یک درصد ثابت برای افزایش Performance اعلام کرد. نکته مهم این است که Hyper-Threading بیشتر به بهبود استفاده از منابع CPU و افزایش Throughput کمک می‌کند، نه اینکه سرعت اجرای هر Thread را دو برابر کند.

یکی از برداشت‌های اشتباه این است که فعال کردن Hyper-Threading باعث می‌شود CPU همیشه مصرف بیشتری داشته باشد. در واقع، موضوع کمی متفاوت است.

وقتی Hyper-Threading فعال است، سیستم‌عامل و Hypervisor می‌توانند Threadهای بیشتری را روی پردازنده زمان‌بندی کنند. در نتیجه ممکن است در یک Workload مشخص، CPU Usage بالاتری مشاهده کنید؛ اما این لزوماً به معنی مصرف ناکارآمد منابع نیست.

برای مثال، اگر یک پردازش قبلاً با استفاده از 8 Core حدود 60 درصد ظرفیت CPU را مصرف می‌کرد، فعال بودن Hyper-Threading ممکن است اجازه دهد Threadهای بیشتری هم‌زمان اجرا شوند و Workload سریع‌تر تمام شود. پس باید بین CPU Utilization و CPU Efficiency تفاوت قائل شد.

مصرف 80 درصد CPU لزوماً بد نیست. اگر سرور با این میزان مصرف، Workload را سریع‌تر و بدون ایجاد Bottleneck اجرا کند، استفاده بالاتر از CPU می‌تواند کاملاً طبیعی باشد.

به‌طور کلی، فعال بودن Hyper-Threading می‌تواند در زمان اجرای Workload سنگین باعث استفاده بیشتر از ظرفیت پردازنده شود و در نتیجه مصرف انرژی و تولید حرارت افزایش پیدا کند. اما این موضوع به Workload و مدل CPU نیز وابسته است.

سرورهای HPE ProLiant دارای سیستم خنک‌کننده و Fan Control متناسب با سخت‌افزار هستند و در شرایط عادی، افزایش بار CPU توسط سیستم مدیریت حرارتی کنترل می‌شود. اگر بعد از فعال کردن Hyper-Threading دمای CPU به شکل غیرعادی بالا می‌رود، بهتر است موارد زیر بررسی شوند:

  • وضعیت Fanها
  • Airflow داخل Rack
  • دمای محیط Server Room
  • وضعیت Heatsink
  • CPU Utilization
  • Power Profile سرور
  • Firmware و BIOS
  • تعداد VMها و میزان CPU Allocation

بنابراین خاموش کردن Hyper-Threading نباید اولین راهکار برای حل مشکل دمای سرور باشد.

فعال بودن Hyper-Threading در اکثر محیط‌های مجازی‌سازی انتخاب مناسبی است، اما شرایط خاصی وجود دارد که ممکن است غیرفعال کردن آن منطقی باشد. یکی از این موارد، Workloadهای خاص و حساس به Performance قابل پیش‌بینی است. بعضی Applicationها زمانی که روی Threadهای یک Core مشترک اجرا می‌شوند، ممکن است Performance کاملاً مشابه استفاده از Coreهای فیزیکی نداشته باشند.

در محیط‌هایی که Latency بسیار پایین و رفتار کاملاً قابل پیش‌بینی اهمیت دارد نیز ممکن است تنظیمات CPU متفاوتی مورد نیاز باشد. همچنین در بعضی سناریوهای امنیتی، سازمان ممکن است بر اساس Policyهای داخلی تصمیم بگیرد Hyper-Threading را غیرفعال کند. این موضوع به‌خصوص در محیط‌هایی که جداسازی شدید Workloadها اهمیت دارد، باید با توجه به مستندات VMware، HPE و سیاست امنیتی سازمان بررسی شود.

بنابراین خاموش کردن HT صرفاً به این دلیل که «CPU کمتر مصرف کند» معمولاً تصمیم مناسبی نیست.

در سرورهای HPE ProLiant، تنظیمات مربوط به Processor و Hyper-Threading معمولاً از طریق UEFI System Utilities قابل دسترسی است. مسیر دقیق بسته به نسل سرور و Firmware ممکن است متفاوت باشد، اما معمولاً باید وارد تنظیمات System Utilities شده و بخش‌های مربوط به System Configuration، BIOS/Platform Configuration و Processor Options را بررسی کنید.

گزینه‌ای مانند Intel(R) Hyperthreading Technology یا گزینه مشابه آن وجود دارد که می‌توان آن را فعال یا غیرفعال کرد. بعد از تغییر تنظیمات، معمولاً نیاز به Reboot سرور وجود دارد. قبل از تغییر تنظیمات در سرور Production بهتر است Maintenance Window در نظر بگیرید؛ مخصوصاً اگر روی سرور VMware ESXi یا سرویس‌های حیاتی اجرا می‌شوند.

Hyper-Threading را در سرور HP

بهترین روش، حدس زدن نیست؛ Benchmark و Monitoring است. قبل و بعد از تغییر تنظیمات، شاخص‌هایی مانند موارد زیر را بررسی کنید:

  • CPU Usage
  • CPU Ready در VMware
  • CPU Co-Stop
  • CPU Contention
  • VM Performance
  • Application Response Time
  • Load Average در Linux
  • Performance Monitor در Windows
  • دمای CPU
  • Power Consumption

اگر بعد از فعال بودن Hyper-Threading، Throughput افزایش پیدا کرده، CPU Ready کنترل شده و Response Time بهتر شده است، دلیلی برای خاموش کردن آن وجود ندارد. در مقابل، اگر Workload خاصی دارید که با استفاده از Logical Threadهای هم‌زمان Performance ضعیف‌تری نشان می‌دهد، می‌توانید HT را به‌صورت کنترل‌شده غیرفعال کرده و نتیجه را مقایسه کنید.

نه لزوماً. این یکی از اشتباهات رایج در محیط‌های VMware است. فعال بودن Hyper-Threading به این معنی نیست که باید تعداد vCPU تمام VMها را افزایش دهیم. اختصاص vCPU بیشتر از نیاز واقعی می‌تواند باعث افزایش Scheduling Overhead و در بعضی شرایط افزایش CPU Ready شود.

بهتر است هر ماشین مجازی بر اساس Workload واقعی خود vCPU دریافت کند. برای مثال، یک File Server ساده ممکن است به vCPU زیادی نیاز نداشته باشد، در حالی که یک Application Server یا پردازش سنگین Database ممکن است به منابع بیشتری احتیاج داشته باشد.

Overprovisioning همیشه به معنی Performance بهتر نیست.

اگر سرور HP شما برای VMware ESXi و اجرای چندین ماشین مجازی استفاده می‌شود، در اکثر موارد بهتر است Hyper-Threading را فعال نگه دارید. این قابلیت می‌تواند استفاده از منابع پردازنده را بهبود دهد و در Workloadهای Multi-Threaded و محیط‌های Virtualization باعث افزایش Throughput شود.

اما نباید انتظار داشته باشید که مثلاً یک CPU با 16 Core و 32 Thread عملکردی برابر با یک CPU واقعی 32 Core داشته باشد. Threadهای منطقی همچنان منابع Core فیزیکی را با یکدیگر به اشتراک می‌گذارند. بنابراین تصمیم درست این نیست که صرفاً بگوییم «Hyper-Threading همیشه خوب است» یا «برای کاهش مصرف CPU باید خاموش شود». تصمیم باید بر اساس نوع Workload، تعداد VMها، CPU Ready، میزان Overcommitment، Performance مورد نیاز و شرایط عملیاتی سرور گرفته شود.

برای یک سرور HP ProLiant که VMware روی آن نصب است و چند سرویس مختلف را هم‌زمان اجرا می‌کند، فعال بودن Hyper-Threading معمولاً نقطه شروع مناسبی است. اگر Performance یا مصرف منابع غیرعادی است، بهتر است قبل از خاموش کردن HT، وضعیت CPU Allocation، تعداد vCPUها، CPU Ready و خود Workloadها بررسی شود.

محصول با موفقیت به سبد خرید اضافه شد.
تماس با ما