مجازی سازی یک فناوری است که امروزه بسیار مورد توجه متخصصان قرار گرفته است. این فناوری به چندین سیستم عامل و برنامه اجازه میدهد تا روی یک سرور فیزیکی یکسان اجرا شوند. یکی از اجزای کلیدی در رایانش ابری همین فناوری مجازی است که سبب میشود تا علاوهبر کاهش هزینههای سخت افزاری، قدرت محاسباتی افزایش یابد. مجازی سازی به کسب و کارها اجازه میدهد تا به سرعت و به راحتی برنامهها و خدمات را در فضای ابری مستقر کنند. درک نقش CPU در فناوری Virtualization بسیار مهم است. CPU قلب سیستم است و وظیفه اجرای دستورالعملها و انجام محاسبات را بر عهده دارد. در این مقاله به بررسی اهمیت CPU در مجازی سازی میپردازیم در ادامه همراه ما باشید.
پردازنده چیست و چه تاثیری بر Virtualization دارد؟
شاید این یک سوال پیش پا افتاده برای شما باشد، اما لازم میدانیم برای مخاطبانی که به تازگی به وبلاگ ماهان شبکه ایرانیان پیوستهاند؛ اندکی در مورد CPU توضیح دهیم. CPU مخفف Central Processing Unit است و وظیفه اجرای دستورالعملها و انجام محاسبات را بر عهده دارد. به نوبه خود این وظیفه خطیری محسوب میشود و CPU سرور مهمترین عضوی است که برای مجازی سازی باید بهدرستی کار کند. از وظایف سی پی یو میتوان به اجرای سیستم عامل، برنامهها، مدیریت حافظه و ذخیره سازی سرور اشاره کرد.
انتخاب یک CPU برای مجازی سازی و پیکربندی صحیح آن به اندازه انتخاب حافظه، ذخیره سازی و منابع شبکه مهم است. پردازندهای که برای زیرساخت منطقی و مناسب نباشد و یا پیکربندی نادرست داشته باشد، میتواند بر سه مؤلفه دیگر تأثیر منفی بگذارد. عملکرد VM نیز تا حد زیادی به پیکربندی مناسب CPU، حافظه، ذخیره سازی و منابع شبکه بستگی دارد.
هرچه CPU قدرتمندتر باشد، فرآیند مجازی سازی کارآمدتر خواهد بود. یک CPU قدرتمند میتواند ماشینهای مجازی و برنامههای بیشتری را مدیریت و آنها را سریعتر اجرا کند.
مجازی سازی CPU چیست؟
CPU virtualization یک فرآیند انتزاعی است که در آن یک سی پی یو به دو یا چند CPU مجزا تقسیم میشود. سیستمعاملها دسترسی مستقیم به منابع سختافزاری دارند، اما با مجازیسازی، نرمافزاری که به عنوان Hypervisor شناخته میشود، این منابع را انتزاعی میکند تا تیمهای فناوری اطلاعات بتوانند به طور مؤثرتری از آنها استفاده کنند.
بسته به حجم کاری حجم کار، میتوانید یک یا چند CPU مجازی (vCPU) را به VM اختصاص دهید. چه از ماشینهای فیزیکی و چه مجازی استفاده کنید، همان منابع پردازنده وجود دارد. Hypervisor هر CPU فیزیکی را در یک vCPU خلاصه میکند که میتواند به راحتی به بارهای کاری اختصاص داده شود.
مجازی سازی CPU بسته به حجم کار و نوع مجازی سازی مورد استفاده، مقادیر مختلفی سربار (Overhead) اضافه میکند. شما میتوانید ماشینهای مجازی را با یک یا چند پردازنده مجازی پیکربندی کنید که هر کدام مجموعهای از ثباتها و ساختارهای کنترلی خاص خود را دارند.
زمانی که یک ماشین مجازی برنامه ریزی میشود، پردازندههای مجازی آن بر روی پردازندههای فیزیکی برنامه ریزی میشوند. مدیر منابع VMkernel، پردازندههای مجازی را بر روی CPUهای فیزیکی زمانبندی میکند، در نتیجه دسترسی ماشین مجازی به منابع فیزیکی CPU را مدیریت میکند.
چالشهای مجازی سازی چیست؟
مجازی سازی میتواند چالشهایی را برای کسب و کارها ایجاد کند. برای اجرای چندین ماشین مجازی و برنامههای کاربردی به یک CPU قدرتمند نیاز دارد. همچنین برای اجرای چندین ماشین مجازی به مقدار زیادی حافظه و فضای ذخیره سازی نیاز دارد. علاوهبر این، راه اندازی و مدیریت مجازی سازی میتواند پیچیده باشد.
بهترین CPU برای مجازی سازی
هنگام خرید سی پی یو برای فرآیند Virtualization تعداد هستهها، سرعت کلاک و کش پردازنده را در نظر بگیرید. هر چه یک CPU هستههای بیشتری داشته باشد، همزمان میتواند وظایف بیشتری را انجام دهد. سرعت کلاک سرعتی است که CPU میتواند دستورالعملها را پردازش کند. هرچه سرعت کلاک بالاتر باشد، CPU سریعتر میتواند دستورالعملها را پردازش کند. اندازه کش مقدار حافظهای است که CPU میتواند به سرعت به آن دسترسی پیدا کند. هرچه اندازه کش بزرگتر باشد، CPU سریعتر میتواند به دادهها دسترسی پیدا کند.
مقایسه انواع پردازنده AMD و Intel
پردازندههایی که توسط اینتل و AMD عرضه میشوند؛ کاربردهای خاص آنها با نامهای اختصاری که نشاندهنده مجموعههای دستورات و دستورالعملهای توسعهیافته برای انجام وظایف پردازنده مجازیمحور هستند، متمایز میشوند. به عنوان مثال، پیاده سازیهای VT اینتل شامل VT-x، VT-i، VT-d و VT-c هستند و پردازندههای AMD، با AMD-V و AMD-Vi شناخته میشوند.
یکی از بهترین رویکردها برای انتخاب CPU مناسب برای مجازی سازی، مشخص کردن ویژگیهای خاصی است که میخواهید در محیط مجازی خود پیاده سازی کنید. انتخاب Hypervisor و پشتیبانی آن از پردازندههای خاص ممکن است بر انتخاب پردازنده برای Virtualization تأثیر بگذارد.
یکی از ویژگیهایی که اینتل و AMD هر دو ارائه میدهند، جداسازی فضای حافظه از طریق بیتهای بدون اجرا (NX) و اجرای غیرفعال (XD) است که از ماشینهای مجازی در برابر بدافزار محافظت میکند. بیت های NX و XD تضمین میکنند که CPU از اجرای کد در مناطق محافظت شده امتناع می ورزد.
سایر ویژگیهای CPU که برای مجازی سازی اهمیت دارند عبارت است از: Load AH from Flags (LAHF) و دستورات Save AH to Flags (SAHF) و پسوند مجازی سازی. دستورات LAHF و SAHF کنترل محتویات ثبت را امکان پذیر میکنند، در حالی که افزونههای مجازی سازی استفاده بهتر از منابع را فراهم میکنند. انتخاب سخت افزار مناسب اولین قدم برای اطمینان از اجرای حجم کاری مجازی در اوج عملکرد است.
غیرفعال کردن Hyper-Threading
مطمئن شوید که از CPU به خوبی استفاده میکنید و کدام ویژگیها مورد نیاز شماست و کدام یک ممکن است در آینده منجر به مشکلاتی در عملکرد شود. Hyper-threading یک ویژگی CPU است که رشته های برنامه را سازماندهی و زمان بندی می کند، اما همیشه کارآمدترین راه برای بهبود عملکرد پردازنده نیست. Hyper-threading به عنوان خط لوله دوم برای مجموعههای دستورالعمل برای جلوگیری از اتلاف منابع عمل میکند. مشکل این رویکرد این است که خود هسته CPU فقط یک موتور اجرایی دارد، بنابراین اختلاف منابع ممکن است رخ دهد که باعث گلوگاه عملکرد میشود. به جای استفاده از Hyper-threading، در صورت امکان، هنگام خرید CPU برای مجازی سازی، پول را برای هستههای بیشتر خرج کنید. خرید هستههای بیشتر CPU و غیرفعال کردن Hyper-threading نسبت به اشتراکگذاری هستههای کمتر بین بارهای کاری از طریق hyper-threading میتواند کارآمدتر باشد.
>>> همچنین بخوانید: فناوری Hyper Threading چیست؟
پردازندههای محبوب برای Virtualization
Virtualization فرآیندی است که به شما این امکان را میدهد تا یک نسخه مجازی از منابع سخت افزاری مانند شبکه ها، دستگاه های ذخیره سازی یا حتی یک سیستم فیزیکی کامل ایجاد کنیم. این کار با استفاده از Hypervisor امکان پذیر است. هایپروایزر میتواند منابع یک سیستم شخصی یا سرور را تقسیم و یا جداسازی کند و به شما این امکان را میدهد با استفاده از منابع ایزوله یک سیستم عامل جدید را نصب کنید. بنابراین، در یک سیستم میتوانید چندین سیستم عامل را به طور همزمان اجرا کنید.
با یک پردازنده کارآمد میتوانید چندین منبع مجازی را به طور همزمان مدیریت کنید. در زیر لیست برخی از CPUهای مناسب مجازی سازی را برای شما آماده کردهایم:
- Intel 3rd Gen Xeon Scalable processors: پردازندههای سری 5000 از 6 تا 40 هسته فیزیکی و 6 تا 80 رشته پشتیبانی میکنند. Bronze گزینه خوبی برای استقرار سرورهای اصلی در آفیسهای کوچک است. Silver و Gold سرعت و قدرت حافظه و ویژگیهای امنیتی بیشتری را افزایش دادهاند. همچنین Platinum برای مراکز داده در سطح سازمانی در دسترس است.
- AMD 3rd Gen EPYC processors: پردازندههای سری 7003 دارای هشت تا 64 هسته و 16 تا 128 رشته هستند. AMD همچنین یک ابزار تخمین TCO مجازی سازی سرور ارائه میدهد که میتواند به شما کمک کند پردازندهای را انتخاب کنید که بهترین نیازهای شما را برآورده میکند.
- IBM Power9 processors: پردازندههای Power9 دارای 4 تا 24 هسته هستند و IBM گزینههای کوچکسازی و افزایش مقیاس را ارائه میدهد. پردازندههای Power9 با استانداردهای اصلی ورودی/خروجی از جمله Nvidia NVLink 2.0، PCIe Gen4 و OpenCAPI سازگار هستند.
جمع بندی
هدف مجازی سازی CPU این است که یک CPU را به همان روشی اجرا کنیم که دو CPU جداگانه اجرا میشوند. توضیح بسیار ساده در مورد نحوه انجام این کار این است که نرم افزار مجازی سازی به گونهای تنظیم شده است که و به تنهایی مستقیماً با CPU ارتباط برقرار میکند. هر چیز دیگری که روی کامپیوتر اتفاق میافتد از طریق نرم افزار عبور میکند. سپس نرم افزار ارتباطات خود را با بقیه کامپیوتر تقسیم میکند، گویی به دو CPU مختلف متصل است.
مجازی سازی CPU را نباید با Multitasking یا Hyperthreading اشتباه گرفت. چندوظیفهای اجرای بیش از یک برنامه در یک زمان است. هر سیستم عامل مدرن این امکان را میدهد که این کار روی یک CPU انجام شود، اگرچه از نظر فنی فقط با یک برنامه در هر لحظه خاص رسیدگی میشود. Hyperthreading جایی است که CPU های سازگار میتوانند برنامههای ویژه نوشته شده را به گونهای اجرا کنند که دو عمل را همزمان انجام دهند.