Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Open-gpu-kernel-modules » : différence entre les versions

De Le Wiki de Lug
Ligne 29 : Ligne 29 :
  # cat /proc/cmdline
  # cat /proc/cmdline


=== Recommandé : désactiver ACS sur les ports PCIe concernés ===
=== Recommandé : vérifier et désactiver ACS sur les ports PCIe concernés ===


Lorsque l’ACS est activé sur les ports racine, le trafic GPU à GPU peut être redirigé vers le complexe racine du processeur, ce qui réduit fortement la bande passante P2P.
Lorsque l’ACS est activé sur les ports racine ou les bridges PCIe, le trafic GPU à GPU peut être redirigé vers le complexe racine du processeur, ce qui réduit fortement la bande passante P2P.


==== Via le BIOS ====
Tous les ports PCIe n’exposent cependant pas nécessairement ACS. Il faut donc commencer par identifier les ports utilisés par les GPU, puis vérifier si ACS est présent et actif sur ceux-ci.
 
Certaines cartes mères permettent de désactiver directement l’ACS sur les ports PCIe depuis le BIOS. Lorsqu’elle est disponible, cette méthode est à privilégier.
 
==== Via le noyau Linux ====


Le noyau Linux permet de désactiver les fonctions de redirection ACS sur des ports PCIe précis avec l’option <code>pci=disable_acs_redir=</code>. Cette méthode est disponible avec le noyau Debian standard et ne nécessite pas de patch.
==== Identifier les ports PCIe utilisés par les GPU ====


* On commence par identifier le ou les ports PCIe concernés :
* On affiche la topologie PCIe :
  # lspci -tv
  # lspci -tv


Ligne 53 : Ligne 49 :
  <font color = grey>...</font>
  <font color = grey>...</font>


Les deux ports PCIe à modifier seront donc <code>0000:00:01.0</code> et <code>0000:00:01.1</code>.
Dans cet exemple, les deux GPU sont respectivement connectés aux ports PCIe <code>0000:00:01.0</code> et <code>0000:00:01.1</code>.
 
==== Vérifier l’état d’ACS ====
 
* On vérifie si les ports concernés exposent ACS :
# lspci -s 0000:00:01.0 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
# lspci -s 0000:00:01.1 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
 
Si aucune ligne n’est retournée, le port concerné n’expose pas ACS et aucune modification n’est nécessaire.
 
Si ACS est présent, une sortie de ce type peut apparaître :
 
Capabilities: [140 v1] Access Control Services
        ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
        ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
 
Les indicateurs <code>ReqRedir+</code> et <code>CmpltRedir+</code> indiquent que les fonctions de redirection ACS sont activées.
 
Si ces indicateurs sont actifs sur un port situé sur le chemin entre les GPU, il est recommandé de désactiver la redirection ACS.
 
==== Via le BIOS ====
 
Certaines cartes mères permettent de désactiver directement ACS sur les ports PCIe depuis le BIOS. Lorsqu’elle est disponible, cette méthode est à privilégier.
 
==== Via le noyau Linux ====
 
Le noyau Linux permet de désactiver les fonctions de redirection ACS sur des ports PCIe précis avec l’option <code>pci=disable_acs_redir=</code>. Cette méthode est disponible avec le noyau Debian standard et ne nécessite pas de patch.


* On édite GRUB :
* On édite GRUB :
Ligne 63 : Ligne 85 :
  GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt</font> pci=disable_acs_redir=0000:00:01.0;0000:00:01.1<font color="grey">"
  GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt</font> pci=disable_acs_redir=0000:00:01.0;0000:00:01.1<font color="grey">"
  ...</font>
  ...</font>
Plusieurs ports peuvent être indiqués en les séparant par un point-virgule.


* On met à jour GRUB :
* On met à jour GRUB :
Ligne 73 : Ligne 97 :
  # cat /proc/cmdline
  # cat /proc/cmdline


* On vérifie ensuite si les ports concernés exposent ACS et, le cas échéant, l’état de ses fonctions de redirection :
* On vérifie ensuite à nouveau l’état ACS des ports concernés :
  # lspci -s 0000:00:01.0 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
  # lspci -s 0000:00:01.0 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
  # lspci -s 0000:00:01.1 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
  # lspci -s 0000:00:01.1 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'


Si aucune ligne n’est retournée, le port concerné n’expose pas ACS et il n’y a rien à désactiver sur celui-ci.
Si ACS est présent, les indicateurs <code>ReqRedir</code> et <code>CmpltRedir</code> doivent désormais apparaître désactivés (<code>-</code>).
 
Si ACS est présent, les indicateurs <code>ReqRedir</code> et <code>CmpltRedir</code> doivent apparaître désactivés (<code>-</code>) après application de l’option.

Version du 7 août 2026 à 08:45

Source.

Prérequis

  • Un ou plusieurs GPU NVIDIA grand public dont la fonction P2P est désactivée par le pilote.
  • Recommandé : activer l’option Above 4G Decoding dans le BIOS de la carte mère, particulièrement avec plusieurs GPU. Activer également Resizable BAR si la plateforme le permet.
  • Recommandé : utiliser un démarrage en mode UEFI et désactiver le CSM. Cette configuration facilite la gestion de plusieurs GPU, l’allocation des ressources PCIe au-dessus de 4 Gio via Above 4G Decoding et l’utilisation éventuelle de Resizable BAR

Activer le mode de passthrough DMA pour l’IOMMU

  • On édite Grub :
# vi /etc/default/grub

On ajoute à la variable GRUB_CMDLINE_LINUX_DEFAULT les options suivantes :

  • Sur plateforme Intel : intel_iommu=on iommu=pt
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
...
  • Sur plateforme AMD : amd_iommu=on iommu=pt
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
...
  • On met à jour GRUB :
# update-grub
  • On redémarre :
# reboot
  • Après redémarrage, on vérifie que les paramètres sont bien appliqués :
# cat /proc/cmdline

Recommandé : vérifier et désactiver ACS sur les ports PCIe concernés

Lorsque l’ACS est activé sur les ports racine ou les bridges PCIe, le trafic GPU à GPU peut être redirigé vers le complexe racine du processeur, ce qui réduit fortement la bande passante P2P.

Tous les ports PCIe n’exposent cependant pas nécessairement ACS. Il faut donc commencer par identifier les ports utilisés par les GPU, puis vérifier si ACS est présent et actif sur ceux-ci.

Identifier les ports PCIe utilisés par les GPU

  • On affiche la topologie PCIe :
# lspci -tv

Exemple de résultat :

...
-[0000:00]-+-00.0  Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers
           +-01.0-[01]--+-00.0  NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate]
           |            \-00.1  NVIDIA Corporation GA106 High Definition Audio Controller
           +-01.1-[02]--+-00.0  NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate]
           |            \-00.1  NVIDIA Corporation GA106 High Definition Audio Controller
...

Dans cet exemple, les deux GPU sont respectivement connectés aux ports PCIe 0000:00:01.0 et 0000:00:01.1.

Vérifier l’état d’ACS

  • On vérifie si les ports concernés exposent ACS :
# lspci -s 0000:00:01.0 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
# lspci -s 0000:00:01.1 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'

Si aucune ligne n’est retournée, le port concerné n’expose pas ACS et aucune modification n’est nécessaire.

Si ACS est présent, une sortie de ce type peut apparaître :

Capabilities: [140 v1] Access Control Services
        ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
        ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-

Les indicateurs ReqRedir+ et CmpltRedir+ indiquent que les fonctions de redirection ACS sont activées.

Si ces indicateurs sont actifs sur un port situé sur le chemin entre les GPU, il est recommandé de désactiver la redirection ACS.

Via le BIOS

Certaines cartes mères permettent de désactiver directement ACS sur les ports PCIe depuis le BIOS. Lorsqu’elle est disponible, cette méthode est à privilégier.

Via le noyau Linux

Le noyau Linux permet de désactiver les fonctions de redirection ACS sur des ports PCIe précis avec l’option pci=disable_acs_redir=. Cette méthode est disponible avec le noyau Debian standard et ne nécessite pas de patch.

  • On édite GRUB :
# vi /etc/default/grub

On ajoute à la variable GRUB_CMDLINE_LINUX_DEFAULT l’option pci=disable_acs_redir= suivie de l’adresse des ports PCIe concernés :

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pci=disable_acs_redir=0000:00:01.0;0000:00:01.1"
...

Plusieurs ports peuvent être indiqués en les séparant par un point-virgule.

  • On met à jour GRUB :
# update-grub
  • On redémarre :
# reboot
  • Après redémarrage, on vérifie que l’option a bien été appliquée :
# cat /proc/cmdline
  • On vérifie ensuite à nouveau l’état ACS des ports concernés :
# lspci -s 0000:00:01.0 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
# lspci -s 0000:00:01.1 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'

Si ACS est présent, les indicateurs ReqRedir et CmpltRedir doivent désormais apparaître désactivés (-).