So überprüfen Sie, welcher Grafikcontroller verwendet wird

So überprüfen Sie, welcher Grafikcontroller verwendet wird

Auf meinem Linux-Laptop habe ich zwei VGA-kompatible Controller (Informationen von lshw):

  • Produkt: GK107 [GeForce GT 640M]
    physikalische ID: 0
    Businfo: pci@0000:01:00.0
    ..
    Takt: 33 MHz
    Fähigkeiten: pm msi pciexpress vga_controller bus_master cap_list
    Konfiguration: Treiber=nouveau Latenz=0
    Ressourcen: irq:16 Speicher:f2000000-f2ffffff Speicher:e0000000-effffffff Speicher:f0000000-f1ffffff IO-Port:3000(Größe=128)
  • Produkt: Core-Prozessor der 3. Generation, Grafikcontroller,
    physische ID: 2,
    Businfo: PCI@0000:00:02.0,
    Takt: 33 MHz,
    Fähigkeiten: MSI PM VGA_Controller, Bus_Master, Cap_List, ROM-
    Konfiguration: Treiber=i915, Latenz=0,
    Ressourcen: IRQ:44, Speicher:f3000000-f33fffff, Speicher:d0000000-dfffffff, I/O-Port:4000 (Größe=64)

lspci | grep VGAAusgabe:

  • 00:02.0 VGA-kompatibler Controller: Grafikcontroller für Intel Corporation Core-Prozessoren der 3. Generation (Rev. 09)
  • 01:00.0 VGA-kompatibler Controller: NVIDIA Corporation GK107 [GeForce GT 640M] (rev a1)

Beim Ausführen glxgearserhalte ich die folgende Ausgabe (während die Anwendung ausgeführt wird):

libGL-Fehler: Treiber konnte nicht geladen werden: i965
 LibGL-Fehler: Versuchen Sie es erneut mit LIBGL_DEBUG=verbose, um weitere Details zu erhalten.
 XIO: Schwerwiegender IO-Fehler 11 (Ressource vorübergehend nicht verfügbar) auf X-Server ":0"
       nach 2968 Anfragen (2966 bekanntermaßen verarbeitet) mit 0 verbleibenden Ereignissen.

Ich nehme also an, dass es mit Intel VGA fehlschlägt?

Ich habe folgende Treiber installiert:

  • intel-dri
  • xf86-video-intel 2.20 (X.org Intel i810/i830/i915/945G/G965+ Grafiktreiber)
  • xf86-video-nouveau

1Wie kann ich überprüfen, welcher Controller vom System/den Programmen verwendet wird??

2Wie kann ich sicherstellen, dass ein bestimmter Controller verwendet wird??

3. Wie kann ich sicherstellen, dass der Treiber i965 und nicht i915 (aus der Ausgabe) geladen wird lshw? (der richtige für meinen Intel AGP)

4Warum lshwzeigtTakt: 33MHz? Für GeForce 640M sollten es 625 MHz sein.

Ich verwende Linux Arch.

Antwort1

  1. Um herauszufinden, welcher Grafikcontroller aktuell vom System/den Programmen verwendet wird, verwenden Sie die folgenden beiden Befehle:

    grep LoadModule /var/log/Xorg.0.log
    grep Driver /etc/X11/xorg.conf
    

    Das erste gibt Ihnen eine Liste aller geladenen Module (oder Module, die X zu laden versuchte), und das zweite gibt Ihnen eine Liste aller Geräte, die für den Betrieb auf Ihrer Box konfiguriert sind. Die Schnittmenge dieser beiden Dateien ergibt den laufenden Controller.

  2. Definieren Sie es in/etc/X11/xorg.conf

    Gehen Sie nicht zu sehr ins Detail, sondern definieren Sie Driverdie Zeile im DeviceAbschnitt.

  3. Wenn es in installiert und konfiguriert ist /etc/X11/xorg.conf, wird es ausgeführt. Bitte beachten Sie, dass Treiber manchmal generisch sind, d. h.nvidiaist der Treiber für alle NVIDIA-Karten, daher könnte i915 der geeignete Treiber für i965 sein.

  4. @Hennes hat oben bereits teilweise darauf geantwortet. Es scheint ein lshwFehler zu sein, die PCI-Busgeschwindigkeit für jedes Gerät entweder auf PCI oder PCIe anzuzeigen. Sehen Sie sich dieses Bild an:NVidia GeForce GT220(nicht meiner, aber ich habe zwei NVidias und lshw zeigt für beide 33 MHz an).

Antwort2

  • 4

625 ist keine Busfrequenz für PCIe. Ich glaube, Sie verwechseln die Leitungsgeschwindigkeit, die Steckergeschwindigkeit und die PCI-Busgeschwindigkeit. Die Leitungsgeschwindigkeit ist Bit für Bit. Während der PCI-Bus 32 Bit breit ist. Ein PCI-Bus kann also 33 MHz*32 = 1056 Mbit/s aushalten (geteilt zwischen allen Geräten). Während PCIe v1 2,5 GT/s pro Leitung bietet, ist eine Transaktion kein Bit (eine Transaktion ist ein Bit auf der Datenleitung, aber Datenleitungen müssen viele Paketbeschreibungsheader übertragen; Sie können also auf 2,3 Gb/s pro Leitung hoffen).

Aber ... PCIe wird nicht auf die gleiche Weise abgebildet; tatsächlich wird es dynamisch geroutet und zugewiesen. Tochterkarten werden also auf einem PCI-Bus deklariert (sprich 32b 33 MHz), aber physisch auf dem PCI-Switch abgebildet; und der Switch kann mehr Ressourcen (64b Breite) mit nicht angegebener Geschwindigkeit zuweisen.

Bei USB ist es ungefähr das gleiche Durcheinander. USB3 hat eine Geschwindigkeit von 5 Gb/s, die über einen Hub mit 480 Mb/s aufgebaut wird. Der Root-Hub kann nie mehr als „High Speed“ (480) deklarieren. Das Gerät wird also dort zugeordnet. Innerhalb der „High Speed-Verbindung“ können Sie jedoch eine „Datenrate von 5 Gb/s“ verwenden. Deshalb werden bei USB3 immer zwei Bäume angezeigt und USB3-Geräte werden doppelt zugeordnet. Die Zuordnung eines USB3-Geräts innerhalb des USB2-Baums ist unter anderem für die Energieverwaltung erforderlich (um den Gesamtstromverbrauch pro Zweig nach dem Hinzufügen anderer USB2-Geräte zu berechnen).

Aus diesem Grund bin ich weder überrascht noch beunruhigt, ein 625-MHz-Element unter einem 33-MHz-Bus zu sehen.

Oder vielleicht ist 625 die RAM-Geschwindigkeit und hat überhaupt nichts mit dem PCI-Bus zu tun.

Antwort3

  • 1

So erfahren Sie, ob eine Karte von einem Treiber verwendet wird:

$ lspci | grep -E "VGA|3D" | cut -f1 -d" " | while read id ; do lspci -v -s $id ; done | grep -i -e "VGA" -e "3D" -e "Kernel driver" -e "Kernel module"
01:05.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RS880 [Radeon HD 4200] (prog-if 00 [VGA controller])
        Kernel driver in use: radeon
        Kernel modules: radeon
02:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Radeon HD 4350/4550] (prog-if 00 [VGA controller])
        Kernel driver in use: radeon
        Kernel modules: radeon
03:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Radeon HD 4350/4550] (prog-if 00 [VGA controller])
        Kernel driver in use: radeon
        Kernel modules: radeon

# lspci | grep -E "VGA|3D" | cut -f1 -d" " | while read id ; do lspci -v -s $id ; done | grep -i -e "VGA" -e "3D" -e "Kernel driver" -e "Kernel module"
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) (prog-if 00 [VGA controller])
        Kernel driver in use: i915
        Kernel modules: i915
01:00.0 VGA compatible controller: NVIDIA Corporation GF108GLM [NVS 5200M] (rev a1) (prog-if 00 [VGA controller])
        Kernel driver in use: nvidia
        Kernel modules: nvidia

So ermitteln Sie, welche Karte die Standardkarte für X ist:

$ cat /var/log/Xorg.0.log | grep "PCI:"
[  4328.398] (--) PCI: (0:1:5:0) 1002:9710:1458:d000 rev 0, Mem @ 0xd8000000/134217728, 0xfdae0000/65536, 0xfd900000/1048576, I/O @ 0x0000ae00/256
[  4328.398] (--) PCI:*(0:2:0:0) 1002:954f:1462:1618 rev 0, Mem @ 0xb0000000/268435456, 0xfd6e0000/65536, I/O @ 0x0000ee00/256, BIOS @ 0x????????/131072
[  4328.398] (--) PCI: (0:3:0:0) 1002:954f:1462:1618 rev 0, Mem @ 0xc0000000/268435456, 0xfdfe0000/65536, I/O @ 0x0000de00/256, BIOS @ 0x????????/131072

# cat /var/log/Xorg.0.log | grep "PCI:"
[    30.924] (--) PCI:*(0@0:2:0) 8086:0166:1028:0534 rev 9, Mem @ 0xf6400000/4194304, 0xd0000000/268435456, I/O @ 0x0000f000/64, BIOS @ 0x????????/131072
[    30.924] (--) PCI: (1@0:0:0) 10de:0dfc:1028:1534 rev 161, Mem @ 0xf5000000/16777216, 0xe0000000/268435456, 0xf0000000/33554432, I/O @ 0x0000e000/128, BIOS @ 0x????????/524288

Der Kernel zeigt jedoch den verwendeten Treiber an, auch wenn X die Karte überhaupt nicht verarbeitet.

  • 2 / 3

xorg.conf kann (sollte enorm) helfen, aber ich habe bereits ein Dutzend Fehler bei Xorg gemeldet, bei denen es um die Tatsache ging, dass es die Konfiguration ignorieren könnte, ohne es zu erwähnen (und auch nicht, warum).

verwandte Informationen