Mémoire GPU allouable sous Linux
Comment dépasser les 64 Go de GTT par défaut sur Strix Halo (UMA BIOS, ttm.pages_limit, amd-ttm), avec les plafonds observés (108 et 120 Go), les paramètres contradictoires et la procédure de mesure à réaliser.
L'essentiel
- Sur Strix Halo, CPU et GPU partagent physiquement les 128 Go (mémoire unifiée). Le GPU y accède par deux mécanismes : une petite réservation « VRAM » fixée dans le BIOS (UMA) et le GTT, pool de mémoire système mappé à la demande 1.
- Par défaut, le GTT est limité à ≈ 50 % de la RAM, soit ≈ 64 Go : insuffisant pour gpt-oss-120b (≈ 61 Go) plus son KV cache.
- AMD recommande de garder la réservation BIOS petite (0,5 Go) et d'augmenter la limite TTM/GTT via
ttm.pages_limitou l'outilamd-ttm1. - Plafonds observés : ≈ 108 Go (août 2025, segfaults à 110 Go) 2 et 120 Go (guides 2026) 3. Le chiffre « 96 Go » souvent cité est une limite Windows 6.
- Rien n'a été mesuré par nous ; la valeur réelle pour la Box est la question Q-011.
Pourquoi c'est central
Le dimensionnement de la Box repose sur la mémoire que le GPU peut réellement utiliser :
| Composant en mémoire GPU | Ordre de grandeur | Origine |
|---|---|---|
| gpt-oss-120b MXFP4 | ≈ 61 Go | fiche modèle (à confirmer) |
| KV cache, 3 utilisateurs × 16k tokens | quelques Go à plus de 10 Go selon le modèle | estimation, à mesurer |
| Modèle d'embedding (bge-m3) + reranker | 2 à 4 Go | estimation |
| Marge pour le système, Docker, base vectorielle | 8 à 16 Go de RAM côté CPU | estimation |
À 64 Go de GTT, le modèle principal ne tient pas. À 96 Go, il tient avec peu de marge pour le KV cache multi-utilisateurs. À 108–120 Go, tout tient. La différence entre 96 et 120 Go décide du modèle principal (Q-009) et du nombre d'utilisateurs simultanés (Q-001).
Ce que dit AMD (documentation officielle)
Le guide « Strix Halo system optimization » de ROCm 10.0 1 :
- deux notions : GART (mappage noyau) et GTT (pool pour les processus utilisateur) ; « by default, the GTT limit is set to approximately 50 percent of total system RAM » ;
- réserver de la VRAM dédiée dans le BIOS n'apporte aucun gain puisque la mémoire est physiquement partagée ; recommandation : « keeping the dedicated VRAM reservation in BIOS small (for example 0.5 GB) and increasing the shared (TTM/GTT) limit instead » ;
- le paramètre est
/sys/module/ttm/parameters/pages_limit, exprimé en pages de 4 Kio, pas en Go ; - outil :
pipx install amd-debug-toolspuisamd-ttm --set 100(exemple donné pour 100 Go, soit 26 214 400 pages sur un système à « 125.65 GB » de mémoire totale) ; - prérequis : noyau 6.18.4 ou plus récent (patches fusionnés upstream) ; Fedora 43, Ubuntu 26.04 et Arch listés stables.
Ce que dit la communauté
| Source | Machine, date | Paramètres | Réservation BIOS | Limite constatée |
|---|---|---|---|---|
| Jeff Geerling 2 | 4 cartes mères Framework 128 Go, 08/2025 | amdttm.pages_limit=27648000 + amdttm.page_pool_size=27648000 (via grubby) ; amdgpu.gttsize déprécié (avertissement noyau) | BIOS plafonné à 96 Go | ≈ 108 Go pratiques (« 108000M of GTT memory ready ») ; segfaults à 110 Go |
| strix-halo-guide 3 | Beelink GTR9 Pro, 08/2026 | amdgpu.gttsize=131072 (128 Go) + ttm.pages_limit=31457280 (120 Go) | UMA Frame Buffer 512 Mo (ou 2 Go si minimum BIOS) | 120 Go mappés, 8 Go laissés à l'OS |
| Zypher Systems 4 | non précisé | ttm.pages_limit=31457280 (120 Go) | 512 Mo | non mesuré |
| kyuz0 toolboxes 9 | — | -fa 1, --no-mmap côté llama.cpp | — | évite crashs et ralentissements |
| ComputingForGeeks 7 | agrégateur, 08/2026 | — | — | reprend « 96 Go adressables sous Linux » |
Tableau des paramètres
| Paramètre | Où | Valeur citée | Unité | Origine | Statut |
|---|---|---|---|---|---|
| UMA Frame Buffer Size | BIOS | 512 Mo (ou minimum disponible) | Mo | AMD 1 + communauté | à vérifier sur BIOS Framework 3.06 |
ttm.pages_limit | ligne de commande noyau ou /sys/module/ttm/parameters/pages_limit | 26 214 400 (100 Go) ; 31 457 280 (120 Go) | pages de 4 Kio | AMD (100 Go) ; communauté (120 Go) | à tester |
ttm.page_pool_size | ligne de commande noyau | même valeur que pages_limit | pages | Geerling (préfixe amdttm) | à tester ; rôle exact non documenté dans nos sources |
amdttm.pages_limit / amdttm.page_pool_size | idem, pile DKMS | 27 648 000 (≈ 105 Go) | pages | Geerling | uniquement si module amdttm présent |
amdgpu.gttsize | ligne de commande noyau | 131 072 | Mio | hogeheer499 | déprécié selon Geerling ; encore utilisé par hogeheer499 : contradictoire |
amd-ttm --set N | outil (pipx amd-debug-tools) | 100 | Go | AMD | voie recommandée : évite les calculs de pages |
amdgpu.gpu_recovery=1 | ligne de commande noyau | 1 | — | forum Framework | filet de sécurité, voir Stabilité |
Conversion : Go × 262 144 = pages de 4 Kio (100 Go = 26 214 400 ; 120 Go = 31 457 280).
Le contournement « 24 Go » et son incompatibilité
Le fil « Framework Desktop Crashes » 8 cite, comme contournement des hard locks, la limitation de la mémoire iGPU à 24 Go dans le BIOS. Ce contournement est incompatible avec l'usage LLM de la Box ; s'il s'avérait nécessaire pour la stabilité, la machine serait disqualifiée. Ce lien entre allocation mémoire et stabilité est la raison de tester les deux ensemble (Q-011 et Q-012).
Procédure « à tester »
Canevas de l'expérimentation « Mesurer la mémoire GPU allouable » ; chaque étape est à valider sur la machine.
- Mettre le BIOS à jour en 3.06 ou plus récent 5 ; régler l'UMA Frame Buffer au minimum (512 Mo si disponible).
- Installer la distribution retenue avec un noyau 6.18.4 ou plus récent ; relever
uname -r, la version de linux-firmware et le contenu de/sys/module/(présence dettm,amdttm,amdgpu). - Relever la valeur par défaut de
/sys/module/ttm/parameters/pages_limitet la mémoire GPU vue parrocminfoouvulkaninfo. - Fixer la limite à 100 Go avec
amd-ttm --set 100(voie AMD) ; redémarrer si nécessaire ; vérifier la nouvelle valeur. - Charger avec llama.cpp (Vulkan puis ROCm) un modèle de taille croissante, ou gpt-oss-120b avec un contexte croissant, jusqu'à l'échec : noter la dernière allocation stable et le type d'échec (OOM propre, segfault, hard lock).
- Répéter à 110 puis 120 Go.
- Consigner : BIOS, noyau, firmware, paramètre, allocation maximale stable, comportement à l'échec. Le résultat alimente Q-011 et la fiche Framework (
gpuMemoryMaxGb).
Questions ouvertes
- Benchmark gpt-oss-120b à 1 utilisateur : Vulkan vs ROCm, contexte court et longSur le Framework Desktop, gpt-oss-120b MXFP4 atteint au moins 50 t/s en tg128 avec l'un des deux backends, et le prefill pp512 dépasse 500 t/s ; la génération baisse de moins de 20 % à 32k de profondeur.À tester
- Montée en charge de 1 à 10 utilisateurs : gpt-oss-120b et Qwen3-30B-A3BAvec llama-server -np 8 --kv-unified et KV q8_0, gpt-oss-120b sert 3 utilisateurs simultanés à plus de 25 t/s chacun avec un TTFT p95 inférieur à 3 s sur prompts courts ; à 10 utilisateurs, le débit par utilisateur reste au-dessus de 10 t/s. Le comportement suit la courbe publiée pour Qwen3.6-35B-A3B (59 → 20 t/s par utilisateur de 1 à 8 slots) décalée vers le bas.À tester
- Comparer Vulkan/RADV et ROCm/HIP dans llama.cppVulkan/RADV est plus rapide en génération (+15 à +30 %) et ROCm/HIP plus rapide en prompt processing au-delà de quelques milliers de tokens ; pour les prompts RAG de la Box (4k à 16k tokens), la différence de temps de réponse total est inférieure à 20 % et la stabilité départage les deux.À tester
- Évaluer vLLM sur ROCm gfx1151En septembre 2026, l'image officielle vllm/vllm-openai-rocm démarre sur gfx1151 avec ROCm 7.x sans patch, sert un MoE de taille moyenne, et donne un TTFT p95 inférieur à celui de llama-server à 5 clients ; mais elle ne sert pas gpt-oss-120b en MXFP4 sans conversion, et réserve plus de mémoire que llama-server pour un même contexte.À tester
- Mesurer la consommation et le bruit en inférenceAu repos le système consomme 10 à 15 W ; en inférence gpt-oss-120b mono-utilisateur 100 à 130 W ; sous 4 slots 120 à 150 W. Le bruit reste sous 42 dBA à 1 m en charge avec le ventilateur Noctua, ce qui autorise une installation dans un bureau.À tester
- Mesurer la mémoire GPU allouable sur le Framework DesktopAvec BIOS 3.06, UMA à 512 Mo, noyau 6.18.4+ et ttm.pages_limit fixé via amd-ttm, le GPU peut allouer au moins 100 Go de façon stable ; gpt-oss-120b MXFP4 se charge avec 32k tokens de contexte pour 4 slots.À tester
- Stabilité sous charge continue pendant 24 heuresAvec BIOS 3.06, noyau 6.18.4+, firmware 2026010+, veille désactivée, amdgpu.gpu_recovery=1 et 100 Go de GTT, llama-server (backend retenu) sert 4 utilisateurs simulés en continu pendant 24 h sans reset GPU, sans erreur amdgpu dans dmesg et sans redémarrage du service.À tester
Sources
- 1AMD Strix Halo / RDNA3.5 system optimization (ROCm 10.0)Documentation officielleFiabilité hauteAMD · publié 2026 · consulté le 16 sept. 2026 · fiche source
- 2Increasing the VRAM allocation on AMD AI APUs under Linux (Jeff Geerling)BlogFiabilité moyennejeffgeerling.com · Jeff Geerling · publié 2025-08-08 · consulté le 16 sept. 2026 · fiche source
- 3strix-halo-guide (README + BENCHMARKS.md)GitHubFiabilité moyenneGitHub (communauté) · hogeheer499 · publié 2026-03 → 2026-08-30 · consulté le 16 sept. 2026 · fiche source
- 4Pushing AMD Strix Halo to 120GB Unified VRAM under Linux (Zypher Systems)BlogFiabilité faibleZypher Systems · publié s.d. · consulté le 16 sept. 2026 · fiche source
- 5Framework Desktop AMD Ryzen AI Max 300 — BIOS & Drivers (notes de version)Documentation officielleFiabilité hauteFramework Computer Inc. · publié 2026-08-03 (BIOS 3.06) · consulté le 16 sept. 2026 · fiche source
- 6AMD Ryzen AI MAX+ 395 Processor: Breakthrough AI Performance (blog AMD)Constructeur / éditeurFiabilité moyenneAMD · publié 2025 · consulté le 16 sept. 2026 · fiche source
- 7Ryzen AI Max+ 395 Mini PCs Compared: Real Prices (ComputingForGeeks)Article techniqueFiabilité faibleComputingForGeeks · publié 2026-08-11 · consulté le 16 sept. 2026 · fiche source
- 8Framework Desktop Crashes (forum)ForumFiabilité moyenneFramework Community · publié 2026-03 et suite · consulté le 16 sept. 2026 · fiche source
- 9amd-strix-halo-toolboxes (README)GitHubFiabilité moyenneGitHub (communauté) · kyuz0 · publié 2025–2026 · consulté le 16 sept. 2026 · fiche source