Přeskočit na obsah
8 článků nejnovější: OCuLink – změňte miniPC na herní bestii

linuxgaming.cz — Magazín o hraní na Linuxu

Magazín o hraní na Linuxu

OCuLink – změňte miniPC na herní bestii

Úvod Externí grafické karty (eGPU) nejsou novinka a už dříve jsme se mohli setkat s různými rozhraními, které umožňovaly připojit […]

Úvod

Externí grafické karty (eGPU) nejsou novinka a už dříve jsme se mohli setkat s různými rozhraními, které umožňovaly připojit grafickou kartu a mít ji „na stole“ místo v počítači. Výhodou je, že takovou grafickou kartu můžete připojit i k miniPC (například Asome UM890 Pro) a nemusíte mít doma velkou ATX skříň jen proto, že si chcete občas zahrát.

Externí rozhraní se u miniPC a notebooků dlouho stavěly na Thunderboltu. Ten je univerzální, ale grafická karta se přes něj připojuje jako tunelované PCIe zařízení, tedy s režií a omezenou propustností. OCuLink jde opačnou cestou: vyvede PCIe linky z počítače ven bez převodu na jiný protokol. Proto se v posledních letech prosadil u miniPC s procesory AMD Ryzen a Intel Core Ultra, které mají OCuLink port přímo na desce nebo umožňují převod z M.2 slotu.

Tento článek popisuje, jak technologie funguje, proč se na Linuxu obejde bez speciálních ovladačů, co je potřeba k provozu na distribuci Bazzite s grafickou kartou ASROCK Radeon RX 9060 XT Challenger 16GB OC (dále jen RX 9060 XT) — a rovnou přinášíme i naměřené srovnání výkonu téže karty ve dvou zapojeních: přes OCuLink v miniPC a přímo v základní desce ATX PC. Zajímalo nás, jestli přes OCuLink ztratíme nějaký výkon a případně kolik.

OCuLink (Optical Copper Link) je specifikace organizace PCI-SIG, původně určená pro připojení NVMe úložišť a PCIe periferií v serverech. Navzdory názvu využívají všechny praktické implementace měděné kabely, optická varianta se nerozšířila. Specifikace vznikla v roce 2015 pro PCIe 3.0, novější revize podporuje PCIe 4.0.

Běžné provedení je čtyřlinkové (x4) s konektorem SFF-8611. Signály putují přímo z PCIe řadiče procesoru nebo čipsetu, případně přes redriver či adaptér z M.2 slotu (M-key). Grafická karta v externím doku se tak na úrovni systému chová jako zařízení zapojené do interního slotu. Neexistuje žádný řadič ani tunelovací vrstva, která by přenos zpožďovala nebo zpracovávala.

Praktická propustnost odpovídá PCIe 4.0 x4: při 16 GT/s na linku a kódování 128b/130b vychází zhruba 7,9 GB/s v každém směru. RX 9060 XT (ASROCK Challenger 16GB OC) je nativně PCIe 5.0 x16 (přibližně 63 GB/s), takže přes OCuLink pracuje jen s osminovou šířkou pásma. Sběrnice se automaticky dojedná na nejvyšší společnou rychlost obou stran.

Srovnání s Thunderboltem a USB4

OCuLink (PCIe 4.0 x4)Thunderbolt 4 / USB4 (40 Gbit/s)
Principnativní PCIe linkyPCIe tunelované přes protokol
Teoretická propustnost pro PCIe~7,9 GB/s32 Gbit/s (odpovídá PCIe 3.0 x4, ~3,9 GB/s)
Reálná propustnostblízká teoretickétypicky ~2,5–3 GB/s podle řadiče
Latenceminimálnívyšší (řadič, tunelování)
Napájení a video přes kabelneano
Hot-plugprakticky nepodporovánpodporován

Thunderbolt 5 a USB4 v2 se propustností přibližují, ale režie tunelování zůstává. OCuLink nabízí nejvyšší výkon za nejnižší cenu, ale s omezeními, která je nutné respektovat.

Omezení

  • Bez hot-plugu. Kabel se zapojuje a odpojuje při vypnutém systému. Spec s tím počítá jen na úrovni sideband signálů a běžné spotřebitelské implementace to nepodporují spolehlivě.
  • Vlastní napájení. Kabel nenese žádný proud, dok potřebuje vlastní zdroj (typicky ATX nebo SFX) pro grafickou kartu.
  • Pořadí zapnutí. Nejprve se zapne dok, poté počítač, jinak se zařízení nemusí při enumeraci PCIe objevit.
  • Délka kabelu. Kvůli integritě signálu u PCIe 4.0 se používají krátké kabely, řádově desítky centimetrů.
  • Šířka linky. Ne každý miniPC vede na port plné čtyři linky PCIe 4.0. Některé modely mají x2 nebo PCIe 3.0. Zjistí se z dokumentace a ověří v systému (viz níže).

Klíčová vlastnost pro Linux: OCuLink nevyžaduje žádný vlastní ovladač ani službu. Pro jádro jde o běžné PCIe zařízení, které se objeví při enumeraci sběrnice při startu, stejně jako karta v interním slotu. Odpadá správa zařízení přes bolt a boltctl, autorizace zařízení i tunelování, na které je u Thunderboltu potřeba spoléhat.

To znamená, že softwarová podpora se redukuje na běžný ovladač grafické karty. Po startu systému jsou v lspci viditelné obě grafiky:

bash
lspci -nn | grep -Ei "vga|3d|display"

Testovali jsme na stroji ASOME Gaming UM890 Pro, který OCuLink nabízí. Integrovaná Radeon 780M i externí RX 9060 XT jsou obsluhovány stejným ovladačem amdgpu a Mesa. Obě GPU koexistují, s tím související volba, která z nich renderuje, je popsána níže.

Tady je rozdíl oproti Windows 11 docela zásadní: po připojení externí GPU tam systém integrovanou grafiku ve Správci zařízení rovnou zakáže, čímž se stane fakticky nepoužitelnou — pokud by monitor zůstal zapojený v iGPU, běží jen v nouzovém rozlišení 800×600. V praxi to většinu uživatelů netrápí, protože monitor bývá zapojený přímo v eGPU, ale jde o omezení, které Linux nemá: obě GPU tu zůstávají plně funkční a použitelné současně, jak popisujeme níže.

Softwarová podpora v Bazzite

Pro sestavy Asome Linux Gaming jsme zvolili distribuci Bazzite, která je připravena na hry. Vše je nastaveno a připraveno, což šetří čas uživatele a ten se nemusí zabývat instalací driverů a podobnými otravami, které zná z Windows.

Bazzite je herní distribuce projektu Universal Blue postavená na Fedora Atomic. Systém je image-based (immutable): základ je distribuován jako celý obraz spravovaný přes rpm-ostree, aktualizace probíhají atomicky a jde je vrátit zpět. Pro eGPU z toho plynou dvě praktické výhody.

Ovladače jsou součástí obrazu. Ovladač amdgpu a Mesa jsou zabudované přímo v základním obrazu Bazzite, nejde o žádný lokální build přes DKMS. Aktualizace jádra tak ovladač nikdy nerozbije a po instalaci není potřeba nic překládat.

Žádná speciální varianta obrazu není potřeba. Na rozdíl od NVIDIA karet, kde je nutné přepnout na samostatnou variantu obrazu s uzavřenými ovladači (přes rpm-ostree rebase), u AMD stačí základní varianta Bazzite (Mesa) – integrovaná Radeon 780M i externí RX 9060 XT běží na stejném open-source zásobníku bez jakéhokoli přepínání ovladačů.

Ověření funkce a parametrů linky

Základní kontrola, že kartu obsluhuje ovladač amdgpu:

bash
lspci -k -s <adresa_GPU> | grep -A2 VGA

V řádku „Kernel driver in use“ by měl být amdgpu.

Klíčové je ověřit skutečnou šířku a generaci linky. Systém může dojednat méně, než port nominálně nabízí:

bash
cat /sys/bus/pci/devices/<adresa_GPU>/current_link_speed
cat /sys/bus/pci/devices/<adresa_GPU>/current_link_width
lspci -vv -s <adresa_GPU> | grep -E "LnkCap|LnkSta"

Očekávaný výsledek je generace 4 a šířka x4. Je ale nutné číst hodnoty pod zátěží: PCIe linka se v klidu kvůli úspoře energie (ASPM) může dojednat na nižší generaci nebo šířku, takže hodnota naměřená na nečinné kartě může být zavádějící. [Doplnit vlastní naměřené hodnoty.]

Volba GPU pro renderování

V systému jsou dvě GPU a záleží, kam je připojen monitor.

  • Monitor připojen k výstupu eGPU: renderuje i zobrazuje RX 9060 XT, sběrnice přenáší jen řídicí data a textury. Jde o výkonově nejčistší konfiguraci.
  • Monitor připojen k miniPC (iGPU): hotový snímek se musí přenést zpět do iGPU přes stejnou sběrnici. Při 4K a 60 Hz jde o zhruba 2 GB/s (3840 × 2160 × 4 B × 60), což je z kapacity linky x4 zanedbatelná část, ale ne nulová, a přidává latenci.

Přiřazení aplikace ke GPU zajišťuje v Bazzite switcheroo-control. Spuštění na RX 9060 XT se ve Steamu nastaví v parametrech spuštění hry:

bash
switcherooctl launch %command%

případně přímo přes PRIME offload proměnnou:

bash
DRI_PRIME=1 %command%

[Doplnit, zda Bazzite v daném zapojení vybírá eGPU automaticky, nebo je nutný explicitní parametr. Tato informace je pro čtenáře klíčová.] Herní režim (gamescope session) není předmětem tohoto článku, testováno bylo na desktopové relaci.

Testovací konfigurace

Stejná karta byla proměřena ve dvou zapojeních, aby šlo přímo porovnat výkon OCuLinku oproti kartě natvrdo v PCIe slotu.

  • Desktop: miniPC ASOME Gaming UM890 Pro s procesorem AMD Ryzen 9 8945HS, integrovanou grafikou Radeon 780M, 32 GB DDR5 a 1 TB SSD PCIe 4.0
  • eGPU: ASROCK Radeon RX 9060 XT Challenger 16GB OC, připojená přes OCuLink — stejnou kartu najdete i v sestavě ASOME Gaming Rampage
  • Systém: Bazzite 44, KDE Plasma 6.7.5, jádro 7.2.4, Wayland
Informace o systému Bazzite na miniPC ASOME Gaming UM890 Pro s eGPU RX 9060 XT přes OCuLink
Sestava 1 — ASOME Gaming UM890 Pro + RX 9060 XT přes OCuLink

Sestava 2: ATX PC (karta přímo v PCIe slotu)

  • Desktop: ATX PC s procesorem AMD Ryzen 7 7700X, deska MSI (MS-7E81), integrovaná grafika procesoru
  • GPU: stejná ASROCK Radeon RX 9060 XT Challenger 16GB OC, zde zapojená přímo v PCIe slotu (bez OCuLink) — jde o stejnou kartu jako v sestavě ASOME Gaming Rampage
  • Systém: Bazzite 44, KDE Plasma 6.7.5, jádro 7.2.4, Wayland
Informace o systému Bazzite na ATX PC s RX 9060 XT zapojenou přímo v PCIe slotu
Sestava 2 — ATX PC (Ryzen 7 7700X) + RX 9060 XT přímo v PCIe slotu

Obě sestavy jsme proměřili přes MangoHud ve čtyřech hrách (metodika 0,1%/1% low stejná jako v předchozím srovnání Linux vs. Windows). U Path of Exile jsme jeden neúplný, sekundový záznam zahodili a použili delší, plnohodnotný běh.

HraPrůměr FPS (ATX / OCuLink)1% low0,1% low
Counter-Strike 2104,2 / 96,5 (−7 %)80,0 / 76,559,6 / 68,2
Path of Exile154,1 / 140,5 (−9 %)114,6 / 96,2103,2 / 86,3
Heroes: Olden Era90,2 / 92,5 (≈ shodné)74,3 / 75,154,8 / 55,9

U Counter-Strike 2 a Path of Exile je OCuLink zápornou stranou o 7–9 % nižšího průměru a citelněji (16 %) nižších low hodnot u Path of Exile — to odpovídá očekávání užší sdílené sběrnice u náročnějších/rychlejších scén. U Heroes: Olden Era jsou obě sestavy prakticky vyrovnané.

Shrnutí

OCuLink je z pohledu operačního systému obyčejné PCIe, a proto jeho provoz v Linuxu nevyžaduje nic nad rámec ovladače grafické karty. V Bazzite jsou ovladače součástí obrazu, takže nasazení eGPU se omezuje na správnou variantu obrazu, případně registraci klíče pro Secure Boot a kontrolu parametrů linky. Čísla z tabulky vypadají jako citelná ztráta výkonu, ale v praxi je rozdíl mnohem méně patrný, než se zdá. Testovali jsme ve 4K, kde je vykreslování primárně limitované výkonem samotné GPU, ne šířkou sběrnice — a přesně to se v datech ukazuje: Counter-Strike 2 a Path of Exile ztrácí jen jednotky procent, Heroes: Olden Era prakticky nic. Čím náročnější a rozlišenější scéna, tím menší podíl na výsledném FPS má fakt, že data putují přes o něco užší OCuLink místo plného slotu v desce.

A hlavně — těch pár procent je za rozumnou cenu. Nepotřebujete velkou ATX skříň zabírající místo ani žádné velké komponenty navíc. Samotná integrovaná grafika Radeon 780M v UM890 Pro v pohodě utáhne hraní ve Full HD i bez eGPU — a s připojenou externí kartou přes OCuLink jde hráč ještě dál, třeba na plynulé 4K, jak jsme si ukázali výše. Karta v OCuLink doku se navíc chová inteligentně — když ji nepotřebujete, sama si stáhne otáčky ventilátorů a v klidu prakticky nehlučí. A paradoxně je fajn mít ji takhle na stole místo schované v uzavřené skříni — osobně mi přijde příjemné se kochat pohledem na GPU v akci, když se při hraní rozjede naplno. Přesně tohle je ten kompromis, který podle mě dává smysl.