
내 Linux 노트북에는 두 개의 VGA 호환 컨트롤러가 있습니다(정보 lshw
:
- 제품: GK107 [GeForce GT 640M]
물리적 ID: 0
버스 정보: pci@0000:01:00.0
..
클럭: 33MHz
기능: pm msi pciexpress vga_controller 버스_마스터 cap_list
구성: 드라이버=nouveau 대기 시간=0
리소스: irq:16 메모리: f2000000-f2ffffff 메모리:e0000000-efffffff 메모리:f0000000-f1ffffff ioport:3000(크기=128) - 제품: 3세대 코어 프로세서 그래픽 컨트롤러
물리적 ID: 2
버스 정보: pci@0000:00:02.0
클럭: 33MHz
기능: msi pm vga_controller bus_master cap_list rom
구성: 드라이버=i915 대기 시간=0
리소스: irq:44 메모리:f3000000- f33fffff 메모리:d0000000-dffffffff ioport:4000(크기=64)
lspci | grep VGA
산출:
- 00:02.0 VGA 호환 컨트롤러: Intel Corporation 3세대 코어 프로세서 그래픽 컨트롤러(rev 09)
- 01:00.0 VGA 호환 컨트롤러: NVIDIA Corporation GK107 [GeForce GT 640M] (rev a1)
실행하면 glxgears
다음과 같은 출력이 표시됩니다(응용 프로그램이 실행되는 동안).
libGL 오류: 드라이버를 로드하지 못했습니다: i965 libGL 오류: 자세한 내용을 보려면 LIBGL_DEBUG=verbose로 다시 시도하세요. XIO: X 서버 ":0"에서 치명적인 IO 오류 11(리소스를 일시적으로 사용할 수 없음) 2968개의 요청(2966개의 알려진 처리됨) 후 남은 이벤트는 0개입니다.
그럼 인텔 VGA에서는 실패할 것 같은데요?
다음 드라이버를 설치했습니다.
- 인텔-드라이
- xf86-video-intel 2.20(X.org Intel i810/i830/i915/945G/G965+ 비디오 드라이버)
- xf86-비디오 누보
1시스템/프로그램에서 어떤 컨트롤러가 사용되는지 어떻게 확인할 수 있나요??
2특정 컨트롤러가 사용되도록 하려면 어떻게 해야 합니까??
3 출력에서 i915 대신 드라이버 i965가 로드되었는지 어떻게 확인할 수 있습니까 lshw
? (내 인텔 agp에 적합)
4lshw
쇼를 하는 이유클럭: 33MHz? GeForce 640M의 경우 625MHz여야 합니다..
저는 리눅스 아치를 사용하고 있습니다.
답변1
현재 시스템/프로그램에서 어떤 그래픽 컨트롤러를 사용하고 있는지 확인하려면 다음 두 명령을 사용하십시오.
grep LoadModule /var/log/Xorg.0.log grep Driver /etc/X11/xorg.conf
첫 번째는 로드된 모든 모듈(또는 X가 로드하려고 시도한 모듈)의 목록을 제공하고, 두 번째는 상자에서 실행되도록 구성된 모든 장치의 목록을 제공합니다. 이러한 tho 파일의 교차점을 통해 컨트롤러를 실행할 수 있습니다.
그것을 정의하십시오
/etc/X11/xorg.conf
너무 자세히 설명하지 말고 섹션
Driver
별로 줄을 정의하세요Device
.에 설치 및 구성되어 있으면
/etc/X11/xorg.conf
실행됩니다. 드라이버는 때때로 일반적이라는 점을 명심하십시오.엔비디아은 모든 nvidia 카드의 드라이버이므로 i915가 i965에 적합한 드라이버가 될 수 있습니다.@Hennes는 이미 위에서 부분적으로 답변했습니다.
lshw
PCI 또는 PCIe의 모든 장치에 대한 PCI 버스 속도를 표시하는 것은 버그인 것 같습니다 . 이 사진을 확인하세요:엔비디아 지포스 GT220(내 것은 아니지만 두 개의 NVidia와 lshw가 둘 다 33MHz를 나타냅니다.)
답변2
- 4
625는 PCIe의 버스 주파수가 아닙니다. 라인 속도, 플러그 속도, PCI 버스 속도를 혼동하시는 것 같은데요. 회선 속도는 비트당 비트입니다. PCI 버스의 너비는 32b입니다. 따라서 PCI 버스는 33MHz*32=1056Mb/s(모든 장치 간에 공유)를 견딜 수 있습니다. PCIe v1은 라인당 2.5GT/s를 제공하지만 트랜잭션은 비트가 아닙니다(트랜잭션은 데이터 라인의 비트이지만 데이터 라인은 많은 패킷 설명 헤더를 전송해야 하므로 2.3Gb/s를 바랄 수 있음) 한 줄에 s).
하지만 ... PCIe는 같은 방식으로 매핑되지 않습니다. 실제로 동적으로 라우팅되고 할당됩니다. 따라서 도터 카드는 PCI 버스(32b 33MHz로 읽음)에서 선언되지만 물리적으로 PCI 스위치에 매핑됩니다. 스위치는 명시되지 않은 속도로 더 많은 리소스(64b 너비)를 할당할 수 있습니다.
USB도 거의 똑같습니다. USB3은 480Mb/s라는 허브를 통해 설정된 5Gb/s 속도입니다. 루트 허브는 "고속"(480) 이상을 선언할 수 없습니다. 따라서 장치가 거기에 매핑됩니다. 단, "고속링크" 내부에서는 "5Gb/s 데이터 속도"를 사용할 수 있습니다. 이것이 USB3가 주변에 있을 때 USB 트리가 항상 2개의 트리를 표시하는 이유입니다. USB3 장치는 이중 매핑됩니다. 무엇보다도 전원 관리를 위해 USB2 트리 내에서 USB3 장치를 매핑해야 합니다(다른 USB2 장치를 추가한 후 분기당 소비되는 총 전류를 계산하기 위해).
그렇기 때문에 33MHz 버스 아래에 625MHz 항목이 나타나는 것에 놀라거나 걱정하지 않습니다.
아니면 625가 RAM 속도일 수도 있고 PCI 버스와 전혀 관련이 없을 수도 있습니다.
답변3
- 1
드라이버 파트너가 카드를 취급하는지 확인하려면 다음 단계를 따르세요.
$ 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
어떤 카드가 X의 기본 카드인지 확인하려면 다음을 수행하세요.
$ 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
그러나 X가 카드를 전혀 처리하지 않더라도 커널은 사용 중인 드라이버를 표시합니다.
- 2 / 3
xorg.conf는 (매우) 도움이 될 수 있지만, 나는 이미 Xorg가 conf를 무시하고 심지어 말하지도 않을 수 있다는 사실에 대해(또는 그 이유도) Xorg에 대한 12개의 버그를 보고했습니다.