خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


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

vCPU چیست و چگونه می توان vCPU را به CPU محاسبه کرد؟
vCPU یا virtual processor چیست و چگونه با CPU مقایسه می شود؟ این سوال یکی از مهمترین سوالاتی است که مشتریان در خرید سرورهای فیزیکی و یا سرویس های مبتنی بر Cloud از فروشندگان سوال می کنند و درصدد یافتن جواب و درک آن هستند.

نرم افزار سامانه مودیان راهکار
در این مقاله، ما به بررسی چیستی vCPU و همچنین تفاوت‌های بین vCPU و CPUهای سنتی می‌پردازیم. ما همچنین به ریاضیات پشت vCPU ها و نحوه محاسبه تعداد vCPU ها و هسته ها نگاه خواهیم کرد. اشاره سریع، به این راحتی ها نیست که بگوییم یک هسته یا Core برابر با یک vCPU است.



vCPU چیست؟

پیش از شروع مبحث، اصلا ببینیم که خودِ vCPU چیست. vCPU مخفف عبارت virtual centralized processing unit یا Virtual CPU است. برای تعریف، یک vCPU نشان دهنده بخش یا سهمی از CPU فیزیکی است که به یک ماشین مجازی خاص (VM) اختصاص داده شده است. در خصوص vCPU به لینک زیر هم می توانید مراجعه کنید.


در ادامه، اجازه دهید چند اصطلاح و تعاریف دیگر در رابطه با سرورهای مجازی را مرور کنیم. سرورهای مجازی شامل hypervisor، socket، thread، physical core و logical core هستند. حالا در ادامه می خواهیم ببینیم که vCPU چگونه کار می کند و یا اینکه چگونه vCPU را محاسبه کنیم.

Hypervisor

Hypervisor چیست؟ به Hypervisor به چشم یک کنترلر یا کنترل کننده نگاه کنید. البته اصطلاحات دیگری هم برای Hypervisor استفاده می شود. مثلا Hypervisor شرکت Vmware به نام esxi می باشد که بدان Bare-metal و حتی Vmm یا virtual machine monitor گفته می شود. به بیان ساده، Hypervisor نرم افزاری است که برای ایجاد و اجرای ماشین های مجازی (VM) استفاده می شود. Hypervisor اجازه می دهد تا سرور هاست با به اشتراک گذاری مجازی منابع خود مانند حافظه و CPU و حتی استوریج و Network، از چندین VM مهمان پشتیبانی کند. هایپروایزرها به اندازه کافی smart و باهوش هستند که می توانند منابع را چه یک vCPU منفرد و چه vCPU های متعدد را به VM ها تخصیص دهند.


Socket

Socket چیست؟ وقتی به عبارت Socket مرسید شاید می خواهید که به سخت افزار فکر کنید یا به عبارت دیگر بحث سخت افزار از ذهن تان می گذرد. من می خواهم تعداد سوکت های یک مادربرد را تصور کنید. سوکت مجموعه ای از پین ها است که پردازنده را در جای خود نگه می دارد و مادربرد را به منابع پردازشی موجود متصل می کند. تعداد سوکت ها بر اساس ظرفیت مادربرد تعیین می شود چون مادربردهای سررها می توانند چندین CPU Socket داشته باشند.
بسته به اینکه از کدام نسل CPU پشتیبانی می کند، تفاوت هایی در سوکت ها وجود دارد.

Thread

Thread چیست؟ thread یا رشته مسیری برای اجرا در یک فرآیند(process) است. یک فرآیند شامل یک یا چند رشته است. حالا تفاوت بین یک thread و یک process چیست؟ تفاوت اصلی این است که رشته‌های درون یک فرآیند در فضای مموری مشترک اجرا می‌شوند، در حالی که فرآیندها در فضای مموری جداگانه اجرا می‌شوند.

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


Thread همچنین به عنوان یک فرآیند سبک یا lightweight process شناخته می شود. مفهوم موازی سازی، تقسیم یک فرآیند به چند thread یا multiple threads است. به عنوان مثال، باز بودن چندین تب در یک مرورگر نشان دهنده thread های مختلف است. یا برای پردازش word می توان چندین thread مانند یک رشته برای فرمت بندی متن و رشته دیگر برای پردازش ورودی ها وجود داشته باشد.

Physical Core

physical core یا هسته فیزیکی چیست؟ یک هسته فیزیکی که به آن واحدهای پردازش در CPU نیز گفته می شود. یک هسته فیزیکی به یک چند هسته لاجیکال تقسیم شده باشد(CPU باید از قبلیت Hyper threading پشتیبانی کند). در پاراگراف بعدی به این خواهیم رسید که هسته منطقی یا لاجیکال چیست.

Logical Core

logical core یا هسته منطقی چیست؟ یک هسته منطقی این امکان را به یک هسته فیزیکی می دهد که دو یا چند عمل را به طور همزمان انجام دهد. هسته های منطقی از روزهای اول پردازنده های سرور Intel Xeon و پردازنده های دسکتاپ Pentium 4 که در سال 2002 منتشر شدند، به وجود آمدند. هسته های منطقی مفهوم hyper-threading (HTT) را ممکن کردند. Hyper-threading پیاده سازی چند رشته ای همزمان اختصاصی اینتل(simultaneous multithreading implementation) است و برای بهبود موازی سازی محاسبات انجام شده بر روی ریزپردازنده های x86 استفاده می شود.
چرا hyper-threading برای مجازی سازی مهم است؟ قبل از HTT، sub-component های هسته برای انواع خاصی از دستورالعمل‌ها استفاده نمی‌شد و می‌توانست برای دستورالعمل های طولانی‌مدت استفاده شود. HTT این امکان را برای CPU فراهم کرد که همزمان روی دو Task کار کند.
هسته های جدیدتر بیشتر شبیه CPU های کامل هستند بنابراین می توانند چندین کار را به طور همزمان انجام دهند. ولی مانند هسته های فیزیکی CPU واقعی نیستند. ر مقایسه با قابلیت های فیزیکی هسته، محدودیت هایی برای hyper-threading وجود دارد.

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

سرورهای مجازی و تخصیص منابع آنها توسط چیزی که به عنوان Hypervisor شناخته می شود کنترل می شود. ما Hypervisor را با جزئیات بیشتری در بالا تعریف کردیم. Hypervisor از بخشی از منابع محاسباتی CPU فیزیکی استفاده می کند و آن را به یک vCPU اختصاص می دهد که به یک VM خاص اختصاص داده شده است. ادمین ها می توانند از هایپروایزرها برای تخصیص منابع مختلف در جایی که ماشین های مجازی خاص با قابلیت های ویژه vCPU پیکربندی شده اند استفاده کنند.

محاسبه کردن vCPU

چگونه vCPU را محاسبه می کنید؟ چند vCPU در یک CPU وجود دارد؟ Core ها چه هستند؟ این سوالات برای کسانی که با سرورهای مجازی سازی شده آشنایی ندارند می تواند تا حدودی نامشخص باشد. ما به جزئیات ریاضیات خواهیم پرداخت و شما ایده روشنی از نحوه محاسبه تعداد vCPU های مورد نیاز برای ماشین های مجازی خود خواهید داشت. بسیاری از این موارد به نیازهای خاص شما و سازنده بستگی دارد.

ریاضیات محاسبه vCPU

در گذشته، قانونی بود که در هر هسته هشت vCPU وجود دارد. امروزه تعداد vCPU تا حد زیادی توسط سازنده تعیین می شود. با در نظر گرفتن تعداد رشته های پردازشی که یک chipset در هر هسته ارائه می دهد و ضرب تعداد سوکت های اشغال شده، محاسبه vCPU انجام می شود.

(Threads x Cores) x Physical CPU = Number vCPU

یک مثال برای محاسبه vCPU و Cores
بهترین راه برای یادگیری نحوه محاسبه vCPU و Core ها، نشان دادن آن از طریق یک مثال است. ابتدا باید سرور مجازی و CPU را انتخاب کنیم. برای این مثال، Intel Xeon E-2288G را به عنوان CPU اصلی انتخاب می کنیم. Intel Xeon E-2288G شامل 8 هسته / 16 رشته بوده و سرعت 3.7 گیگاهرتز و با turbo boost برابر با 5.0 گیگاهرتز است. cache آن هم برابر با 16 مگابایت است.

(16 Threads x 8 Cores) x 1 CPU = 128 vCPU

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


4 vCPUs per VM
128 vCPUs/4 vCPUs per VM = 32 VMs



2 vCPUs per VM
128 vCPUs/2 vCPUs per VM = 64 VMs



1 vCPUs per VM
128 vCPUs/1 vCPUs per VM = 128 VMs


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز