Включение поддержки сквозной передачи и виртуализации графических карт в вычислительном кластере

Включение поддержки сквозной передачи и виртуализации графических карт в вычислительном кластере#

Чтобы включить поддержку сквозной передачи и виртуализации графических карт в вычислительном кластере, необходимо создать конфигурационный файл в формате YAML, а затем использовать его для перенастройки вычислительного кластера.

Предварительные требования

Создание конфигурационного файла для режима сквозной передачи и виртуализации графических карт

Укажите идентификатор сервера, где расположены PCI-устройства, а затем добавьте устройства, для которых необходимо использовать режим сквозной передачи или виртуализацию:

  • Чтобы создать виртуальную функцию для сетевого адаптера, добавьте следующие строки:

    - device_type: sriov
      device: enp2s0
      physical_network: sriovnet
      num_vfs: 8
    

    Где:

    • sriov — тип устройства для сетевого адаптера

    • enp2s0 — имя устройства для сетевого адартера

    • sriovnet — произвольное имя, которое будет использоваться в качестве псевдонима для сетевого адаптера

    • num_vfs — количество виртуальных функций, которые будут созданы для сетевого адаптера

    Максимальное количество виртуальных функций, поддерживаемое PCI-устройством, указано в файле /sys/class/net/<device_name>/device/sriov_totalvfs. Например:

    # cat /sys/class/net/enp2s0/device/sriov_totalvfs
    63
    
  • Чтобы включить поддержку сквозной передачи для графическиой карты, добавьте следующие строки:

    - device_type: generic
      device: 1b36:0100
      alias: gpu
    

    Где:

    • generic — тип устройства для физической графической карты, для которой будет включен режим сквозной передачи

    • 1b36:0100 — VID и PID физической графической карты

    • gpu — произвольное имя, которое будет использоваться как псевдоним для физической графической карты

  • Чтобы включить поддержку виртуализации для физической графической карты, добавьте следующие строки:

    - device_type: pgpu
      device: "0000:03:00.0"
      vgpu_type: nvidia-224
    

    Где:

    • pgpu — тип устройства для физической графической карты, которая будет виртуализована

    • "0000:03:00.0" — PCI-адрес физической графической карты

    • nvidia-224 — тип виртуальной графической карты, который будет включен для указанной физической графической карты

Пример конфигурационного файла, который должен получиться в итоге:

# cat config.yaml
- node_id: c3b2321a-7c12-8456-42ce-8005ff937e12
  devices:
    - device_type: sriov
      device: enp2s0
      physical_network: sriovnet
      num_vfs: 8
    - device_type: generic
      device: 1b36:0100
      alias: gpu
    - device_type: pgpu
      device: "0000:01:00.0"
      vgpu_type: nvidia-232
- node_id: 1d6481c2-1fd5-406b-a0c7-330f24bd0e3d
  devices:
    - device_type: generic
      device: 10de:1eb8
      alias: gpu
    - device_type: pgpu
      device: "0000:03:00.0"
      vgpu_type: nvidia-224
    - device_type: pgpu
      device: "0000:81:00.0"
      vgpu_type: nvidia-228

Настройка вычислительного кластера для использования режима сквозной передачи и виртуализации графических карт

Укажите конфигурационный файл, который был подготовлен ранее, при запуске команды vinfra service compute set. Например:

# vinfra service compute set --pci-passthrough-config config.yaml

Если перенастройка вычислительного кластера завершается ошибкой

Проверьте, есть ли следующая ошибка в /var/log/vstorage-ui-backend/ansible.log:

2021-09-23 16:42:59,796 p=32130 u=vstoradmin | fatal: [32c8461b-92ec-48c3-ae02-
4d12194acd02]: FAILED! => {"changed": true, "cmd": "echo 4 > /sys/class/net/
enp103s0f1/device/sriov_numvfs", "delta": "0:00:00.127417", "end": "2021-09-23
19:42:59.784281", "msg": "non-zero return code", "rc": 1, "start": "2021-09-23
19:42:59.656864", "stderr": "/bin/sh: line 0: echo: write error: Cannot allocate
memory", "stderr_lines": ["/bin/sh: line 0: echo: write error: Cannot allocate memory"],
"stdout": "", "stdout_lines": []}

В этом случае запустите сценарий pci-helper.py и перезагрузите сервер:

# /usr/libexec/vstorage-ui-agent/bin/pci-helper.py enable-iommu --pci-realloc
# reboot

Когда сервер возобновит работу, выполните команду vinfra service compute set еще раз.