تفاوت vCPU و CPU Core در سرور مجازی

تفاوت vCPU و CPU Core در سرور مجازی؛ تعداد هسته واقعا چه چیزی را نشان می‌دهد؟

وقتی در مشخصات یک سرور عددهایی مثل 2، 4 یا 8 هسته پردازنده می‌بینید، اولین سوال باید این باشد که این عدد دقیقا به چه منبعی اشاره می‌کند. تفاوت vCPU و CPU Core در سرور مجازی از همین‌جا اهمیت پیدا می‌کند؛ زیرا vCPU لزوماً معادل یک هسته فیزیکی کامل پردازنده نیست. در یک سرور ابری، عملکرد واقعی CPU علاوه بر تعداد vCPU به معماری پردازنده، فرکانس، نحوه اشتراک منابع، سیاست مجازی‌سازی و نوع Workload وابسته است. بنابراین مقایسه دو سرور فقط بر اساس عبارت «4 هسته» یا «8 هسته» می‌تواند به انتخاب اشتباه منجر شود.

تفاوت vCPU و CPU Core چیست؟

CPU Core یک هسته فیزیکی داخل پردازنده واقعی سرور است؛ اما vCPU واحد پردازشی مجازی‌ای است که Hypervisor در اختیار ماشین مجازی قرار می‌دهد. یک vCPU الزاماً معادل یک هسته فیزیکی کامل نیست و بسته به زیرساخت می‌تواند معادل یک Thread سخت‌افزاری یا سهمی زمان‌بندی‌شده از CPU باشد. بنابراین «۸ vCPU» به‌تنهایی تضمین نمی‌کند سرور دو برابر «۴ vCPU» سریع‌تر باشد؛ نسل پردازنده، فرکانس، اشتراک منابع، Overcommit و نوع Workload نیز روی عملکرد اثر دارند.

CPU Core چیست؟

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

اگر CPU از SMT یا Hyper-Threading پشتیبانی کند، یک Core فیزیکی می‌تواند چند Thread منطقی ارائه دهد. به همین دلیل تعداد Logical CPUهای میزبان ممکن است بیشتر از Coreهای فیزیکی باشد. AWS برای نمونه در بسیاری از ماشین‌های مبتنی بر SMT، هر Thread را به‌صورت یک vCPU در اختیار Instance قرار می‌دهد.

vCPU چیست و چگونه کار می‌کند؟

در مجازی سازی سرور، Hypervisor بین سخت افزار و ماشین های مجازی قرار می‌گیرد. هر VM تعدادی vCPU دریافت می‌کند و Hypervisor اجرای آن‌ها را روی CPUهای میزبان زمان‌بندی می‌کند. بنابراین vCPU یک «پردازنده فیزیکی مستقل» نیست؛ یک واحد پردازشی ارائه‌شده به ماشین مجازی است. Hypervisor حتی می‌تواند توپولوژی مجازی شامل Socket، Core و Thread را برای سیستم‌عامل مهمان تعریف کند.

مدل نگاشت در همه پلتفرم‌ها یکسان نیست. AWS در بسیاری از نمونه‌های EC2 هر Thread پردازنده را یک vCPU در نظر می‌گیرد؛ در مقابل بعضی خانواده‌های بدون SMT می‌توانند هر vCPU را به یک Core کامل نگاشت کنند. KVM نیز CPU Overcommit را پشتیبانی می‌کند؛ یعنی مجموع vCPUهای VMها می‌تواند از CPUهای فیزیکی میزبان بیشتر باشد. پس تعریف ارائه‌دهنده از vCPU برای مقایسه سرویس اهمیت دارد.

در انتخاب یک سرور مجازی ابری، CPU باید در کنار RAM و Storage بررسی شود. در سرور ابری ویراک نیز این منابع هنگام ساخت و تنظیم ماشین قابل انتخاب هستند.

تفاوت vCPU، Core و Thread در یک نگاه

مفهوم تعریف نکته مهم برای خریدار
CPU Socket پردازنده فیزیکی روی سرور مدل و نسل CPU
CPU Core هسته واقعی داخل پردازنده توان پردازش فیزیکی و Single-Core
Hardware Thread مسیر منطقی اجرای دستور روی Core الزاماً قدرت یک Core کامل را ندارد
vCPU CPU مجازی ارائه‌شده به VM نحوه نگاشت و Shared/Dedicated بودن

بنابراین اصطلاح «هسته» در صفحه فروش سرور مجازی اگر بدون توضیح فنی باشد، می‌تواند مبهم باشد. سؤال بهتر این است که هر واحد CPU چه منبعی را نمایندگی می‌کند و در بار هم‌زمان چه رفتاری دارد.

آیا 8 vCPU همیشه از 4 vCPU سریع‌تر است؟

خیر. اگر نرم افزار بتواند پردازش را میان چند Thread تقسیم کند، افزایش vCPU معمولا ظرفیت پردازش هم‌زمان را بیشتر می‌کند. اما نرم افزارهای Single-Thread ممکن است از vCPU اضافه سود کمی ببرند و بیشتر به عملکرد تک‌هسته وابسته باشند.

کیفیت CPU میزبان نیز مهم است. چهار vCPU روی پردازنده جدید می‌تواند در بعضی Workloadها از تعداد بیشتری vCPU روی سخت افزار قدیمی سریع‌تر باشد. اگر منابع CPU هم به‌شدت بین VMها مشترک باشند، Contention می‌تواند زمان انتظار پردازش را افزایش دهد.

پس در تعرفه‌های سرور ابری فقط عدد CPU را مقایسه نکنید؛ نوع پردازش را کنار RAM، Storage و شبکه بسنجید. ویراک نیز برای Workloadهای پردازشی، پلن CPU Optimized را جدا از پلن‌های Memory، Storage و Network Optimized تعریف کرده است.

 

نحوه تخصیص CPU Core به چند vCPU در مجازی سازی سرور

 

Shared vCPU و Dedicated vCPU

در Shared CPU چند ماشین مجازی از ظرفیت پردازشی میزبان استفاده می‌کنند؛ مدلی مناسب بارهای عمومی و نوسانی. در مدل Dedicated یا CPU Pinning، منابع پردازشی اختصاصی‌تر تخصیص می‌یابند و برای Workloadهای CPU-bound یا حساس به Latency قابل‌پیش‌بینی‌ترند، اما معمولا هزینه بیشتری دارند.

عبارت «vCPU اختصاصی» به‌تنهایی کافی نیست؛ سیاست Scheduling یا Pinning ارائه دهنده باید مشخص باشد.

CPU Overcommit چیست؟

CPU Overcommit یعنی مجموع vCPUهای تخصیص‌یافته از ظرفیت فیزیکی میزبان بیشتر باشد. این کار ذاتاً مشکل‌دار نیست، زیرا بسیاری از ماشین‌ها هم‌زمان CPU را 100 درصد مصرف نمی‌کنند.

اما اگر چند VM هم‌زمان پردازش سنگین داشته باشند، رقابت برای CPU افزایش می‌یابد. مستندات Red Hat توضیح می‌دهد که Overcommit می‌تواند در بار هم‌زمان بالا باعث افت عملکرد شود و توصیه می‌کند تعداد vCPU متناسب با نیاز واقعی Workload انتخاب شود.

تعداد vCPU مناسب را چگونه انتخاب کنیم؟

برای انتخاب تعداد هسته سرور مجازی، از Workload شروع کنید نه از بزرگ‌ترین عدد موجود.

وب‌سایت و API

تعداد درخواست هم‌زمان، Workerها، Cache و رفتار دیتابیس تعیین‌کننده‌اند. افزایش CPU زمانی مفید است که مانیتورینگ واقعا اشباع پردازنده را نشان دهد.

دیتابیس

دیتابیس ممکن است CPU-bound یا I/O-bound باشد. اگر Storage گلوگاه باشد، vCPU بیشتر مشکل را حل نمی‌کند. مقاله NVMe چیست و چرا سرعت سایت را افزایش می‌دهد؟ این بخش از عملکرد سرور را دقیق‌تر بررسی می‌کند.

پردازش موازی

Encoding، Compilation، Workerهای موازی و برخی پردازش‌های داده معمولا از vCPU بیشتر بهتر استفاده می‌کنند؛ با این حال دو برابر شدن vCPU الزاماً زمان اجرا را نصف نمی‌کند.

سرویس های در حال رشد

اگر بار دائماً رشد می‌کند، فقط بزرگ‌تر کردن یک VM راه‌حل همیشگی نیست. در تفاوت Scale Up و Scale Out می‌توان دید چه زمانی افزایش منابع همان سرور کافی است و چه زمانی باید بار بین چند نمونه توزیع شود.

مزیت واقعی vCPU چیست؟

مزیت vCPU انعطاف در تخصیص منابع است؛ می‌توان بدون تغییر سخت‌افزار ظرفیت VM را متناسب با پروژه تنظیم کرد. با این حال «vCPU بیشتر» به‌خودی‌خود مزیت نیست و در راهنمای پیاده سازی سرور ابری برای کسب و کارها نیز انتخاب منابع بر اساس بار واقعی مطرح می‌شود.

اشتباهات رایج هنگام مقایسه هسته سرور مجازی

  • یکی دانستن هر vCPU با یک Core فیزیکی کامل.
  • مقایسه سرویس‌ها فقط بر اساس تعداد vCPU و نادیده گرفتن نسل CPU و مدل اشتراک.
  • خرید CPU بیشتر برای مشکلی که از RAM ،Disk I/O، شبکه یا Query دیتابیس است.
  • تخصیص بیش از حد vCPU بدون اینکه نرم افزار توان استفاده از پردازش موازی را داشته باشد.
  • نادیده گرفتن Steal Time یا Contention در VMهای اشتراکی.

Red Hat نیز در توصیه‌های Performance خود پیشنهاد می‌کند VM فقط به اندازه نیاز Workload vCPU دریافت کند و Overcommit در محیط Production بدون تست گسترده انجام نشود.

چه زمانی vCPU بیشتر مناسب است و چه زمانی نیست؟

vCPU بیشتر زمانی منطقی است که مصرف CPU در بازه‌های طولانی بالا باشد، صف پردازش تشکیل شود و نرم افزار Multi-Thread باشد. Workerهای موازی، Build، Encoding و بخشی از تحلیل داده نمونه‌های متداول‌اند.

اما اگر گلوگاه Single-Thread ،Storage ،RAM یا شبکه باشد، افزایش vCPU احتمالا فقط هزینه را بالا می‌برد. در پروژه‌های بسیار حساس به عملکرد پایدار نیز ممکن است منابع اختصاصی‌تر یا حتی مقایسه سرور اختصاصی و سرور ابری مبنای تصمیم بهتری باشد.

CPU Core هسته فیزیکی پردازنده است؛ vCPU واحد پردازشی مجازی VM است و این دو معادل قطعی یکدیگر نیستند. برای انتخاب سرور مجازی، تعداد vCPU را همراه با نسل CPU، عملکرد تک هسته، نوع اشتراک منابع، Overcommit و رفتار نرم افزار بررسی کنید. سرور با vCPU بیشتر لزوماً سریع‌تر نیست.

اگر برای انتخاب تعداد vCPU، میزان RAM یا سایر منابع سرور به راهنمایی بیشتری نیاز دارید، برای تماس با ویراک کلود کلیک کنید و با کارشناسان مجموعه در ارتباط باشید تا پیش از انتخاب سرویس، نیاز فنی و پردازشی پروژه شما دقیق‌تر بررسی شود.

سوالات متداول

تفاوت vCPU و CPU Core در سرور مجازی چیست؟

CPU Core یک هسته فیزیکی داخل پردازنده سرور است، اما vCPU یک واحد پردازشی مجازی است که Hypervisor در اختیار ماشین مجازی قرار می‌دهد. هر vCPU الزاماً معادل یک Core فیزیکی کامل نیست.

آیا هر vCPU معادل یک هسته واقعی پردازنده است؟

خیر. بسته به معماری زیرساخت و سیاست ارائه‌دهنده، یک vCPU ممکن است معادل یک Thread سخت‌افزاری، بخشی از ظرفیت پردازنده یا در برخی شرایط یک Core اختصاصی باشد.

آیا سرور با 8 vCPU همیشه از سرور 4 vCPU سریع‌تر است؟

خیر. عملکرد واقعی به نسل و فرکانس CPU، نوع Workload، میزان اشتراک منابع، RAM، Storage و توانایی نرم‌افزار در استفاده از پردازش چند‌هسته‌ای بستگی دارد.

برای یک وب‌سایت چند vCPU نیاز داریم؟

عدد ثابتی وجود ندارد. میزان ترافیک، تعداد درخواست‌های هم‌زمان، نوع CMS، دیتابیس، Cache و Workerها تعیین می‌کنند که چند vCPU مناسب است. بهتر است انتخاب بر اساس مانیتورینگ مصرف واقعی انجام شود.

Shared vCPU با Dedicated vCPU چه تفاوتی دارد؟

در Shared vCPU منابع پردازشی میان چند ماشین مجازی به اشتراک گذاشته می‌شوند، اما Dedicated vCPU منابع پایدارتر و اختصاصی‌تری در اختیار VM قرار می‌دهد. Workloadهای حساس به Latency یا پردازش مداوم معمولاً از مدل اختصاصی بیشتر بهره می‌برند.

CPU Overcommit در سرور مجازی چیست؟

CPU Overcommit زمانی رخ می‌دهد که مجموع vCPUهای تخصیص‌یافته به ماشین‌های مجازی بیشتر از ظرفیت فیزیکی CPU میزبان باشد. این روش می‌تواند بهره‌وری زیرساخت را افزایش دهد، اما در بارهای هم‌زمان سنگین ممکن است باعث رقابت برای منابع و افت عملکرد شود.

آیا افزایش vCPU باعث کاهش مصرف RAM می‌شود؟

خیر. CPU و RAM دو منبع مستقل هستند. افزایش vCPU مشکل کمبود حافظه را برطرف نمی‌کند و اگر گلوگاه اصلی RAM باشد، اضافه کردن CPU معمولاً تأثیر محسوسی بر عملکرد ندارد.

از کجا بفهمیم سرور به vCPU بیشتری نیاز دارد؟

مصرف مداوم بالای CPU، افزایش Load Average، تشکیل صف پردازشی، کند شدن Workerها و افزایش زمان پاسخ در زمان Peak می‌توانند نشانه کمبود منابع پردازشی باشند. البته قبل از ارتقا باید مطمئن شد گلوگاه از Storage، RAM یا شبکه نیست.

برای انتخاب سرور مجازی، تعداد vCPU مهم‌تر است یا مدل پردازنده؟

هیچ‌کدام به‌تنهایی کافی نیستند. تعداد vCPU ظرفیت پردازش هم‌زمان را نشان می‌دهد، اما نسل CPU، فرکانس، معماری، Cache و نوع تخصیص منابع نیز روی عملکرد واقعی تأثیر مستقیم دارند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای درخواست مشاوره و بهره‌مندی از خدمات ابری ویراک، فرم زیر را پر کنید تا در سریع‌ترین زمان ممکن با شما تماس بگیریم.