Контроль за видео-памятью в RemoteFX
Недавно, на небольшом вводном докладе о технологии RemoteFX в сценариях VDI, мне задали вполне ожидаемый вопрос: "Что будет, если кончится видео-память, выделяемая под виртуальные машины?".
Реализованный механизм динамического управления оперативной памятью, реализованный в Service Pack 1, к сожалению никоим образом не затрагивает управление видео-памятью. Таким образом, необходимо взвешенно планировать выделение видео-памяти под каждую виртуальную машину, дабы максимально эффективно использовать имеющиеся ресурсы. В TechNet-статье об аппаратных требованиях RemoteFX представлена таблица, характеризующее модели выделения видео-памяти:
Максимальное разрешение экрана | Максимальное количество мониторов на виртуальную машину | |||
---|---|---|---|---|
1 монитор |
2 монитора |
3 монитора |
4 монитора |
|
1024 x 768 |
75 MB |
105 MB |
135 MB |
165 MB |
1280 x 1024 |
125 MB |
175 MB |
225 MB |
275 MB |
1600 x 1200 |
184 MB |
257 MB |
330 MB |
N/A |
1920 x 1200 |
220 MB |
308 MB |
N/A |
N/A |
Таким образом, каждой виртуальной машине можно выделить от 75Мб до 330Мб видео-памяти. Сценарии, когда в терминальной сессии используется более чем два монитора достаточно редки, так что выделение памяти "впрок" под 3-4 монитора не всегда является разумным. Единственный сценарий, когда такой подход может принести плоды - использование ресурсоемких графических пакетов.
При выборе типа и количества мониторов в настройках адаптера RemoteFX виртуальной машины, стоит помнить, что система фиксирует эти настройки и не позволяет менять их в терминальной сессии. Таким образом, если в виртуальной машине выбран один монитор 1024х768, то при подключении с клиентского устройства с разрешением 1280х1024 будет использоваться минимальное, фиксированное в системе. Для удобства, можно выставить максимальное для клиентских устройств разрешение и масштабировать размер терминальной сессии на свое усмотрение.
В случае, когда ресурсов видеоадаптера недостаточно для запуска виртуальной машины, вы получите симпатичную ошибку о нехватке ресурсов:
Данная ошибка будет появляться до тех пор, пока в системе не освободится необходимое количество видео-памяти, или пока не будут изменены в меньшую сторону.
Оперативно получать информацию о доступном на серверах Hyper-V количестве видео-памяти будет можно с помощью SCVMM 2008 R2 с последним пакетом обновления(который выйдет в течение 90 дней после релиза SP1).
Также, информацию можно будет получить и через скрипт PowerShell:
PS C:\> $hosts = get-vmhost
PS C:\> foreach ($h in $hosts)
>> {$h.GPUs |ft $h.Name,Name,AvailableVideoMemoryMB}
В качестве результата выполнения скрипта, получится таблица вида
host2… Name AvailableVideoMemoryMB
------ ---- ----------------------
NVIDIA Quadro FX 580 420
Host7… Name
AvailableVideoMemoryMB
------ ---- ----------------------
NVIDIA GeForce 8800… 495
Host1… Name
AvailableVideoMemoryMB
------ ---- ----------------------
NVIDIA GeForce GTX 295 877
NVIDIA Quadro FX 580 420
В случаях, когда на рабочей станции используется несколько видеокарт, их ресурсы часто объединяют для совместного рендера картинки с помощью технологий SLI или CrossFire, в зависимости от производителя. В случае использования видеоадаптеров исключительно под нужды сценариев VDI с RemoteFX, они работают обособлено друг от друга, отвечая за выделенные им виртуальные машины. На данный момент технология поддерживает до 4 видеоадаптеров на сервер и тестировалась в типовых сценариях с нагрузкой до 12 пользователей на GPU.
Ну а так выглядит диспетчер устройств сервера, на котором установлено сразу несколько видеоадаптеров:
Будем надеяться, что в следующих версиях RemoteFX, будет реализован функционал динамического управления видео-памяти и все станет существенно проще. =)