محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

vCPU چیست؟ بررسی مفهوم CPU مجازی در VMware به زبان ساده

یک Virtual CPU یا پردازنده مجازی که آن را به عنوان Virtual Processor هم ممکن است ببینیم در واقع یک CPU فیزیکی است که به یک ماشین مجازی یا Virtual Machine اختصاص یافته است. بصورت پیشفرض به هر Virtual Machine یک vCPU اختصاص داده می شود ولی اگر سیستم Host شما دارای چندین CPU فیزیکی باشد یا تعداد Core های CPU شما بالا باشد ، شما می توانید به VM های خودتان بیشتر از یک vCPU را اختصاص بدهید ، به vCPU در اصطلاح Logical Processor هم گفته می شود .

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

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

vCPU چیست

با اضافه شدن vCPU های جدید طبیعتا زمانبندی و همچنین هدایت کردن درخواست ها بین slot های فیزیکی CPU و تقسیم وظایف بین vCPU ها و هماهنگ کردن آنها با CPU فیزیکی سیستم بسیار بسیار سخت می شودو همین موضوع باعث می شود کارایی سیستم بعضا نه تنها زیاد نشود بلکه کم هم می شود. قبلا در قسمت سخت افزار ITPRO در خصوص اضافه کردن CPU های فیزیکی به سیستم صحبت کردیم ، گفتیم اگر دو عدد CPU داشته باشید که برای مثال دارای قدرت پردازشی 2000 گیگاهرتز باشند ، سرعت پردازشی شما 4000 گیگاهرتز نمی شود زیرا تقریبا نصب قدرت پردازشی پردازنده دوم به تقسیم بندی و مدیریت پردازش ها بر روی دو CPU اختصاص می یابد و به سیستم کاری ندارد.

در VMware پردازنده مجازی یا vCPU ها در واقع قسمتی از Symmetric Multiprocessing یا SMP هستند. SMP این امکان را به thread ها می دهد که بین هسته های فیزیکی یا مجازی پردازنده تقسیم شوند و با اینکار کارایی پردازشی سیستم بسیار زیاد می شود و به نوعی پردازش موازی را برای ما فراهم می کنند. vCPU ها اجازه می دهند که فرآیند Multitasking یا چند وظیفگی بر بتواند بصورت پشت سر هم بر روی هسته های مختلف پردازنده در محیط های Multi-Core پردازش شوند. البته همیشه vCPU به معنی استفاده از CPU در محیط های مجازی سازی نیست . در محیط های پردازش موازی یا Parallel Processing که پارامترهای پردازشی به غیر از پردازنده وجود دارد ، زمانیکه صحبت از Virtual Processor می شود در واقع ما در خصوص یک Simulated Processor یا یک پردازنده شبیه سازی شده صحبت می کنیم.

از چه تعداد vCPU می توان بر روی یک VM استفاده کرد ؟

یک VM اگر بر روی نسخه Standard از ESX یا ESXi را نصب شده باشد ، حداکثر می تواند از 4 عدد vCPU استفاده کند و و این بر اساس لایسنسی است که VMware برای استفاده در ESXi تعیین کرده است در نسخه Enterprise شما می توانید تا 8 عدد vCPU برای هر VM در نظر بگیرید. تعداد vCPU هایی که شما به VM های خود اختصاص می دهید کاملا بستگی به Load کاری دارد که بر روی VM وجود دارد. در ESXi یک vCPU برای انجام پردازش ها به یک هسته واقعی از CPU فیزیکی سیستم Map می شود.

این بدین معنا است که اگر یک VM به گونه ای پیکربندی شود که از 1 عدد vCPU استفاده کند که این vCPU به یک CPU 4 هسته ای متصل شده باشد ، هیچوقت نمی تواند بیشتر از یک چهارم قدرت پردازشی CPU اصلی را در اختیار بگیرد. اگر بخواهیم ساده تر بگوییم باید توجه کنید که هر چقدر تعداد vCPU های شما بیشتر شود بسته به نوع عملکرد سیستم شما ممکن است کارایی سیستم شما حتی کاهش هم پیدا کند و اضافه کردن vCPU های جدید فقط بار کاری سرور شما را بالا می برد.

وب سایت توسینسو

آیا یک vCPU الزاما به معنی یک CPU فیزیکی است ؟

این سئوالی است که ممکن است برای بسیاری از دوستان پیش بیاید. دقت کنید که یک برآورد ساده معمولا وجود دارد که می گوید هر vCPU در واقع به معنی یک هسته از یک Physical CPU است. حال اگر CPU های شما دارای هسته نباشند بنابراین هر vCPU برابر یک CPU فیزیکی قدرت پردازشی خواهد داشت . امروزه اکثر CPU ها بصورت چند هسته ای هستند و بعضا دیگر چیزی به نام CPU بدون هسته وجود ندارد. دقت کنید که این تعریف همیشه هم درست نیست ، با توجه به اینکه vCPU ها از time slot هایی ایجاد می شوند که بر روی همه هسته های فیزیکی موجود بر روی CPU فیزیکی تشکیل می شوند.

در واقع قدرت پردازشی یک vCPU از یک هسته فیزیکی CPU بالاتر است ، به ویژه زمانیکه CPU شما دارای 8 هسته باشد. VMware به گونه ای طراحی شده است که اجازه بدهد هر VM بتواند از قسمت خاصی از Core Clock Time هر CPU با استفاده از الگوریتم های بسیار پیچیده استفاده کند که ما آن را CPU Scheduler می نامیم. در یک شبکه cloud بسیار بزرگ اگر به اندازه لازم منابع پردازشی CPU وجود نداشته باشد و مثلا پردازش CPU های VM ها روی 100 درصد قرار بگیرد ، VM بلافاصله می تواند با استفاده از تکنولوژی های DRS و VMotion بر روی Host دیگری قرار بگیرد که محدودیت منابع CPU نداشته باشد و براحتی به سرویس دهی خود ادامه دهد.

فرض کنید در محیط Cloud شما دو عدد Host دارید که یکی از آنه دارای پردازنده فیزیکی 8 هسته ای است و دیگری دارای پردازنده فیزیکی 4 هسته است ، VM شما زمانیکه بر روی Host با پردازنده 4 هسته ای قرار می گیرد قدرت پردازشی اش کاهش پیدا می کند و در چنین مواردی شما می توانید VM را بر روی Host با پردازنده 8 هسته ای VMotion کنید تا از 1 عدد vCPU شما اینبار از 8 هسته بتواند استفاده کند. توسینسو باشید


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات