با اینکه کامپیوترهای مدرن بسیار قدرتمندتر از گذشته هستند، اما سرعت و عملکرد آنها اغلب توسط اجزای سختافزاری پردازشی مانند سی پی یوها، محدود میشوند. در سالهای اخیر، سی پی یوهای مجازی بهعنوان راهحلی برای این مشکل ظهور کردند تا محاسبات سریعتر و کارآمدتری را ممکن سازند. در واقع، پردازندههای مجازی بخشی از یک CPU فیزیکی بزرگتر هستند، که به سرورهای مجازی اجازه میدهند تا سیستمعامل خود و برنامههای کاربردی را مانند یک ماشین فیزیکی اجرا کنند. این فناوری امکان استفاده بهتر از منابع سختافزاری را فراهم میکند و قادر است عملکرد کامیپوترها و سرورها را به میزان قابل توجهی بهبود ببخشد.
در این مقاله از مجله لیپک، ما به بررسی مفهوم vCPU و تفاوتهای آن با سی پی یوهای سنتی میپردازیم. همچنین، نحوه کارکرد، هستهها و تأثیرشان بر کارآمدی سیستمهای کامپیوتری را توضیح میدهیم.
- نکته: اگر در مورد پردازنده یا CPU به اطلاعات کافی ندارید، پیشنهاد میکنیم ابتدا مقاله پردازنده یا CPU چیست؟ را مطالعه کنید.
آنچه در این مقاله میخوانید:
Toggleمفهوم CPU مجازی
CPU مجازی یا vCPU، بخشی از یک CPU فیزیکی است که به یک ماشین مجازی اختصاص داده میشود. ماشینهای مجازی (VM) نوعی برنامههای نرمافزاری هستند، که رفتار یک کامپیوتر فیزیکی را تقلید میکنند و معمولاً در محاسبات ابری و مجازیسازی استفاده میشوند. در نتیجه، با ایجاد سی پی یوهای مجازی در داخل یک ماشین مجازی، میتوان چندین سیستم غیر فیزیکی را روی یک سرور فیزیکی واحد اجرا کرد.
تعداد هستهها و رشتههای مختلف سی پی یوهای مجازی را میتوان بسته به نیاز برنامهای که در حال اجراست، پیکربندی کرد. هسته (Core) واحد پردازش فیزیکی در یک CPU است، در حالی که رشته (Thread) یک واحد پردازش مجازی است که در یک هسته ایجاد میشود. با استفاده از چندین هسته و رشته، میتوان عملکرد ماشین مجازی را بهبود بخشید و اطمینان حاصل کرد که توان انجام چندین کار را بهطور همزمان دارد.
روشهای مجازیسازی پردازنده
سیستمهای پردازشی معمولاً به دو روش زیر مجازیسازی میشوند:
- مبتنی بر نرمافزار: این شیوه مجازیسازی که به نرمافزار متکی است، امکان اجرای کد برنامهها را روی پردازنده فراهم میآورد. در این روش، کد مورد نظر به وسیله نرمافزاری که بر روی پردازنده نصب شده اجرا میگردد. این فرآیند به برنامهها اجازه میدهد تا بدون نیاز به سختافزار اختصاصی، در محیطی مجازی به کار خود ادامه دهند.
- با کمک سختافزار: سختافزار معینی وجود دارد که به منظور حمایت از فرآیند مجازیسازی پردازنده، از تکنولوژیهای خاصی بهره میبرد. این سختافزار با استفاده از قابلیتهای پیشرفته، به اجرای دستورات داده شده به سیستم با سرعتی فراتر از آنچه انتظار میرود، کمک میکند.
مزایای CPU مجازی
سی پی یوهای مجازی به یک فناوری ضروری برای محاسبات ابری و مجازیسازی تبدیل شدهاند و میتوانند مزایای بسیاری از جمله بهبود عملکرد، کارایی بیشتر و انعطافپذیری بالاتر را ارائه دهند. برخی از مهمترین مزایای این پردازندههای مجازی را در زیر آوردهایم.
- کاهش هزینه: vCPU با مدیریت درست منابع و اطمینان از استفاده مؤثر، به کاهش هزینههای اجرای یک مرکز داده یا سرویس رایانش ابری کمک میکند.
- بهرهوری بیشتر: ایجاد چندین ماشین مجازی بر روی یک سرور فیزیکی، امکان استفاده بهینه از منابع سختافزاری را فراهم میکند. زیرا برای اجرای همان تعداد برنامه به سرورهای فیزیکی کمتری نیاز است.
- انعطافپذیری بیشتر: با ماشینهای مجازی میتوان برنامهها را ایزوله کرد و امنیتشان را بهبود بخشید. این امر، موجب کاهش خطر نقض امنیت و محافظت بیشتر از دادههای حساس میشود.
محدودیتهای CPU مجازی
پردازندههای مجازی علاوهبر مزایای زیاد، محدودیتهایی نیز دارند که میتواند بر عملکرد سیستمها تأثیر بگذارد. در این بخش به برخی از محدودیتهای سی پی یوهای مجازی میپردازیم.
- قدرت پردازش اضافی
نرمافزار مجازیسازی قدرت پردازش بیشتر (Overhead) را به سیستم اضافه میکند. این ویژگی بهخصوص، برای برنامههایی که نیاز به تأخیر کم و عملکرد بالا دارند، بسیار مهم است. اما اورهد میتواند به کاهش عملکرد سیستم نیز بیانجامد، زیرا قدرت پردازشی مورد نیاز برای مدیریت ماشینهای مجازی، میزان قدرت پردازش در دسترس برنامهها را کاهش میدهد.
- مشکلات تخصیص منابع
در برخی موارد، تخصیص منابع مناسب به ماشینهای مجازی چالشبرانگیز میشود. بهطوری که تخصیص منابع کم به یک ماشین عملکرد آن را کاهش میدهد و از سوی دیگر تخصیص منابع زیاد، موجب هدررفت وقت و انرژی زیادی میگردد.
- تنگناهای ورودی/خروجی
نرمافزار مجازیسازی با ایجاد گلوگاههای ورودی/خروجی، بر عملکرد سیستم تأثیر میگذارد. تنگناهای ورودی/خروجی زمانی اتفاق میافتند که چندین ماشین مجازی برای منابع فیزیکی یکسان مانند پهنای باند شبکه یا ورودی/خروجی دیسک، با هم رقابت میکنند. این مسائل منجر به کاهش زمان پاسخ و عملکرد ضعیف میشود.
- صدور مجوز
یکی دیگر از محدودیتهای پردازندههای مجازی، صدور مجوز است. برخی از فروشندگان نرمافزار بر اساس تعداد پردازندههای فیزیکی در یک سیستم، به مجوز نیاز دارند.
اجزای تشکیلدهنده vCPU
برای درک کامل مزایای سی پی یوهای مجازی، مهم است که ابتدا، چندین اصطلاح مرتبط را که شامل هایپروایزر، سوکت، رشته، هسته فیزیکی و هسته منطقی میشوند، با هم مرور کنیم.
هایپروایزر (Hypervisor)
به بیان ساده، یک هایپروایزر نرمافزاری است که برای ایجاد و اجرای ماشینهای مجازی (VM) استفاده میشود. هایپروایزر به کامپیوتر میزبان اجازه میدهد تا با به اشتراکگذاری مجازی منابع خود مانند حافظه و پردازش، از چندین VM مهمان پشتیبانی کند. هایپروایزرها به اندازه کافی باهوش هستند که منابع اختصاص داده شده با vCPU منفرد را از چندین vCPU تخصیص دهند.
سوکت (Socket)
سوکت به مجموعهای از پینها گفته میشود که پردازنده را در جای خود نگه میدارد و مادربرد را به توان پردازشی موجود متصل میکند. تعداد سوکتها بر اساس ظرفیت مادربرد تعیین میشوند و بسته به نسل CPU استفاده شده، دارای تفاوتهایی هستند.
مقاله مرتبط: انواع سوکت مادربرد
رشته (Thread)
هر پروسه شامل یک یا چند رشته میشود. در واقع، رشتههای یک فرآیند در فضای حافظه مشترک و فرآیندها در فضای حافظه جداگانه اجرا میشوند. همچنین، از رشتهها برای انجام فعالیتهای موازی و سبک نیز استفاده میشود. بهعنوان مثال، باز بودن چندین تب در یک مرورگر نشاندهنده رشتههای مختلف است؛ یک رشته برای قالببندی متن و رشته دیگر برای پردازش ورودیها.
هسته فیزیکی (Physical Core)
هسته فیزیکی که به آن واحد پردازش در CPU نیز گفته میشود، تمام عملکردهای یک پردازنده را انجام میدهد و ممکن است با یک یا چند هسته منطقی مرتبط باشد.
هسته منطقی (Logical Core)
هسته منطقی این امکان را برای هسته فیزیکی منفرد فراهم میکند، که دو یا چند عمل را بهطور همزمان انجام دهد. هستههای منطقی از روزهای اولیه انتشار پردازندههای سرور Intel Xeon و پردازندههای دسکتاپ Pentium 4 در سال 2002، بهوجود آمدند.
یک هسته فیزیکی منفرد با hyper-threading برای یک سیستمعامل به شکل دو هسته منطقی بهنظر میرسد. بنابراین هستههای منطقی، تعداد هستههای فیزیکی ضرب در تعداد رشتههایی است که میتوانند روی هر هسته با استفاده از hyper-threading اجرا شوند. برای مثال، اگر 2 هسته فیزیکی با 2 رشته در هر هسته وجود داشته باشد، سیستم در مجموع شامل 4 هسته منطقی است.
موارد استفاده از CPU مجازی
- پردازش ابری: وجود پردازندههای مجازی برای امکان اجرای چندین ماشین مجازی (VMs) روی سختافزار فیزیکی مشترک، در محیطهای ابری ضروری است. این کار به ارائهدهندگان خدمات ابری اجازه میدهد، تا منابع محاسباتی مقیاسپذیر و انعطافپذیری را برای مشتریان خود فراهم کنند.
- توسعه و آزمایش: توسعهدهندگان معمولاً از vCPU برای ایجاد محیطهای ایزوله جهت توسعه و آزمایش نرمافزارها استفاده میکنند تا مطمئن باشند که فرآیند تست با سیستم میزبان یا سایر برنامهها تداخل نخواهد داشت.
- بازیابی پس از پیشآمدهای ناگوار: پردازندههای مجازی به کسبوکارها اجازه میدهند تا در صورت خرابی سختافزار، ماشینهای مجازی را به سرعت راهاندازی کنند و با تدام تجارت، زمان خرابی را به حداقل برسانند.
- زیرساخت دسکتاپ مجازی (VDI): در تنظیمات VDI، سی پی یوهای مجازی قادر به ایجاد دسکتاپ مجازیای هستند، که کاربران میتوانند از راه دور به آنها دسترسی داشته باشند. این توانایی، بهویژه برای سازمانهایی که نیروی کار فریلنسر و پراکنده دارند، بسیار کاربردی است.
- ادغام سرور: با استفاده از vCPU، سازمانها میتوانند چندین سرور فیزیکی را در ماشینهای مجازی کمتری ادغام کنند و هزینههای سختافزاری را کاهش دهند. این مسأله در پایگاههای داده که بهینهسازی منابع اهمیت زیادی دارد، بیشتر مورد استفاده قرار میگیرد.
- تعادل بار سرورها: vCPU به توزیع بار کاری در چندی ماشین مجازی کمک کرده و عملکرد بهینه را با جلوگیری از تأخیر اجرای دستورها تضمین میکند.
نحوه کار CPU مجازی
کامپیوترها برای عملکردها و اجرای دستورها به سه منبع اصلی نیاز دارند: ذخیرهسازی (Disk Space)، حافظه (RAM) و محاسبه (CPU). در یک سیستم مجازی، هایپروایزر ماشینهای مجازی مهمان (Guest VMs) را مدیریت میکند و به آنها میگوید که به چه مقدار منابع مجازی دسترسی دارند. سپس هایپروایزر تقاضا را از VM مهمان برای سختافزار فیزیکی زمانبندی میکند.
محاسبه vCPU
در گذشته، یک قانون سرانگشتی وجود داشت که بیان میکرد در هر هسته هشت vCPU وجود دارد. امروزه، تعداد vCPU تا حد زیادی توسط سازنده تعیین میشود. یا به عبارتی، با در نظر گرفتن تعداد رشتههای پردازشی که یک چیپست در هر هسته ارائه میدهد و ضرب تعداد سوکتهای اشغال شده محاسبه میگردد.
(رشتهها x هستهها) CPU فیزیکی = تعداد vCPU
بهترین راه برای یادگیری نحوه محاسبه vCPU و هستهها، نشان دادن یک مثال است:
ابتدا باید سرور مجازی و CPU را انتخاب کنیم. برای این مثال، ما Intel Xeon E-2288G را بهعنوان CPU اصلی در نظر میگیریم. اجزای کلیدی برای Intel Xeon E-2288G شامل 8 هسته/16 رشته با کلاک پایه 3.7 گیگاهرتز و تقویت توربو 5.0 گیگاهرتز میشود. 16 مگابایت حافظه داخلی نیز در کنار این مجموعه وجود دارد.
(16 Threads x 8 Cores) x 1 CPU = 128 vCPU
عدد بدست آمده، تعداد سی پی یوهای مورد نیاز برای این سرور مجازی است.
تعیین حجم کار و استفاده شخصی
توانایی سرورها در ارائه ماشینهای مجازی بستگی به میزان استفاده از CPU دارد. برای مثال، یک سرور با 8 هسته میتواند بین 20 تا 30 ماشین مجازی کوچک را که نیاز کمی به CPU دارند، پشتیبانی کند. اما، در مواردی که بار کاری سنگینتر است، مانند سرورهای پایگاه داده، تعداد ماشینهای مجازی قابل اجرا بر روی همان سرور، کاهش مییابد.
در زیر برخی از گزینههای پیکربندی مختلف را بهصورت مثال آوردهایم. به یاد داشته باشید، که تخصیص vCPU به هر ماشین مجازی کاملاً به حجم کاری خاص شما بستگی دارد.
4 پردازنده مجازی در ازای هر ماشین مجازی:
- 128 پردازنده مجازی ÷ 4 پردازنده مجازی در ازای هر ماشین مجازی = 32 ماشین مجازی
2 پردازنده مجازی در ازای هر ماشین مجازی:
- 128 پردازنده مجازی ÷ 2 پردازنده مجازی در ازای هر ماشین مجازی = 64 ماشین مجازی
یک پردازنده مجازی در ازای هر ماشین مجازی:
- 128 پردازنده مجازی ÷ یک پردازنده مجازی در ازای هر ماشین مجازی = 128 ماشین مجازی
هسته مجازی
در دنیای فناوری اطلاعات، مجازیسازی سرورها به معنی به اشتراکگذاری مجازی تمامی منابع و امکانات با دستگاههای مختلف است. این فرآیند شامل تخصیص مجازی هستههای پردازنده بهعنوان vCPU به ماشینهای مجازی میشود. طی سالهای متمادی، پردازندههای تکهستهای بهدلیل افزایش نیازهای پردازشی، جای خود را به پردازندههای چندهستهای دادند. این تغییر توانست محدودیتهای ذخیرهسازی، هزینه و مصرف انرژی را که افزودن پردازندههای فیزیکی بیشتر به دنبال داشت، از میان بردارد.
با ورود پردازندههای چندهستهای به بازار، مشکلات جدیدی نیز پدید آمدند. از آنجایی که هر هسته تنها قادر به انجام یک پردازش در لحظه بود، یک پردازنده چهارهستهای نیز تنها چهار پردازش را بهطور همزمان انجام میداد. این محدودیت باعث میشد که پردازشهای دیگر در صف انتظار بمانند و در نتیجه عملکرد کلی سیستم کاهش یابد.
اینتل با معرفی فناوری Hyper-threading، این محدودیت را برطرف کرد. با استفاده از این فناوری، هر هسته میتوانست بهعنوان دو واحد پردازشی عمل کند و تأخیر در عملیات سیستم را بهشدت کاهش دهد. امروزه، هستههای مجازی در بیشتر پردازندههای مدرن یافت میشوند و با پشتیبانی سیستمعاملها فعال میگردند.
هستههای فیزیکی، منطقی یا مجازی؟
یک دسکتاپ مجازی با هستههای مجازی برای استفاده روزمره یک کاربر معمولی از نظر نسبت قیمت به عملکرد ایدهآل است. این سیستمها ارزان هستند و برای کاربر عادی طراحی شدهاند.
اما، برای تعداد کاربر بالاتر که بهطور همزمان در یک محیط در حال کار هستند و سیستمهای مجموعه برای اجرای دستورات نیاز به سطح عملکردی بالایی دارند، باید حداقل چندین هسته فیزیکی و منطقی جهت جلوگیری از افت سرعت و دسترسی راحتتر در نظر گرفته شود.
سؤالات رایج در زمینه CPU و Core مجازی
پردازندههای مجازی نقش مهمی در محیطهای محاسباتی مدرن ایفا میکنند. آنها به چندین ماشین مجازی اجازه میدهند تا روی یک سرور فیزیکی واحد اجرا شوند، هزینههای سختافزاری را کاهش داده و استفاده از منابع را بهبود میبخشند. این نوع پردازندهها، از مزایای زیادی برخوردارند، اما محدودیتهایی نیز دارند که میتواند بر عملکردهای سرورها تأثیر مستقیم بگذارد. با درک این محدودیتها و نحوه تأثیر آنها بر اجرای دستورها، میتوان از ظرفیت سی پی پوهای مجازی با بیشترین بهرهوری و کمترین هزینه استفادههای مناسبی کرد.
CPU مجازی چیست؟
تفاوت بین CPU و vCPU چیست؟
CPU مجازی چگونه کار میکند؟
مزایای استفاده از CPU مجازی چیست؟
آیا پردازندههای مجازی عملکرد سیستم را بهبود میبخشند؟
منابع: datacenters.com | dev.to | techtarget.com | oneclick-cloud.com