هنگام خرید سرور مجازی، پردازنده با واحدی به نام vCPU معرفی میشود؛ مثلاً «۴ vCPU». اما یک vCPU دقیقاً چقدر توان دارد و چه رابطهای با هستههای فیزیکی پردازنده دارد؟ در این مقاله توضیح میدهیم vCPU چیست، چه تفاوتی با CPU Core و Thread دارد، Overcommit چیست و چطور توان واقعی پردازنده یک VPS را بسنجید.
فهرست مطالب
Socket، Core و Thread
- Socket: جایگاه فیزیکی پردازنده روی مادربورد. سرورها معمولاً یک یا دو پردازنده دارند.
- Core (هسته): واحد پردازشی مستقل درون پردازنده. پردازندههای سرور امروزی از دهها تا بیش از صد هسته دارند.
- Thread (رشته سختافزاری): با فناوری Hyper-Threading (در اینتل) یا SMT (در AMD)، هر هسته میتواند دو رشته را همزمان اجرا کند. سیستمعامل هر رشته را یک «پردازنده منطقی» میبیند.
یک سرور با دو پردازنده ۳۲ هستهای و SMT فعال، ۶۴ هسته فیزیکی و ۱۲۸ پردازنده منطقی دارد.
vCPU چیست؟
vCPU یا پردازنده مجازی، پردازندهای است که هایپروایزر به یک ماشین مجازی ارائه میدهد. سیستمعامل داخل VPS آن را مثل یک هسته معمولی میبیند. در عمل، هر vCPU هنگام اجرا روی یکی از پردازندههای منطقی (رشتههای سختافزاری) سرور فیزیکی زمانبندی میشود. به همین دلیل بسیاری از ارائهدهندگان هر vCPU را معادل یک رشته سختافزاری میدانند، نه یک هسته کامل.
Hyper-Threading و SMT
دو رشته یک هسته، واحدهای اجرایی آن هسته را به اشتراک میگذارند. وقتی یک رشته منتظر داده از حافظه است، رشته دیگر از هسته استفاده میکند. نتیجه، افزایش توان کلی هسته است، اما نه دو برابر؛ بسته به نوع کار، معمولاً چند ده درصد. پس:
- دو vCPU که روی دو رشته یک هسته اجرا میشوند، کمتر از دو هسته کامل توان دارند.
- یک vCPU که بهتنهایی از یک هسته استفاده میکند، تقریباً توان کامل آن هسته را دارد.
هیچ نسبت ثابتی مثل «دو vCPU برابر یک هسته» وجود ندارد؛ نتیجه به سیاست ارائهدهنده، بار سرور و نوع برنامه بستگی دارد.
زمانبندی vCPU روی هستههای فیزیکی
هایپروایزر، مثل ESXi یا KVM، vCPUهای همه ماشینهای مجازی را روی پردازندههای منطقی سرور زمانبندی میکند. اگر مجموع vCPUهای فعال کمتر از ظرفیت سرور باشد، هر vCPU بلافاصله اجرا میشود. اگر بیشتر باشد، vCPUها باید برای گرفتن نوبت صبر کنند.
Overcommit و Steal Time
Overcommit یعنی ارائهدهنده مجموع vCPUهای بیشتری از پردازندههای منطقی سرور به مشتریان بفروشد، با این فرض که همه همزمان از تمام ظرفیت استفاده نمیکنند. این کار رایج و تا حدی منطقی است، اما اگر بیش از حد باشد، در ساعات شلوغ ماشینها منتظر پردازنده میمانند.
این انتظار در لینوکس با معیار Steal Time اندازهگیری میشود؛ ستون st در خروجی top یا vmstat. اگر Steal Time بهطور مداوم بالاتر از چند درصد است، یعنی ماشین شما سهم پردازندهای را که انتظار دارد، دریافت نمیکند. سرویسهایی مثل VDS با هستههای رزروشده این مشکل را ندارند.
چه چیزی توان یک vCPU را تعیین میکند؟
- نسل و معماری پردازنده: یک هسته نسل جدید میتواند چند ده درصد از هسته چند نسل قبل سریعتر باشد.
- فرکانس: برای برنامههای تکرشتهای مثل بسیاری از سرورهای بازی، بخشی از PHP و برخی دیتابیسها، فرکانس بالا اهمیت زیادی دارد.
- میزان Overcommit: چقدر رقابت برای همان هستهها وجود دارد.
- حافظه کش پردازنده و پهنای باند حافظه: برای دیتابیسها و پردازش داده.
بنابراین «۴ vCPU» در دو ارائهدهنده مختلف میتواند کارایی کاملاً متفاوتی داشته باشد.
چند vCPU لازم دارید؟
| کاربرد | vCPU پیشنهادی |
|---|---|
| سایت کوچک، ربات، سرویس سبک | ۱ تا ۲ |
| فروشگاه یا سایت پرترافیک | ۲ تا ۴ |
| چند سرویس Docker، n8n پرحجم | ۴ |
| Build و CI، دیتابیس فعال | ۴ تا ۸ |
| سرور بازی پرجمعیت، پردازش ویدیو | ۸ و بیشتر، با فرکانس بالا |
توجه کنید که برنامهای که فقط از یک رشته استفاده میکند، با افزایش تعداد vCPU سریعتر نمیشود؛ برای آن، کیفیت و فرکانس هسته مهم است. راهنمای کامل انتخاب منابع در راهنمای انتخاب VPS.
سنجش پردازنده VPS
lscpu # مدل پردازنده و تعداد vCPU
nproc # تعداد پردازندههای قابل استفاده
vmstat 5 12 # ستون st = Steal Time در یک دقیقه
sudo apt install -y sysbench
sysbench cpu --threads=1 run
sysbench cpu --threads=$(nproc) run
نتیجه sysbench با یک رشته، کیفیت تکهسته را نشان میدهد و با همه رشتهها، توان کلی را. تست را در ساعات مختلف تکرار کنید؛ نوسان زیاد نشانه رقابت بر سر پردازنده است.
سوالات متداول
آیا یک vCPU برابر با یک هسته فیزیکی است؟
معمولاً نه؛ بیشتر ارائهدهندگان هر vCPU را معادل یک رشته سختافزاری میدانند. توان واقعی به نسل پردازنده، فرکانس و میزان اشتراک هستهها بستگی دارد.
Steal Time چقدر طبیعی است؟
مقادیر نزدیک صفر ایدهآل است. چند درصد گهگاهی قابل قبول است، اما Steal Time مداوم بالا یعنی ماشین شما بهاندازه کافی پردازنده دریافت نمیکند.
بیشتر بودن vCPU همیشه بهتر است؟
فقط برای برنامههایی که از چند رشته استفاده میکنند. برای برنامههای تکرشتهای، کیفیت و فرکانس هسته مهمتر از تعداد است.
تفاوت vCPU در VPS و VDS چیست؟
در VPS، vCPUها معمولاً روی هستههای مشترک زمانبندی میشوند؛ در VDS، هستهها رزرو میشوند و کارایی پایدارتر است. مقایسه در تفاوت VPS و VDS.
سرور مجازی با پردازنده مناسب کار شما
پلنهای سرور مجازی و VDS تراست هاست را بر اساس نیاز پردازشی خود مقایسه کنید.