مفاهیم پایه

vCPU چیست؟ تفاوت هستهٔ مجازی، اختصاصی و اشتراکی در سرور

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۷ دقیقه

hypervisorVM1VM2VM3vCPUمفاهیم پایهvCPU چیست؟ تفاوتهستهٔ مجازی، اختصاصیو اشتراکی در سرورمجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

vCPU یا پردازندهٔ مجازی، سهمی از پردازندهٔ فیزیکی است که هایپروایزر به سرور مجازی شما اختصاص می‌دهد. معمولاً هر vCPU معادل یک رشته (Thread) از یک هستهٔ فیزیکی است، نه یک هستهٔ کامل. در پلن‌های اشتراکی، vCPUها بین چند مشتری تقسیم می‌شوند و ممکن است در زمان شلوغی کندتر شوند؛ در پلن‌های اختصاصی، هسته فقط برای شماست. علاوه بر تعداد، نسل و فرکانس پردازنده هم روی سرعت اثر زیادی دارد.

از هستهٔ فیزیکی تا vCPU

پردازنده‌های سرور امروزی چندین هسته (Core) دارند و هر هسته می‌تواند با فناوری Hyper-Threading یا SMT، دو رشته (Thread) را هم‌زمان اجرا کند. یعنی پردازنده‌ای با تعداد مشخصی هسته، دو برابر آن رشته در اختیار سیستم‌عامل قرار می‌دهد. البته دو رشتهٔ یک هسته، منابع آن هسته را به اشتراک می‌گذارند و کارایی‌شان دو برابر یک هسته نیست.

وقتی این سرور فیزیکی به چند سرور مجازی تقسیم می‌شود، هایپروایزر (مثل KVM) به هر ماشین مجازی تعدادی vCPU می‌دهد. در بیشتر ارائه‌دهندگان، هر vCPU معادل یک رشته است. پس سروری با ۲ vCPU معمولاً به اندازهٔ دو رشته از پردازندهٔ فیزیکی، یا تقریباً یک هستهٔ کامل، توان پردازشی دارد؛ و این در بهترین حالت است.

از سخت‌افزار تا vCPU
vCPU سرور شماآنچه nproc نشان می‌دهد
هایپروایزرزمان‌بندی و تقسیم رشته‌ها بین ماشین‌ها
رشته‌ها (Threads)هر هسته با SMT دو رشته اجرا می‌کند
هسته‌های فیزیکیپردازندهٔ واقعی سرور میزبان
شکل ۱ هر vCPU معمولاً یک رشته از یک هستهٔ فیزیکی است که هایپروایزر به ماشین مجازی می‌دهد.

vCPU اشتراکی و اختصاصی

vCPU اشتراکی (Shared)

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

نقطهٔ ضعف این مدل این است که وقتی همسایه‌ها هم‌زمان پرمصرف‌اند، سرور شما باید منتظر نوبت بماند. این انتظار در لینوکس با نام Steal Time اندازه‌گیری می‌شود. توضیح کامل و روش اندازه‌گیری در CPU Steal چیست؟ آمده است.

vCPU اختصاصی (Dedicated)

در پلن‌های اختصاصی، هر vCPU به یک رشته یا هستهٔ فیزیکی مشخص گره می‌خورد و به کس دیگری داده نمی‌شود. کارایی پایدار و قابل پیش‌بینی است و Steal تقریباً صفر می‌ماند. این پلن‌ها گران‌ترند اما برای دیتابیس‌های پرمصرف، سرور بازی، پردازش ویدیو و هر کاری که پردازنده را مدام درگیر می‌کند، ارزشمندند.

برخی ارائه‌دهندگان مدل‌های میانه هم دارند؛ مثلاً پلن‌هایی که اجازهٔ مصرف کامل پردازنده را برای مدت کوتاه (Burst) می‌دهند اما مصرف پیوستهٔ بالا را محدود می‌کنند. شرایط پلن را با دقت بخوانید.

فقط تعداد مهم نیست

دو سرور هر دو با ۴ vCPU ممکن است کارایی بسیار متفاوتی داشته باشند. عوامل مهم دیگر:

  • نسل پردازنده: پردازنده‌های نسل جدید در هر چرخهٔ ساعت کار بیشتری انجام می‌دهند.
  • فرکانس: بسیاری از برنامه‌ها، مثل PHP و Node.js در یک درخواست، از یک رشته استفاده می‌کنند. برای این‌ها، سرعت تک‌هسته‌ای از تعداد هسته مهم‌تر است.
  • اشتراکی یا اختصاصی بودن: ۴ vCPU اشتراکی روی میزبان شلوغ ممکن است از ۲ vCPU اختصاصی کندتر باشد.
  • حافظهٔ نهان پردازنده و حافظهٔ سیستم: در بارهای سنگین دیتابیس اثر قابل توجهی دارند.

بهترین راه مقایسه، بنچمارک است. ابزارهایی مثل sysbench و Geekbench را در ابزارهای بنچمارک سرور معرفی کرده‌ایم.

vCPU اشتراکی یا اختصاصی
اشتراکی
  • قیمت پایین‌تر
  • مناسب بار متغیر و کم
  • ممکن است Steal داشته باشد
  • کارایی وابسته به همسایه‌ها
در برابر
اختصاصی
  • کارایی پایدار و قابل پیش‌بینی
  • Steal تقریباً صفر
  • مناسب دیتابیس و پردازش سنگین
  • هزینهٔ بیشتر
شکل ۲ برای بیشتر سایت‌ها اشتراکی کافی است؛ برای بار سنگین پیوسته اختصاصی ارزش دارد.

چطور تعداد vCPU سرور را ببینیم؟

nproc
lscpu | grep -E "Model name|^CPU\(s\)|Thread|Core|Socket|MHz"
cat /proc/cpuinfo | grep "model name" | head -1

nproc تعداد vCPUهای در دسترس را نشان می‌دهد و lscpu مدل پردازندهٔ فیزیکی، تعداد هسته و رشته از دید ماشین مجازی و فرکانس را. در ویندوز، Task Manager و تب Performance همین اطلاعات را نشان می‌دهد.

چند vCPU لازم دارم؟

پاسخ به نوع کار بستگی دارد:

  • ربات تلگرام، سایت کوچک، API سبک: ۱ vCPU معمولاً کافی است.
  • وردپرس با بازدید متوسط، چند سرویس داکر: ۲ vCPU.
  • فروشگاه اینترنتی پربازدید، دیتابیس متوسط، CI/CD: ۴ vCPU.
  • دیتابیس سنگین، پردازش موازی، ساخت پروژه‌های بزرگ: ۸ vCPU یا بیشتر، ترجیحاً اختصاصی.

به یاد داشته باشید که بیشتر کردن vCPU فقط وقتی کمک می‌کند که برنامه بتواند از چند هسته هم‌زمان استفاده کند. یک اسکریپت تک‌رشته‌ای پایتون روی ۸ vCPU سریع‌تر از ۲ vCPU اجرا نمی‌شود. وب‌سرورها، دیتابیس‌ها و PHP-FPM که درخواست‌های هم‌زمان را موازی پردازش می‌کنند، از هسته‌های بیشتر سود می‌برند. برای تخمین کلی منابع، چقدر رم و CPU لازم دارم؟ را بخوانید.

نشانه‌های کمبود vCPU

  • Load Average برای مدت طولانی بیشتر از تعداد vCPUهاست؛
  • مصرف CPU در top به‌طور مداوم نزدیک به حداکثر است؛
  • زمان پاسخ برنامه با افزایش کاربران هم‌زمان به‌سرعت بالا می‌رود.

اگر این نشانه‌ها با st پایین همراه است، کمبود واقعی پردازنده دارید و ارتقا کمک می‌کند. اگر st بالاست، مشکل از میزبان است. روش پیدا کردن پردازهٔ پرمصرف در مصرف بالای CPU در لینوکس آمده است.

root@server: ~
$ nproc2$ lscpu | grep -E 'Model name|^CPU\(s\)|Thread'CPU(s):                  2Thread(s) per core:      1Model name:              ... Processor$ 
شکل ۳ nproc تعداد vCPU و lscpu مدل پردازندهٔ میزبان را نشان می‌دهد.

vCPU در سرورهای ابری کلودیفای

پلن‌های سرور مجازی ایران کلودیفای از ۱ هسته تا ۸ هسته را پوشش می‌دهند و صورتحساب ساعتی است؛ بنابراین می‌توانید با پلن کوچک شروع کنید، مصرف را اندازه بگیرید و در صورت نیاز ارتقا دهید. جدول به‌روز پلن‌ها:

پلنپردازندهرمدیسکساعتی (تومان)ماهانه تقریبی (تومان)
IR-۱۱ هسته۱ گیگابایت۱۰ گیگابایت۱٬۲۰۰۸۷۶٬۰۰۰ساخت
IR-۲۲ هسته۲ گیگابایت۱۵ گیگابایت۲٬۱۰۰۱٬۵۳۳٬۰۰۰ساخت
IR-۳۲ هسته۴ گیگابایت۲۰ گیگابایت۳٬۰۰۰۲٬۱۹۰٬۰۰۰ساخت
IR-۴۴ هسته۴ گیگابایت۳۰ گیگابایت۴٬۲۰۰۳٬۰۶۶٬۰۰۰ساخت
IR-۵۴ هسته۸ گیگابایت۵۰ گیگابایت۶٬۵۰۰۴٬۷۴۵٬۰۰۰ساخت
IR-۶۸ هسته۱۶ گیگابایت۱۰۰ گیگابایت۱۲٬۹۰۰۹٬۴۱۷٬۰۰۰ساخت

قیمت‌ها زنده از سامانهٔ کلودیفای در تاریخ ۱۱ آبان ۱۴۰۵ خوانده شده‌اند. ترافیک دانلود جداگانه، هر گیگابایت ۱٬۲۵۰ تومان؛ آپلود رایگان.

اصطلاحاتی که در مشخصات پلن‌ها می‌بینید

هنگام مقایسهٔ پلن‌ها، با عبارت‌های مختلفی روبه‌رو می‌شوید. Core گاهی به معنای هستهٔ فیزیکی و گاهی همان vCPU به کار می‌رود؛ از ارائه‌دهنده بپرسید منظورش کدام است. Fair Share CPU یعنی پردازنده اشتراکی است و ارائه‌دهنده مصرف پیوستهٔ بسیار بالا را محدود می‌کند. CPU Optimized یا Compute Optimized معمولاً پلن‌هایی با پردازندهٔ سریع‌تر یا هستهٔ اختصاصی برای کارهای پردازشی سنگین است. Burstable هم پلنی است که مصرف کوتاه‌مدت بالا را اجازه می‌دهد اما مصرف پیوسته را با سیستم اعتبار محدود می‌کند.

دانستن این اصطلاحات کمک می‌کند دو پلن با عدد یکسان vCPU را درست مقایسه کنید و از غافلگیری پس از خرید جلوگیری کنید.

vCPU در ویندوز سرور

در سرورهای ویندوزی، Task Manager در تب Performance تعداد پردازنده‌های منطقی (Logical processors) را نشان می‌دهد که همان تعداد vCPU است. ویندوز سرور به‌خاطر رابط گرافیکی و سرویس‌های پس‌زمینه، بخشی از پردازنده را حتی در حالت بیکاری مصرف می‌کند. به همین دلیل برای ویندوز سرور، ۲ vCPU را حداقل منطقی بدانید؛ با ۱ vCPU، به‌روزرسانی‌ها یا آنتی‌ویروس داخلی می‌توانند سرور را برای مدتی تقریباً غیرقابل استفاده کنند.

مجوز نرم‌افزارها و تعداد vCPU

برخی نرم‌افزارهای تجاری، مثل نسخه‌های خاصی از دیتابیس‌ها یا نرم‌افزارهای حسابداری تحت شبکه، مجوز خود را بر اساس تعداد هسته‌ها محاسبه می‌کنند. پیش از خرید سرور با vCPU زیاد، شرایط مجوز نرم‌افزار را بررسی کنید؛ گاهی سروری با vCPU کمتر اما سریع‌تر، هم از نظر کارایی و هم از نظر هزینهٔ مجوز، انتخاب بهتری است.

اشتباه رایج: مقایسهٔ فقط عدد vCPU

بسیاری از خریداران دو پلن را فقط با تعداد vCPU مقایسه می‌کنند و پلنی را انتخاب می‌کنند که عدد بزرگ‌تری با قیمت کمتر دارد. اما همان‌طور که دیدید، نوع پردازنده، اشتراکی یا اختصاصی بودن و میزان شلوغی میزبان، تفاوت‌های بزرگی ایجاد می‌کنند. بهترین راه این است که برنامهٔ واقعی خودتان یا یک بنچمارک ساده را روی هر دو اجرا کنید و نتیجه را در چند زمان مختلف مقایسه کنید. در سرورهای ساعتی، این آزمایش فقط هزینهٔ چند ساعت را دارد.

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

هر vCPU برابر یک هستهٔ واقعی است؟

معمولاً نه. در بیشتر ارائه‌دهندگان، هر vCPU معادل یک رشته (Thread) از یک هستهٔ فیزیکی است و در پلن‌های اشتراکی ممکن است با ماشین‌های دیگر هم تقسیم شود.

۲ vCPU اختصاصی بهتر است یا ۴ vCPU اشتراکی؟

بستگی به بار کاری دارد. برای مصرف پیوسته و حساس به تأخیر، vCPU اختصاصی پایدارتر است. برای بارهای متغیر و کم، vCPU اشتراکی بیشتر می‌تواند به‌صرفه‌تر باشد. با بنچمارک در ساعت‌های مختلف مقایسه کنید.

چرا nproc عدد متفاوتی از پلن نشان می‌دهد؟

اگر nproc کمتر از تعداد پلن است، ممکن است محدودیتی برای پردازه (مثلاً در کانتینر) اعمال شده باشد. lscpu تعداد واقعی vCPU ماشین مجازی را نشان می‌دهد؛ اگر با پلن هم‌خوان نبود، از پشتیبانی بپرسید.

آیا افزایش vCPU سرعت وردپرس را بیشتر می‌کند؟

اگر کاربران هم‌زمان زیاد باشند و CPU پر شود، بله. برای سایت کم‌بازدید، سرعت تک‌هسته‌ای، کش و رم اثر بیشتری از تعداد vCPU دارد.

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.