با اینکه کامپیوترهای مدرن بسیار قدرتمندتر از گذشته هستند، اما سرعت و عملکرد آنها اغلب توسط اجزای سختافزاری پردازشی مانند سی پی یوها، محدود میشوند. در سالهای اخیر، سی پی یوهای مجازی بهعنوان راهحلی برای این مشکل ظهور کردند تا محاسبات سریعتر و کارآمدتری را ممکن سازند. در واقع، پردازندههای مجازی بخشی از یک CPU فیزیکی بزرگتر هستند، که به سرورهای مجازی اجازه میدهند تا سیستمعامل خود و برنامههای کاربردی را مانند یک ماشین فیزیکی اجرا کنند. این فناوری امکان استفاده بهتر از منابع سختافزاری را فراهم میکند و قادر است عملکرد کامیپوترها و سرورها را به میزان قابل توجهی بهبود ببخشد.
در این مقاله از مجله لیپک، ما به بررسی مفهوم vCPU و تفاوتهای آن با سی پی یوهای سنتی میپردازیم. همچنین، نحوه کارکرد، هستهها و تأثیرشان بر کارآمدی سیستمهای کامپیوتری را توضیح میدهیم.
CPU مجازی یا vCPU، بخشی از یک CPU فیزیکی است که به یک ماشین مجازی اختصاص داده میشود. ماشینهای مجازی (VM) نوعی برنامههای نرمافزاری هستند، که رفتار یک کامپیوتر فیزیکی را تقلید میکنند و معمولاً در محاسبات ابری و مجازیسازی استفاده میشوند. در نتیجه، با ایجاد سی پی یوهای مجازی در داخل یک ماشین مجازی، میتوان چندین سیستم غیر فیزیکی را روی یک سرور فیزیکی واحد اجرا کرد.
تعداد هستهها و رشتههای مختلف سی پی یوهای مجازی را میتوان بسته به نیاز برنامهای که در حال اجراست، پیکربندی کرد. هسته (Core) واحد پردازش فیزیکی در یک CPU است، در حالی که رشته (Thread) یک واحد پردازش مجازی است که در یک هسته ایجاد میشود. با استفاده از چندین هسته و رشته، میتوان عملکرد ماشین مجازی را بهبود بخشید و اطمینان حاصل کرد که توان انجام چندین کار را بهطور همزمان دارد.
سیستمهای پردازشی معمولاً به دو روش زیر مجازیسازی میشوند:
سی پی یوهای مجازی به یک فناوری ضروری برای محاسبات ابری و مجازیسازی تبدیل شدهاند و میتوانند مزایای بسیاری از جمله بهبود عملکرد، کارایی بیشتر و انعطافپذیری بالاتر را ارائه دهند. برخی از مهمترین مزایای این پردازندههای مجازی را در زیر آوردهایم.
پردازندههای مجازی علاوهبر مزایای زیاد، محدودیتهایی نیز دارند که میتواند بر عملکرد سیستمها تأثیر بگذارد. در این بخش به برخی از محدودیتهای سی پی یوهای مجازی میپردازیم.
نرمافزار مجازیسازی قدرت پردازش بیشتر (Overhead) را به سیستم اضافه میکند. این ویژگی بهخصوص، برای برنامههایی که نیاز به تأخیر کم و عملکرد بالا دارند، بسیار مهم است. اما اورهد میتواند به کاهش عملکرد سیستم نیز بیانجامد، زیرا قدرت پردازشی مورد نیاز برای مدیریت ماشینهای مجازی، میزان قدرت پردازش در دسترس برنامهها را کاهش میدهد.
در برخی موارد، تخصیص منابع مناسب به ماشینهای مجازی چالشبرانگیز میشود. بهطوری که تخصیص منابع کم به یک ماشین عملکرد آن را کاهش میدهد و از سوی دیگر تخصیص منابع زیاد، موجب هدررفت وقت و انرژی زیادی میگردد.
نرمافزار مجازیسازی با ایجاد گلوگاههای ورودی/خروجی، بر عملکرد سیستم تأثیر میگذارد. تنگناهای ورودی/خروجی زمانی اتفاق میافتند که چندین ماشین مجازی برای منابع فیزیکی یکسان مانند پهنای باند شبکه یا ورودی/خروجی دیسک، با هم رقابت میکنند. این مسائل منجر به کاهش زمان پاسخ و عملکرد ضعیف میشود.
یکی دیگر از محدودیتهای پردازندههای مجازی، صدور مجوز است. برخی از فروشندگان نرمافزار بر اساس تعداد پردازندههای فیزیکی در یک سیستم، به مجوز نیاز دارند.
برای درک کامل مزایای سی پی یوهای مجازی، مهم است که ابتدا، چندین اصطلاح مرتبط را که شامل هایپروایزر، سوکت، رشته، هسته فیزیکی و هسته منطقی میشوند، با هم مرور کنیم.
به بیان ساده، یک هایپروایزر نرمافزاری است که برای ایجاد و اجرای ماشینهای مجازی (VM) استفاده میشود. هایپروایزر به کامپیوتر میزبان اجازه میدهد تا با به اشتراکگذاری مجازی منابع خود مانند حافظه و پردازش، از چندین VM مهمان پشتیبانی کند. هایپروایزرها به اندازه کافی باهوش هستند که منابع اختصاص داده شده با vCPU منفرد را از چندین vCPU تخصیص دهند.
سوکت به مجموعهای از پینها گفته میشود که پردازنده را در جای خود نگه میدارد و مادربرد را به توان پردازشی موجود متصل میکند. تعداد سوکتها بر اساس ظرفیت مادربرد تعیین میشوند و بسته به نسل CPU استفاده شده، دارای تفاوتهایی هستند.
مقاله مرتبط: انواع سوکت مادربرد
هر پروسه شامل یک یا چند رشته میشود. در واقع، رشتههای یک فرآیند در فضای حافظه مشترک و فرآیندها در فضای حافظه جداگانه اجرا میشوند. همچنین، از رشتهها برای انجام فعالیتهای موازی و سبک نیز استفاده میشود. بهعنوان مثال، باز بودن چندین تب در یک مرورگر نشاندهنده رشتههای مختلف است؛ یک رشته برای قالببندی متن و رشته دیگر برای پردازش ورودیها.
هسته فیزیکی که به آن واحد پردازش در CPU نیز گفته میشود، تمام عملکردهای یک پردازنده را انجام میدهد و ممکن است با یک یا چند هسته منطقی مرتبط باشد.
هسته منطقی این امکان را برای هسته فیزیکی منفرد فراهم میکند، که دو یا چند عمل را بهطور همزمان انجام دهد. هستههای منطقی از روزهای اولیه انتشار پردازندههای سرور Intel Xeon و پردازندههای دسکتاپ Pentium 4 در سال 2002، بهوجود آمدند.
یک هسته فیزیکی منفرد با hyper-threading برای یک سیستمعامل به شکل دو هسته منطقی بهنظر میرسد. بنابراین هستههای منطقی، تعداد هستههای فیزیکی ضرب در تعداد رشتههایی است که میتوانند روی هر هسته با استفاده از hyper-threading اجرا شوند. برای مثال، اگر 2 هسته فیزیکی با 2 رشته در هر هسته وجود داشته باشد، سیستم در مجموع شامل 4 هسته منطقی است.
کامپیوترها برای عملکردها و اجرای دستورها به سه منبع اصلی نیاز دارند: ذخیرهسازی (Disk Space)، حافظه (RAM) و محاسبه (CPU). در یک سیستم مجازی، هایپروایزر ماشینهای مجازی مهمان (Guest VMs) را مدیریت میکند و به آنها میگوید که به چه مقدار منابع مجازی دسترسی دارند. سپس هایپروایزر تقاضا را از VM مهمان برای سختافزار فیزیکی زمانبندی میکند.
در گذشته، یک قانون سرانگشتی وجود داشت که بیان میکرد در هر هسته هشت 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 پردازنده مجازی در ازای هر ماشین مجازی:
2 پردازنده مجازی در ازای هر ماشین مجازی:
یک پردازنده مجازی در ازای هر ماشین مجازی:
در دنیای فناوری اطلاعات، مجازیسازی سرورها به معنی به اشتراکگذاری مجازی تمامی منابع و امکانات با دستگاههای مختلف است. این فرآیند شامل تخصیص مجازی هستههای پردازنده بهعنوان vCPU به ماشینهای مجازی میشود. طی سالهای متمادی، پردازندههای تکهستهای بهدلیل افزایش نیازهای پردازشی، جای خود را به پردازندههای چندهستهای دادند. این تغییر توانست محدودیتهای ذخیرهسازی، هزینه و مصرف انرژی را که افزودن پردازندههای فیزیکی بیشتر به دنبال داشت، از میان بردارد.
با ورود پردازندههای چندهستهای به بازار، مشکلات جدیدی نیز پدید آمدند. از آنجایی که هر هسته تنها قادر به انجام یک پردازش در لحظه بود، یک پردازنده چهارهستهای نیز تنها چهار پردازش را بهطور همزمان انجام میداد. این محدودیت باعث میشد که پردازشهای دیگر در صف انتظار بمانند و در نتیجه عملکرد کلی سیستم کاهش یابد.
اینتل با معرفی فناوری Hyper-threading، این محدودیت را برطرف کرد. با استفاده از این فناوری، هر هسته میتوانست بهعنوان دو واحد پردازشی عمل کند و تأخیر در عملیات سیستم را بهشدت کاهش دهد. امروزه، هستههای مجازی در بیشتر پردازندههای مدرن یافت میشوند و با پشتیبانی سیستمعاملها فعال میگردند.
یک دسکتاپ مجازی با هستههای مجازی برای استفاده روزمره یک کاربر معمولی از نظر نسبت قیمت به عملکرد ایدهآل است. این سیستمها ارزان هستند و برای کاربر عادی طراحی شدهاند.
اما، برای تعداد کاربر بالاتر که بهطور همزمان در یک محیط در حال کار هستند و سیستمهای مجموعه برای اجرای دستورات نیاز به سطح عملکردی بالایی دارند، باید حداقل چندین هسته فیزیکی و منطقی جهت جلوگیری از افت سرعت و دسترسی راحتتر در نظر گرفته شود.
پردازندههای مجازی نقش مهمی در محیطهای محاسباتی مدرن ایفا میکنند. آنها به چندین ماشین مجازی اجازه میدهند تا روی یک سرور فیزیکی واحد اجرا شوند، هزینههای سختافزاری را کاهش داده و استفاده از منابع را بهبود میبخشند. این نوع پردازندهها، از مزایای زیادی برخوردارند، اما محدودیتهایی نیز دارند که میتواند بر عملکردهای سرورها تأثیر مستقیم بگذارد. با درک این محدودیتها و نحوه تأثیر آنها بر اجرای دستورها، میتوان از ظرفیت سی پی پوهای مجازی با بیشترین بهرهوری و کمترین هزینه استفادههای مناسبی کرد.
منابع: datacenters.com | dev.to | techtarget.com | oneclick-cloud.com