QEMU/KVM in Debian 12

Es gibt einige Einschränkungen beim passthrough, die auch vom Chipsatz abhängig sein können.
An IOMMU group is the smallest set of physical devices that can be passed to a virtual machine. For instance, in the example above, both the GPU in 06:00.0 and its audio controller in 6:00.1 belong to IOMMU group 13 and can only be passed together. The frontal USB controller, however, has its own group (group 2) which is separate from both the USB expansion controller (group 10) and the rear USB controller (group 4), meaning that any of them could be passed to a virtual machine without affecting the others.
https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Ensuring_that_the_groups_are_valid
 
foofoobar schrieb:
lspci -vt und die Hersteller Doku ...
-[0000:00]-+-00.0 Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
+-02.0 Intel Corporation HD Graphics 620
+-14.0 Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller
+-14.2 Intel Corporation Sunrise Point-LP Thermal subsystem
+-16.0 Intel Corporation Sunrise Point-LP CSME HECI #1
+-17.0 Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode]
+-1c.0-[01]--
+-1c.4-[02]----00.0 O2 Micro, Inc. SD/MMC Card Reader Controller
+-1d.0-[03]--
+-1d.2-[04]----00.0 Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
+-1d.3-[05]----00.0 Intel Corporation Wireless 8265 / 8275
+-1f.0 Intel Corporation Sunrise Point-LP LPC Controller
+-1f.2 Intel Corporation Sunrise Point-LP PMC
+-1f.3 Intel Corporation Sunrise Point-LP HD Audio
\-1f.4 Intel Corporation Sunrise Point-LP SMBus

... Nix zu sehen á la "Non-Volatile memory controller" oÄ, dafür aber ein ungenutzter PCIEx4 Port.

00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1) ...
Subsystem: Lenovo Sunrise Point-LP PCI Express Root Port
...
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
...
LnkCap: Port #1, Speed 8GT/s, Width x4, ASPM L0s L1, Exit Latency L0s unlimited, L1 <4us
...
Kernel driver in use: pcieport

Jetzt stellt sich mir die Frage - wäre ein NVME-Slot auf dem Board in der lspci-Ausgabe sichtbar - auch wenn KEINE SSD drin steckt? (hab grad kein alternatives Gerät im Zugriff, um das selbst zu checken)

Hab das Internet natürlich nach weiteren Infos zum Gerät abgegrast (und sogat ein Hardware Maintenance Manual gefunden) - aber sicher ist nur, dass NVME-SSDs funktionieren (in der Bios-Boot-Reihenfolge gibt es sogar ein Item NVME01) - aber keine Info zur Anbindung - und auch keine Performance-Vergleiche zw. SATA- und NVME-SSDs (aus denen man evtl Rückschlüsse ziehen könnte).

Uridium schrieb:
Es gibt einige Einschränkungen beim passthrough ...
Ohjee ... hatte nicht erwartet, dass man sooo weit in die Tiefe gehen muss. Ich kneif mir das erstmal , und setze die VM auf "klassische" Art auf.

Aber inzwischen würde ich glatt aus Neugier eine NVME-SSD kaufen und schauen, was passiert. Der Chipsatz unterstützt max. PCIe 3.0, und 500GB sind für meine Zwecke mehr als genug ... gibt es da eine Empfehlung, oder kann ich dafür "Irgendwas" kaufen?
 
ropf schrieb:
Jetzt stellt sich mir die Frage - wäre ein NVME-Slot auf dem Board in der lspci-Ausgabe sichtbar - auch wenn KEINE SSD drin steckt? (hab grad kein alternatives Gerät im Zugriff, um das selbst zu checken)
sudo dmidecode
 
Hänge die Ausgabe mal als Textdatei an. Ich hab darin keine Hinweise auf einen M.2 Slot gefunden, dafür eine Menge OEM-spezifischen nicht decodierten Kram.

Weiss aber auch nicht, wie es "richtig" auszusehen hat, ob der Hersteller das überhaupt richtig eingetragen hat ... Kann einer der Linux-User mit NVME-SSD bitte mal die Ausgabe von
"sudo dmidecode -t slot"
posten?
 

Anhänge

So ... hatte heute die Gelegenheit, mir eine NVMe-SSD aus einem Arbeitsrechner auszuleihen und in den Laptop zu stecken - die auch prompt in der Ausgabe von lspci erscheint - direkt an einem PCIe-Port - und ohne Umweg über den SATA-Controller.

Die NVMe-SSD ist ca 2,5x schneller beim Lesen, was aber eher an den verbauten Chips liegt, und nicht in der Anbindung, die auch bei SATA bei Weitem nicht ausgelastet ist.

Wenn es jemanden interessiert, poste ich heute abend vergleichende Ausgaben von lspci, hdparm, dd, usw.
 
Zuletzt bearbeitet:
Ok - verglichen wird, im SELBEN M2-Slot - eine SATA-SSD (SanDisk SD8SN8U128G1001), eingebunden als /dev/sdb - mit einer PCIe 4.0 NVME-SSD (Lexar NM790), eingebunden als /dev/nvme0n1.
Das System läuft währenddessen von einer temporär als /dev/sda eingestöpselten 2,5" HD.

lsblk stellt das folgendermassen dar
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298,1G 0 disk
├─sda1 8:1 0 37,3G 0 part /
├─sda2 8:2 0 3,7G 0 part [SWAP]
└─sda3 8:3 0 257,1G 0 part /home
sdb 8:16 0 119,2G 0 disk
├─sdb1 8:17 0 44,7G 0 part
├─sdb2 8:18 0 67,1G 0 part
└─sdb3 8:19 0 7,5G 0 part
sr0 11:0 1 1024M 0 rom
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298,1G 0 disk
├─sda1 8:1 0 37,3G 0 part /
├─sda2 8:2 0 3,7G 0 part [SWAP]
└─sda3 8:3 0 257,1G 0 part /home
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 953,9G 0 disk
├─nvme0n1p1 259:1 0 100M 0 part
├─nvme0n1p2 259:2 0 16M 0 part
├─nvme0n1p3 259:3 0 953,2G 0 part
└─nvme0n1p4 259:4 0 562M 0 part

lspci:
# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 02)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)
00:1d.2 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #11 (rev f1)
00:1d.3 PCI bridge: Intel Corporation Device 9d1b (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
02:00.0 SD Host controller: O2 Micro, Inc. SD/MMC Card Reader Controller (rev 01)
03:00.0 Non-Volatile memory controller: Shenzhen Longsys Electronics Co., Ltd. Device 1602 (rev 01)
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
05:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)

Die NVME-SSD wird durch diesen Eintrag repräsentiert
03:00.0 Non-Volatile memory controller: Shenzhen Longsys Electronics Co., Ltd. Device 1602 (rev 01)
der bei eingesteckter SATA-SSD nicht existiert. Sonst keine Unterschiede.

Ein detaillierterer Blick auf die NVME:
# cat lspci -vv -s 03:00.0
03:00.0 Non-Volatile memory controller: Shenzhen Longsys Electronics Co., Ltd. Device 1602 (rev 01) (prog-if 02 [NVM Express])
Subsystem: Shenzhen Longsys Electronics Co., Ltd. Device 1602
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 16
IOMMU group: 12
Region 0: Memory at e1200000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit+
Address: 0000000000000000 Data: 0000
Masking: 00000000 Pending: 00000000
Capabilities: [70] Express (v2) Endpoint, MSI 1f
DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 25.000W
DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-
MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 16GT/s, Width x4, ASPM L1, Exit Latency L1 <64us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 8GT/s (downgraded), Width x2 (downgraded)
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
10BitTagComp+ 10BitTagReq- OBFF Via message, ExtFmt- EETLPPrefix-
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS- TPHComp- ExtTPHComp-
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled,
AtomicOpsCtl: ReqEn-
LnkCap2: Supported Link Speeds: 2.5-16GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: Upstream Port
Capabilities: [b0] MSI-X: Enable+ Count=9 Masked-
Vector table: BAR=0 offset=00003000
PBA: BAR=0 offset=00002000
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [148 v1] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [158 v1] Power Budgeting <?>
Capabilities: [168 v1] Alternative Routing-ID Interpretation (ARI)
ARICap: MFVC- ACS+, Next Function: 0
ARICtl: MFVC- ACS-, Function Group: 0
Capabilities: [178 v1] Secondary PCI Express
LnkCtl3: LnkEquIntrruptEn- PerformEqu-
LaneErrStat: 0
Capabilities: [198 v1] Physical Layer 16.0 GT/s <?>
Capabilities: [1bc v1] Lane Margining at the Receiver <?>
Capabilities: [220 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [228 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=10us PortTPowerOnTime=1000us
L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
T_CommonMode=0us LTR1.2_Threshold=1015808ns
L1SubCtl2: T_PwrOn=1000us
Capabilities: [238 v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
Capabilities: [338 v1] Vendor Specific Information: ID=0001 Rev=1 Len=038 <?>
Capabilities: [370 v1] Data Link Feature <?>
Kernel driver in use: nvme
Kernel modules: nvme

Von Interesse sind hier die Einträge:
LnkCap: Port #0, Speed 16GT/s, Width x4, ASPM L1, Exit Latency L1 <64us
LnkSta: Speed 8GT/s (downgraded), Width x2 (downgraded)
--> eine PCIe-4.0-SSD steckt in einem PCIe-3.0-Slot, und ist offenbar nur mit 2 Lanes angebunden.

Zum Schluss noch ein einfacher Performance-Tests., SATA-SSD:
# hdparm -Tt /dev/sdb
dev/sdb:
Timing cached reads: 17102 MB in 1.99 seconds = 8600.35 MB/sec
Timing buffered disk reads: 1526 MB in 3.00 seconds = 508.09 MB/sec

Der erste Wert repräsentiert das Lesen aus dem Cache und zeigt im Wesentlichen die Grenzen von CPU und RAM, der zweite sequentielles Lesen von der Platte, ohne Dateisystemoverhead.

Dito für die NVME-SSD:
# hdparm -Tt /dev/nvme0n1
/dev/nvme0n1:
Timing cached reads: 17664 MB in 1.99 seconds = 8884.39 MB/sec
Timing buffered disk reads: 3890 MB in 3.00 seconds = 1296.54 MB/sec

Auffällig ist, dass die SATA-SSD das Interface (max. 600MB/s brutto) fast auslastet - während die NVME-SSD das nicht in dem Maße tut (max. 2000MB/s bei PCIE-3.0x2) - obwohl sie selbst 7400MB/s liefern soll, und das in zeitgemässen Systemen aucht tut 🤔
 
Zuletzt bearbeitet:
ropf schrieb:
Auffällig ist, dass die SATA-SSD das Interface (max. 600MB/s brutto) fast auslastet - während die NVME-SSD das nicht in dem Maße tut (max. 2000MB/s bei PCIE-3.0x2) - obwohl sie selbst 7400MB/s liefern soll, und das in zeitgemässen Systemen aucht tut 🤔
NVME braucht entweder grosse Blöcke und/oder parallele Zugriff um das Interface zu saturieren.

-> https://github.com/axboe/fio
 
ropf schrieb:
Auffällig ist, dass die SATA-SSD das Interface (max. 600MB/s brutto) fast auslastet - während die NVME-SSD das nicht in dem Maße tut (max. 2000MB/s bei PCIE-3.0x2
2000 Mbyte netto mit PCIe 3x2 ist etwas zu optimistisch. In der Realität sind eher um 1500 Mbyte möglich. Die von Dir gemessenen 1296 sind da schon halbwegs im Rahmen.
 
Zurück
Oben