Sous Linux, existe-t-il un moyen de savoir quelle carte PCI est branchée dans quel emplacement PCI?
/ sys/bus/pci/devices/contient de nombreux périphériques (ponts, canaux CPU, etc.) qui ne sont pas des cartes et je n'ai pas pu trouver d'informations sur les mappages de cartes à sous dans les répertoires des périphériques.
Vous pouvez utiliser
dmidecode –t slot
pour trouver tous les emplacements PCI disponibles que vous pouvez exécuter
lspci -s <slot number>
pour répertorier le périphérique connecté à l'emplacement spécifié. Vous devez prendre l'adresse du bus de la première commande et utiliser cette adresse comme paramètre dans la deuxième commande.
La réponse de Nebojsa est bonne, mais voici un peu plus d'informations et une réponse au commentaire de magmabyte.
dmidecode
vous donne le nombre d'emplacements, cependant, ces emplacements ne sont pas les seuls à utiliser le pont PCI, c'est pourquoi vous voyez beaucoup plus de périphériques que d'emplacements.
Deuxièmement, vous pouvez voir plusieurs "périphériques" par emplacement, mais ce ne sont probablement que plusieurs ports sur la même carte. Pour vous donner un exemple d'utilisation de cartes d'interface réseau (NIC):
megaman@someserver $ lspci | grep 10Gb
07:00.0 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (rev 02)
07:00.1 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (rev 02)
dmidecode
indique que ce serveur a trois emplacements (et c'est le cas). L'emplacement 1 a le 10 Go NIC ci-dessus (vous pouvez voir qu'il a 2 ports), l'emplacement 2 a une carte Fibre Channel (qui se trouve également avoir 2 ports), et enfin l'emplacement 3 est vide .
Il y a trois emplacements physiques sur le serveur, un est vide, deux sont remplis de cartes multi-ports (un HBA et une NIC).
Pour répondre à votre question dans le commentaire, les 3 emplacements dont vous disposez sont ceux indiqués par dmidecode
et ils sont probablement remplis de cartes d'interface multi-ports.