Chrome mit GPU auf einem Linux-Server starten
Standardmäßig nutzt Chrome im Headless-Modus die GPU nicht, selbst wenn der Server eine hat. Es rendert WebGL mit SwiftShader, einer auf der CPU emulierten GPU: langsam, und es belegt die Kerne, die Ihre Tests brauchen. Zwei Optionen genügen, um das zu ändern.
Getestet am 29.10.2026 auf einem Linux-GPU-Server (Intel UHD 770, Debian 13, 4 vCPU) mit Chromium 156 und Playwright 1.64 in Docker.
1. Voraussetzungen
apt install chromium # oder google-chrome-stable: gleiche Optionen
ls /dev/dri # muss renderD128 anzeigen
Als Nicht-Root-Benutzer fügen Sie ihn der Gruppe render hinzu, damit er die
GPU öffnen kann: usermod -aG render,video meinbenutzer.
2. Der Befehl
chromium --headless=new \
--use-angle=vulkan \
--ignore-gpu-blocklist \
https://example.com
--use-angle=vulkan: Chrome rendert über Vulkan auf der GPU. Alternative:--use-gl=angle --use-angle=gl-egl(OpenGL ES über EGL), ebenso schnell;--ignore-gpu-blocklist: Ohne Bildschirm hält Chrome die GPU oft für „nicht zuverlässig“ und fällt auf die CPU zurück. Diese Option verhindert das;- als root (häufig auf einem Server oder in Docker) fügen Sie
--no-sandboxhinzu.
Diese Optionen funktionieren auch unter Xvfb, falls Ihr Tool ein echtes X-Display braucht (siehe unsere Xvfb-Anleitung).
3. Prüfen, ob die GPU genutzt wird
chrome://gpu ist ohne Bildschirm unpraktisch. Diese kleine Datei zeigt den
WebGL-Renderer an:
cat > /tmp/gl.html <<'EOF'
<script>
const g = document.createElement('canvas').getContext('webgl2');
const e = g && g.getExtension('WEBGL_debug_renderer_info');
document.write(g ? g.getParameter(e.UNMASKED_RENDERER_WEBGL) : 'KEIN WEBGL');
</script>
EOF
chromium --headless=new --use-angle=vulkan --ignore-gpu-blocklist \
--no-sandbox --dump-dom file:///tmp/gl.html
Erwartetes Ergebnis: ANGLE (Intel, Vulkan … Intel(R) UHD Graphics 770 …).
Wenn Sie SwiftShader sehen, wird die GPU nicht genutzt.
4. Der Gewinn, gemessen
Gleiche WebGL-Seite (Vollbild-Shader in 1920×1080), Bilder pro Sekunde:
| Konfiguration | Rendering | Bilder/s |
|---|---|---|
--headless=new (Standard) | SwiftShader, CPU | 13 |
--use-angle=vulkan | UHD 770 | ~260 |
--use-gl=angle --use-angle=gl-egl | UHD 770 | ~230 |
Gemessen ohne Bildratenbegrenzung (--disable-gpu-vsync --disable-frame-rate-limit), 10 Vollbild-Renderings pro Frame, Auslesen
eines Pixels in jedem Frame, damit das Rendering garantiert wirklich
stattgefunden hat. Während dieses Tests belegt SwiftShader 3,9 von 4 vCPU,
die GPU 0,6 vCPU. Das Skript ist öffentlich:
webgl-bench.html. Im normalen Betrieb richtet sich
Chrome nach 60 Bildern/s, die die GPU mühelos schafft.
5. Playwright
// playwright.config.ts
export default defineConfig({
use: {
launchOptions: {
args: ['--use-angle=vulkan', '--ignore-gpu-blocklist'],
},
},
});
6. Puppeteer
const browser = await puppeteer.launch({
headless: true,
args: ['--use-angle=vulkan', '--ignore-gpu-blocklist', '--no-sandbox'],
});
7. Selenium (Python)
from selenium import webdriver
o = webdriver.ChromeOptions()
for a in ['--headless=new', '--use-angle=vulkan',
'--ignore-gpu-blocklist', '--no-sandbox']:
o.add_argument(a)
driver = webdriver.Chrome(options=o)
8. In Docker
Häufige Falle: Das offizielle Playwright-Image enthält den Intel-Vulkan-Treiber
nicht. Selbst mit den richtigen Optionen und eingebundenem /dev/dri fällt
Chrome dort auf SwiftShader zurück (geprüft mit Playwright 1.64). Fügen Sie den
Treiber hinzu:
FROM mcr.microsoft.com/playwright:v1.64.1-noble
RUN apt-get update && apt-get install -y mesa-vulkan-drivers \
&& rm -rf /var/lib/apt/lists/*
Geben Sie dann dem Container die GPU:
docker run --device /dev/dri \
--group-add "$(stat -c %g /dev/dri/renderD128)" \
-e ANV_SPARSE=0 \
mein-playwright-image npx playwright test
ANV_SPARSE=0 deaktiviert eine Vulkan-Funktion („sparse“), die mit dem
Intel-Mesa-Treiber in einer VM GPU-Hänger verursacht. Unsere VMs deaktivieren
sie bereits; ein Container hat jedoch seine eigene Umgebung, daher müssen Sie
sie dort erneut setzen.
Häufige Fragen
Und das --disable-gpu, das man überall sieht?
Das ist das Gegenteil von dem, was Sie wollen: entfernen.
Braucht man --enable-features=Vulkan?
Nein, --use-angle=vulkan reicht mit aktuellen Chrome-Versionen.
WebGPU? Nicht Gegenstand dieser Anleitung: Die obigen Optionen decken WebGL, Canvas und das Compositing der Seite ab.
Ausprobieren
Die Linux-GPU-Server haben eine Intel-UHD-770-GPU in der VM, mit bereits installiertem Mesa und Vulkan. Ab 14,99 € netto/Monat, Root-Zugriff, dedizierte IPv6, optionaler k3s-Cluster, um Ihre Tests zu parallelisieren.