انویدیا سالهای سال است که پردازندههای گرافیکی خود را در دو خانواده محبوب مصرفی و حرفهای عرضه میکند. هرچند این پردازندهها ممکن است معماری زیربنایی یکسانی داشته باشند، شباهتهایشان تقریباً به همینجا ختم میشود. کارتهای حرفهای انویدیا از درایورهای ویژه و امضاشده این شرکت بهره میبرند که قابلیتهای بیشتری را «فعال» میکنند.
همین موضوع مرا به مسیری پرپیچوخم کشاند و سرانجام به راهکاری رسیدم که با آن توانستم GTX ۱۰۵۰ Ti سالخوردهام را برای استفاده در ماشینهای مجازی به چند vGPU تقسیم کنم. متأسفانه، همانطور که بهزودی خواهید دید، این فرایند چندان سرراست نیست و محدودیتهای سختافزاری شدیدی دارد.
پس vgpu_unlock چگونه کار میکند؟
نگاهی کوتاه به پیشینه ماجرا

تلاشهای فراوانی برای شکستن کامل این قفل صورت گرفته است که شاید شناختهشدهترینشان vgpu_unlock، ساخته DualCoder (Dual95)، در GitHub باشد.
این ابزار در اصل هنگام فرایند کامپایل ماژول هسته انویدیا، همان مرحلهای که حین نصب میبینید، کد خود را به آن متصل میکند. پس از اجرای اسکریپت، سامانه میزبان را «فریب» میدهد تا تصور کند بهجای یک کارت معمولی GeForce، کارت Quadro/Tesla در اختیار دارید.
پس از جعل هویت سختافزار، مدیر vGPU و درایورهایش درست مانند زمانی بارگذاری میشوند که یک کارت سازمانی واقعی در سامانه نصب شده باشد؛ در نتیجه، قابلیتهای mdev و SR-IOV نیز فعال میشوند. بااینحال، یک مانع بزرگ وجود دارد: به درایورهای امضاشده وبسایت انویدیا نیاز خواهید داشت. تهیه آنها ممکن است، اما فرایندش کمی دردسر دارد. برای نمونه، نمیتوانید از بستههای معمول انویدیا در مخزنی مانند AUR استفاده کنید.
افزون بر این، چنین روشی برای فعالسازی vGPU تنها روی کارتهای انویدیا تا سری RTX ۲۰۰۰ کار میکند. انویدیا از خانواده RTX ۳۰۰۰ (Ampere) به بعد تغییرات فراوانی ایجاد کرد که مهمترینشان انتقال فرایند راهاندازی درایور به یک دای روی خود پردازنده گرافیکی بود.
این تغییر، روشهای فعالسازی vGPU را عملاً بیاثر کرد؛ هرچند پیشرفتهایی نیز به دست آمده است. این روشها همچنان روی کارتهای Ampere و نسلهای جدیدتر قابل استفاده نیستند. بااینهمه، اگر یک پردازنده گرافیکی قدیمی انویدیا گوشهای افتاده دارید ــ ترجیحاً مدلی با مقدار مناسبی VRAM ــ میتوانید آن را به راهکاری مطمئن برای بهرهگیری از vGPU در سرور خود تبدیل کنید.
آزمایش اسکریپت vgpu_unlock در آرچ لینوکس با انویدیا GTX ۱۰۵۰ Ti
تهیه درایورهای پردازنده گرافیکی، بخش آسان کار است





اکنون به بخش دشوار ماجرا میرسیم: تقسیم واقعی پردازنده گرافیکی. از آنجا که پردازنده گرافیکی من یک GTX ۱۰۵۰ Ti بسیار قدیمی است، ناچار شدم با دو مشکل کاملاً متفاوت دستوپنجه نرم کنم. نخستین مشکل، وصلهکردن درایور vGPU بود که خوشبختانه به کمک اسکریپتهای فراوان جامعه کاربری در اینترنت، بهسادگی انجام شد؛ کافی بود فرمانی را در پایانه کپی و جایگذاری کنم.
بخش دوم بسیار دشوارتر بود و به قدیمیبودن ۱۰۵۰ Ti مربوط میشد. انویدیا دیگر بهطور پیشفرض درایور رسمی این خانواده از کارتها را برای Linux عرضه نمیکند و نسخههای بایگانیشدهای که هنوز کار میکنند، به هستهای بسیار قدیمیتر نیاز دارند.
برای این پردازنده گرافیکی خاص، ناچار بودم از هستهای قدیمیتر از ۶.۱۸ (نسخه کنونی LTS) و درایور Nvidia GRID نسخه ۵۳۵.۱۰۴.۰۶ استفاده کنم. یک نسخه از درایور انویدیا را از وبسایت رسمی بگیرید؛ برای ادامه کار باید حساب ارزیابی داشته باشید.
بنابراین، ناچار شدم هسته ۶.۱ را بهجای ۶.۱۸، یعنی نسخه کنونی LTS، دریافت و نصب کنم و سپس نسخه هسته را به آن کاهش دهم؛ پس از آن نیز درایورها را وصله کردم. در ادامه، نصب استاندارد DKMS را انجام دادم و از این مرحله به بعد، همهچیز همانطور که انتظار میرفت بیدردسر پیش رفت. فقط مطمئن شوید نصبکننده را از محیط tty اجرا میکنید، نه از یک نشست زنده؛ وگرنه نصب شکست خواهد خورد.
هرچند در این مرحله از نظر فنی میتوانیم از vGPUها استفاده کنیم، برای دستیابی به تجربهای بهتر هنوز به چند وصله دیگر نیاز داریم. ابزار vgpu_unlock-rs اسکریپتی است که برخی محدودیتهای ساختگی اعمالشده بر vGPUها را برمیدارد و راهاندازی آن نیز بسیار ساده است. مهمتر از همه، محدودسازی اجباری عملکرد از سوی این درایور غیررسمی را حذف میکند؛ قابلیتی که همانطور که میتوان حدس زد، برای استفاده طولانیمدت از کارت ضروری است.
آخرین کار باقیمانده، قراردادن ماژول Nouveau در فهرست سیاه و راهاندازی دوباره سامانه بود. پس از اجرای سریع nvidia-smi توانستم vGPUها را ببینم و آنها را از یک کارت واحد به چند ماشین مجازی اختصاص دهم.
راهی برای استفاده دوباره از کارتهای قدیمی GTX و RTX، با محدودیتهایی مهم
همه اینها سرانجام ما را به این پرسش میرساند: اصلاً با این قابلیت چه کاری میتوانم انجام دهم؟ پاسخ، بیش از هر چیز، مجازیسازی است. با جعل شناسه یک کارت Quadro میتوانید کارت گرافیک قدیمی GTX خود را به چند vGPU تقسیم کنید؛ هرکدام نیز مقدار ازپیشتعیینشدهای از VRAM را از مخزن مشترک کل حافظه به خود اختصاص میدهند.
همانطور که احتمالاً تا اینجا دریافتهاید، این روش با کارتهایی بهترین نتیجه را میدهد که حافظهٔ گرافیکی فراوانی برای استفاده دارند. کارت ۱۰۵۰ Ti بهکاررفته در این آزمایش تنها ۴ GB حافظه دارد و همین موضوع تواناییهایش را بهشدت محدود میکند.
البته یک محدودیت مهم هم وجود دارد: از آنجا که این روش دور زدن محدودیتها روی پردازندههای گرافیکی نسل Ampere و نسلهای پس از آن کار نمیکند، عملاً نمیتوانید از پردازندههای گرافیکی مصرفی جدیدتر برای کارهای در حد ایستگاه کاری بهره ببرید.
اگر واقعبینانه نگاه کنیم، در حال حاضر بهترین گزینهٔ شما سری RTX ۲۰۰۰ است؛ در این میان، RTX ۲۰۸۰ Ti با ۱۱ GB حافظهٔ گرافیکی بیشتر، انتخاب جالبی به شمار میآید.
همهٔ اینها خوب است، اما چه سودی برای کاربر نهایی دارد؟ اگر فقط قصد بازیکردن دارید، احتمالاً چندان فایدهای ندارد؛ شاید هم هیچ. اما وقتی به راهاندازی آزمایشگاه خانگی روی بیاورید، شرایط تغییر میکند.
با کمک vGPUها میتوانید تنها روی یک کارت، ماشینهای مجازی شتابگرفته با پردازندهٔ گرافیکی را برای میزبانی بازیها یا حتی چیزی مانند سرور Minecraft اجرا کنید. اگر یک پردازندهٔ گرافیکی قدیمیتر RTX یا GTX گوشهای بلااستفاده مانده باشد، این کار میتواند به پروژهای جانبی و سرگرمکننده تبدیل شود.
به تازهترین فناوریها دسترسی نخواهید داشت، اما این روش روی کارت فعلیتان کار میکند و توان پردازشی آن نیز کاملاً کافی است. افزون بر این، لازم نیست یک پردازندهٔ گرافیکی گرانقیمت Quadro بخرید.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Dipan Saha است. مشاهده مقاله اصلی