یک Virtual CPU یا پردازنده مجازی که آن را به عنوان Virtual Processor هم ممکن است ببینیم در واقع یک CPU فیزیکی است که به یک ماشین مجازی یا Virtual Machine اختصاص یافته است. بصورت پیشفرض به هر Virtual Machine یک vCPU اختصاص داده می شود ولی اگر سیستم Host شما دارای چندین CPU فیزیکی باشد یا تعداد Core های CPU شما بالا باشد ، شما می توانید به VM های خودتان بیشتر از یک vCPU را اختصاص بدهید ، به vCPU در اصطلاح Logical Processor هم گفته می شود .
اگر از سرویس دهنده های Cloud استفاده کرده باشید و یا ساده تر از آن از سرویس های هاستینگ اختصاصی یا مجازی استفاده کرده باشید ، باید بدانید که هزینه های مربوط به قدرت پردازشی در محیط cloud و یا سرورهای مجازی چگونه محاسبه می شود و صورتحساب شما چگونه صادر می شود. این برای یک مدیر شبکه بسیار مهم است که درک کند با اضافه کردن یک 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 هسته بتواند استفاده کند. توسینسو باشید
ایا منطقی بر این که توان دو باشه داره؟ توی یکی از داکیومنت های vmware ، فقط گفته بود که سعی بشه تعداد vcpu ها از logic process ها بالاتر نره و چیز خاص دیگه ای ب چشمم نخورد.اما توی برخی محیط های کلود که نگاه کردم مقداری cpu هایی که گاها به صورت پک ارایه میدن توان دو (4 ، 8 ، 16 و..) هست.
و برای تعداد سوکت ها چی ؟ اینکه روی ی تک سوکت قرار داده بشه یا دو تا ، روی performance تاثیر خاصی میزاره؟
سلام ، این چیزی نیست که جوابش بله یا خیر باشه ... شدنش میشه ... توصیه این هست که زوج باشه
سلام استاد
آیا میزان تخصیص cpu در ماشین های مجازی میتونه فرد باشه ی نفر میگفت بهتر توان 2 باشه ؟ وآیا تفاوتی میکنه که ما برای تخصیص همه coreها رو روی ی سوکت بزاریم یا روی دو تا یا بیشتر؟
لطفا سئوالتون رو از طریق سئوال بپرسید مطرح کنید سپاسگزارم
من در فهم این دو مفهوم در تعریف مقدار سی پی یو برای ماشین مجازی در v,ware موندم.
virtual socket و core per virtual socket. اگه اشتباه نکنم اولی یعنی تعداد سی پی یو و دومی یعنی تعداد هسته.
حالا مثلا من یه سرور اختصاصی دارم با cpu 4c/8t. در تنظیمات ساخت ماشین مجازی برای اینکه total number core رو به 8 برسونم دو تنظیم هست:
1- 4=virtual socket و 4=core per virtual socket
2- 2=virtual socket و 4=core per virtual socket
خب حالا تقاوت این دو در چیه؟ و در عمل چه فرقی با هم داره و راندمان کدوم بهتره؟
یه مقدار بیشتر به متن دقت کنید ، درسته در قسمت اول گفتیم نمیشه بیشتر استفاده کنه اما بعد اومدیم گفتیم که تکنولوژی مجازی سازی جدید با استفاده از مکانیزمی به نام CPU Scheduler این امکان رو میده به VM که در صورت نیاز بیاد و از منابع هسته های بیشتر استفاده کنه ، ما با روند پیشرفت تکنولوژی این موارد رو عنوان کردیم ، هر چند این موارد بایستی در کنار قابلیت هایی مثل DRS پیاده سازی بشن.
ممنون ولی شما توی مثال آخر این شرایط رو ذکر نکردید در ضمن من فوکوسم روی عبارت «از هر 8 هسته استفاده کند» هست در حالی که بیان اولی میگه یک چهارم یعنی یکی از 4 هسته پس دومی هم باید باشه یکی از 8 هسته. چرا میشه هر 8 هسته؟
من توی این مباحث سررشته ای ندارم فقط به خاطر آماری که باید تکمیل کنم نیاز دارم بدونم vcpu چی هست و چه جوری حساب میشه . شاید به خاطر همین منظور شما رو درک نمی کنم
خوب این برداشت شما کاملا درست هست ، اما دقت کنید ما قرار هست روی سرورهای HP و CPU های سری Xeon عملیات VMotion انجام بدیم ، این سری CPU ها اینقدر قدرتمند هستند که حتی شما اگر مثلا از یک CPU دارای 32 هسته هم استفاده کنید یعنی یک سی و دوم رو استفاده کنید بعضا قدرتشون خیلی خیلی بیشتر از هر 4 هسته CPU ای هست که داخل یک CPU پنتیوم هست ، اینجوری بهتر میشه متوجه شد ، یه مثال ساده ، شما یک درصد گوگل رو بیشتر دوست دارید یا 90 درصد شرکت تخمه آفتابگردان سنجابک ؟ کدومشون قدرت بیشتری داره و ارزش بیشتری داره ؟ با اینکه به نظر میرسه 90 درصد زیاد هست اما در واقعیت اینجوری نیست.
من یه چیزی رو متوجه نشدم شما یه جا گفتین:
این بدین معنا است که اگر یک VM به گونه ای پیکربندی شود که از 1 عدد vCPU استفاده کند که این vCPU به یک CPU 4 هسته ای متصل شده باشد ، هیچوقت نمی تواند بیشتر از یک چهارم قدرت پردازشی CPU اصلی را در اختیار بگیرد.
و یه جا هم آخرین خط گفتید:
شما زمانیکه بر روی Host با پردازنده 4 هسته ای قرار می گیرد قدرت پردازشی اش کاهش پیدا می کند و در چنین مواردی شما می توانید VM را بر روی Host با پردازنده 8 هسته ای VMotion کنید تا از 1 عدد vCPU شما اینبار از 8 هسته بتواند استفاده کند.
در مثال دوم اگه بر اساس تفسیر اولی تفسیر کنیم یک عدد VCPU در سیستم با پردازنده 8 هسته ای تنها از یک هشتم قدرت اصلی cpu فیزیکی استفاده می کنه درحالی که در سیستم 4 هسته ای از یک چهارم قدرت cpu استفاده میشه پس باید ماشین مجازی با یک vCPU در یک سیستم با پردازنده 8 هسته ای ضعیفتر از یک سیستم با پردازنده 4 هسته ای عمل کنه اما جمله آخر شما عکس این تفسیر رو بیان می کنه.
میشه توضیح بدین من گیج شدم به تناقض رسیدم
خیلی ممنون از لینکی که عنوان کردید ، بخشی از مطلب از این پاراگراف وب سایت Techtarget مطالعه شده طبیعتا ما چیزی رو از خودمون در نمیاریم ، وقتی مطلبی در وب سایت ما منتشر میشه از حداقل دو تا سه مطلب زبان اصلی برداشت میشه ، اگر کسی درخواست مرجع اصلی رو داشت بهش معرفی می کنیم اما طبیعتا ما مرجع فارسی زبانان هستیم ، اگر قرار بود کارشناسی انگلیسی جستجو کنه وارد این وب سایت نمی شد با تشکر ... موفق و پیروز باشید