زیرساخت دسکتاپ مجازی یا همان VDI یک راهکار عالی برای ارائه دسکتاپ و نرمافزارها به کاربران میباشد. اما در گذشته، این راهکار زمانی قابل اجرا بود که کاربران از نرمافزارهایی استفاده کنند که به گرافیک پیچیده یا Render ویدئو متکی نباشند. میتوان گفت، تقریباً تمامی مواردی که در ابتدا برای محیط VDI مناسب نبودند، اکنون توانایی ارائه گرافیکهای سطح بالا را دارند. اولین راهحل مبتنی بر نرمافزار که برای پشتیبانی گرافیک طراحی شد، Soft 3D Graphics بود. این راهحل قادر به پشتیبانی از workloadهای قوی از نظر گرافیکی بود. با این حال، برخی از موارد پیشرفته بار اضافی به زیرساخت اضافه میکرد. چرا که چرخههای CPU برای Rendering گرافیکی مصرف میشد و آنچه که مورد نیاز بود، یک راهحل مبتنی بر سختافزار بود.
اولین راهحل گرافیکی مبتنی بر سختافزار، مجازی سازی GPU میباشد. مجازی سازی GPU به ماشین مجازی اجازه میدهد تا با عبور از Hypervisor و دسترسی مستقیم به کارت گرافیک فیزیکی نصب شده در سرور، GPU فیزیکی را به اشتراک بگذارند.
در سال 2013، Hardware Accelerated Graphics (گرافیک شتابدهنده سختافزاری) دو تکنیک مختلف را معرفی کرد:
1. Virtual Shared Graphics Acceleration (vSGA): به موجب این راهحل، یک کارت GPU را میتوان در چندین ماشین مجازی به اشتراک گذاشت.
2. Virtual Dedicated Graphics Acceleration (vDGA): این راهحل نیز ماشین مجازی را قادر میسازد تا یک ارتباط اختصاصی و یک به یک با کارت گرافیک داشته باشد.
و آخرین راهحلی که برای گرافیکهای پیشرفته ارائه شد، گرافیک مجازی یا vGPU بود. این راهحل، کارت GPU را مجازی کرده و آن را قادر میسازد تا در چندین ماشین مجازی به اشتراک گذاشته شود. تا آنجایی که به ماشینهای مجازی مربوط باشد، کارت گرافیکی اختصاصی و فیزیکی خود را دارند. در ادامه با جزئیات بیشتری به بررسی Soft 3D Graphics، vSGA، vDGA و vGPU میپردازیم که هر کدام در موقعیتهای مختلف مزایای متفاوتی داشته و متفاوت عمل میکنند.
Soft 3D Graphics
Soft 3D به ماشینهای مجازی میزبان ESXi این امکان را میدهد تا یک GPU را در نرمافزار شبیهسازی کنند بدون اینکه به کارت گرافیکی نیازی داشته باشند. با اینکه عملکرد بالایی را ارائه نمیدهند اما یک جایگزین بدون هزینه برای Rendering نرمافزارهایی که به قابلیت گرافیک سه بعدی نیاز دارند، ارائه میدهد. درایور Display از طریق VMware tools بر روی سیستمعامل نصب شده و با استفاده از Soft 3D، ماشینهای مجازی میتوانند از قابلیت vMotion برای جابجایی به سرور میزبان دیگری استفاده کنند.
Virtual Shared Graphics Acceleration (vSGA)
شتاب گرافیکی اشتراکی مجازی به ماشینهای مجازی این امکان را میدهد تا همه به کارت گرافیکی نصب شده در سرور میزبان ESXi دسترسی داشته باشند. همانطور که از نام آن پیداست، ماشینهای مجازی دسترسی مستقیمی به کارت گرافیک فیزیکی داخل سرور ندارند. vSGA با نصب درایور گرافیکی که توسط فروشنده کارت گرافیک ارائه میشود، کار میکند. در واقع این درایور به عنوان بخشی از یک فایل نصبی vSphere یا VIB (VMware Installation Bundle) بر روی سرور میزبان نصب میشود. سپس در ماشین مجازی، درایور گرافیکی به عنوان بخشی از VMware tools نصب میشود. این درایور، درایور VMware بوده و از DirectX و OpenGL برای دسکتاپ مجازی پشتیبانی میکند. قابل ذکر است، از آنجایی که vSGA از درایور استاندارد VMware استفاده میکند. اما ممکن است این درایور با برخی از بستههای گرافیکی پیشرفته سازگار نباشد.
اغلب چنین برنامههایی نیاز به دسترسی مستقیم به درایوری همچون درایور NVIDIA خواهند داشت. چرا که این درایور برای اکثر گزینهها تائید شده و قابلیت پشتیبانی بالایی دارد. زمانی که کاربر از طریق درایور VMware از vSGA استفاده میکند، دستورات گرافیکی توسط درایور در VIB رهگیری میشود. به Hypervisor ارسال میشوند، Hypervisor کارت گرافیکی فیزیکی نصب شده در ESXi را کنترل میکند. مزیت اصلی vSGA تراکم کاربر است، به این صورت که تا زمانی که VRAM (Video RAM) آن تمام نشود، GPU را تقسیم میکند. همچنین دسترسی آن به پردازنده گرافیکی سختافزاری، عملکرد بهتری نسبت به شبیهسازی نرمافزاری یک کارت گرافیک دارد. همچنین vSGA تنها با یکی از کارت گرافیکهای زیر از OpenGL و DirectX پشتیبانی میکند.
AMD FirePro، S7000، S9000، S9050، W7000، Intel HD Graphics P4700، Intel Iris Pro Graphics، NVIDIA Tesla و … .
راهاندازی vSGA
سوالی که در ابتدا مطرح میشود این است که vSGA قادر است چند دسکتاپ مجازی را پشتیبانی کند یا به عبارتی چند کاربر را میتوان در هر CPU راهاندازی نمود؟!
بهترین روش برای انجام این کار این است که اجازه ندهید تمامی کاربران به یک GPU فیزیکی دسترسی داشته باشند، مگر اینکه کار مقرون به صرفهای باشد. بهتر است این قابلیت را فقط برای کاربرانی راهاندازی نمایید که واقعاً به گرافیک سختافزاری نیاز داشته باشند. برای این دسته از کاربران یک pool اختصاصی راهاندازی نمایید تا از این قابلیت بهرهمند شوند. تعداد ماشینهای مجازی که یک منبع GPU را به آنها اختصاص میدهید به مقدار VRAM ای که برای هر ماشین مجازی در نظر میگیرید، بستگی دارد.
فراموش نکنید که این منابع گرافیکی سختافزاری به اشتراک گذاشته میشوند و اگر منابع را بیش از حد به کاربران تخصیص دهید، از آنجایی که این عمل در یک محیط مجازی انجام میشود. مانند هر ماشین مجازی دیگر، اگر منابع در دسترس نباشند ماشین مجازی روشن نمیشود. زمانی که صحبت از به اشتراکگذاری VRAM میشود، بایستی بگوییم؛ نیمی از VRAM اختصاص داده شده به ماشین دسکتاپ مجازی از کارت گرافیکی فیزیکی و نیمی دیگر از RAM سرور میزبان میباشد. شما بایستی این را در نظر داشته باشید که سرورهای میزبان از حافظه کافی برخوردار باشند تا هم به عنوان RAM معمولی و هم برای VRAM استفاده شوند.
حتماً بخاطر داشته باشید که اگر منابع درخواستی GPU برآورده نشود، ماشین مجازی روشن یا بوت نمیشود. در عین حال، اگر یک pool برای دسکتاپ مجازی راهاندازی کنید که چندین ماشین دسکتاپ مجازی در آن قرار داشته باشند. در این صورت میتوانید در دسترس بودن منابع GPU را تضمین کنید.
Virtual Dedicated Graphics Acceleration (vDGA)
vDGA به ماشین دسکتاپ مجازی این امکان را میدهد تا به کارت گرافیک فیزیکی اختصاصی که در سرور میزبان ESXi نصب شده است، دسترسی داشته باشد. کاربرانی که برای برنامههای گرافیکی سنگین خود به عملکردی همچون Workstation نیاز داشته باشند، بایستی از vDGA استفاده نمایند. این قابلیت این اجازه را صادر میکند تا ESXi به طور مستقیم به GPU دسترسی داشته و آن را به دسکتاپ مجازی ارائه دهد. vDGA برخلاف vSGA، GPU را به اشتراک نمیگذارد، در عوض، قدرت و عملکرد بالای GPU به دسکتاپ مجازی که از آن استفاده میکند، اختصاص داده میشود. پس از نصب فیزیکی GPU، ESXi به راحتی آن را تشخیص میدهد و برخلاف vSGA نیازی به نصب درایورهای مربوطه بر روی سرور ندارد.
در دسکتاپ مجازی، GPU به سختافزار موجود در تنظیمات VM اضافه شده و درایور Display در ماشین مجازی نصب میشود. vDGA از vMotion پشتیبانی نمیکند؛ زیرا VM به GPU فیزیکی سرور متصل است. مزیت vDGA عملکرد آن است؛ زیرا GPU را به دسکتاپ مجازی اختصاص داده و برای نمایش از استانداردهایی با عملکرد بالا برای NVIDIA CUDA و OpenCL پشتیبانی میکند. کارت گرافیکهایی که از vDGA پشتیبانی میکنند، عبارتند از: NVIDIA GRID، NVIDIA Tesla، NVIDIA Quadro، AMD FirePro، Intel و … .
هر دو قابلیت vSGA و vDGA در سطح Hypervisor و در ESXi اجرا میشوند. از آنجایی که Citrix XenDesktop یک Hypervisor خنثی است، میتواند از ویژگیهای vSGA و vDGA زمانی که ماشینهای مجازی XenDesktop بر روی ESXi میزبانی میشوند، استفاده کند.
راهاندازی vDGA
vDGA به مقدار حافظهای که از کارت گرافیکی فیزیکی در اختیار دارد، محدود نمیشود. بلکه فقط به تعداد کارت گرافیکیهای فیزیکی که میتوانند به صورت فیزیکی در سرور میزبان نصب شوند، محدود میشود. این محدودیت به دلیل رابطه اختصاصی و یک به یک میان VM و GPU است. به طور مثال، اگر کارت گرافیکی شما دارای دو پردازنده گرافیکی داخلی است. میتوانید از دو کاربر و اگر کارت گرافیکی دومی نیز از همین نوع نصب کرده باشید، میتوانید از چهار کاربر با گرافیک پیشرفته پشتیبانی کنید. بنابراین تنها عامل محدود کننده، سرور میزبان و تعداد کارت گرافیکهایی است که میتواند پشتیبانی کند.
به همین منظور، فروشندگان سرور، یک سرور از پیش راهاندازی شده را به صورت OEM ارائه میدهد. این بدان معناست که تمامی سختافزارهای گرافیکی مورد نیاز بر روی سرور نصب شده و آماده به کار است. یکی از دلایل انجام این کار این است که برخی از کارتهای گرافیکی به دلیل قدرت و عملکرد بالایی که ارائه میدهند، نیاز دارند تا سرورهای میزبان برای پشتیبانی از آنها از قطعات برق و خنک کننده اضافی استفاده نمایند.
با بررسی راهحلهای vSGA و vDGA متوجه میشویم که هر کدام مزایا و معایب خاص خود را دارند. ولی با این حال، ما به راهحلی نیاز داریم که تعداد بیشتری از کاربران را پشتیبانی کند و اینجاست که vGPU وارد عمل میشود.
Virtual Shared Pass-Through Graphics Acceleration (vGPU)
vGPU علاوه بر اینکه مقیاسپذیری ای که vSGA از نظر تعداد کاربران پشتیبانی میکرد را ترکیب میکند. بلکه این امکان را میدهد تا درایورهای GPU بر روی ماشینهای مجازی نصب شوند تا سازگاری بیشتری فراهم شود. به طور مثال، اگر کارت گرافیکهای NVIDIA را به صورت فیزیکی در سرور میزبان نصب کرده باشید، درایورهای NVIDIA بر روی ماشینهای مجازی نصب خواهند شد که در نهایت GPU مجازی شده و از این رو به آن vGPU گفته میشود که با تقسیمبندی زمان میان ماشینهای مجازی، هر ماشین مجازی میتواند از سختافزار GPU استفاده کند. قابل ذکر است، کارت گرافیکهایی که از vGPU پشتیبانی میکنند، AMD و NVIDIA میباشند.
راهاندازی vGPU
با vGPU، تعداد کاربران یا ماشینهای مجازی پشتیبانی شده براساس تنظیماتی است که بر روی پروفایلهای مختلف راهاندازی میشود. زمانی که کارت گرافیکی فیزیکی را بر روی سرور میزبان پیکربندی میکنید، در واقع کارت گرافیکی را به عنوان یک دستگاه PCI اضافه میکنید تا به شما این امکان را بدهد که پروفایلی را که قرار است از این قابلیت استفاده کند را انتخاب نمایید.
موارد استفاده از Hardware Accelerated Graphics
- کارکنان و مدیران اداری که از نرمافزارهایی همچون Microsoft Office، Adobe Photoshop و دیگر نرمافزارهای غیر تخصصی استفاده میکنند. از آنجایی که انتظار میرود بار ترافیکی این کاربران کم باشد، اما یکپارچهسازی برای این دسته از کاربران اهمیت دارد. به همین دلیل، این دسته از کاربران با دو نوع از انواع Hardware Accelerated Graphics به بهترین نحو مطابقت خواهند داشت:
-
- vGPU برای زمانی که عملکرد و ویژگی بیشترین اهمیت را دارد
- vSGA برای مواقعی که ادغام و ترکیب اهمیت بیشتری دارد.
- کاربرانی که از نرمافزارهایی با گرافیک پیشرفته مانند AutoCAD، Adobe Illustrator، CorelDRAW و … استفاده میکنند. برای این نوع از کاربران vGPU مناسب میباشد.
- دسته سوم طراحان و کاربران پیشرفته مهندسی و علمی میباشند که اغلب دادههای بزرگ و پیچیدهای را ایجاد میکنند. همچنین با برنامههای گرافیکی فشردهای چون طراحی سه بعدی، مدلسازی مولکولی و نرمافزارهای تشخیص پزشکی سروکار دارند. برای این دسته از کاربران
-
- vGPU برای زمانی که دسترسی بالا و ادغام اهمیت داشته باشد
- vDGA برای زمانی که هر بیت عملکرد مهم باشد.