Ressources
Exigences CPU, mémoire, disque et GPU pour les déploiements Scrydon
Utilisez ces exigences pour dimensionner le cluster avant d'exécuter helm install.
Minimum (évaluation / petites équipes)
| Ressource | Exigence |
|---|---|
| CPU | 6 vCPU |
| RAM | 32 Go |
| Disque | 80 Go (base de données + StarRocks + images) |
| GPU | Non requis |
Ces chiffres supposent la pile complète par défaut : interface Plateforme, Agentic, Cortex, Analytics, Postgres intégré, SeaweedFS et StarRocks mono-pod pour les tables gérées. Pour fonctionner sur des nœuds plus petits (4 vCPU / 16 Go), réduisez les composants optionnels. Voir Helm → Réduction pour les installations à faibles ressources.
Recommandé (production)
| Ressource | Exigence |
|---|---|
| CPU | 16 vCPU |
| RAM | 64 Go |
| Disque | 200 Go SSD |
| GPU | Facultatif. Requis uniquement pour l'inférence de modèles IA locaux, par exemple Ollama dans le cluster. |
Remarque : les ressources GPU sont sous licence contractuelle (votre JWT de licence reflète vos droits), mais Scrydon n'applique pas les limites GPU au runtime. Les nœuds GPU ne sont nécessaires que si vous prévoyez d'exécuter des modèles d'inférence locaux dans votre cluster.
Mémoire par service
Le chart Helm définit ces requests et limits mémoire par pod pour les valeurs par défaut mono-réplica. La request est ce que le scheduler réserve. Votre pool de nœuds doit satisfaire la somme des requests des services activés avant que les pods puissent être planifiés ; c'est donc votre plancher réservé. La limit est le plafond de burst avant qu'un pod soit OOM-killed.
Pour dimensionner les pools de nœuds : additionnez les requests comme plancher réservé, vérifiez la somme des limits pour le pire cas de burst, puis ajoutez environ 30 % de marge pour les pods kube-system, les sidecars Dapr (~250 MiB chacun), le plan de contrôle Dapr et la petite infra intégrée comme OPA / Lakekeeper (~128 MiB chacun).
| Service | Request mémoire | Limit mémoire | Notes |
|---|---|---|---|
platform (UI) | 1 GiB | 2 GiB | Shell SSR + routes de plan de contrôle |
agentic (workflow app) | 2 GiB | 4 GiB | Application la plus lourde : moteur de workflow + runtime Dapr Workflow |
agentic-realtime | 256 MiB | 512 MiB | Fan-out WebSocket |
analytics (UI) | 1.5 GiB | 2 GiB | SSR + rendu de graphiques ; RSS stable le plus élevé |
cortex (chat UI) | 1 GiB | 2 GiB | SSR + proxy de streaming LLM |
api-platform (auth/API) | 1 GiB | 2 GiB | Catalogue + sources de workspace |
api-ontology | 256 MiB | 512 MiB | Optionnel |
api-table | 256 MiB | 512 MiB | Activé par défaut ; soutient Managed Tables. Désactiver avec apiTable.enabled: false. |
marimo-document | 128 MiB | 512 MiB | Moteur de rendu de documents de notebook sans état et sans calcul |
infra.db (Postgres) | 256 MiB | 1 GiB | Intégré. Désactiver si vous utilisez Postgres géré. |
infra.seaweedfs | 256 MiB | 1 GiB | Intégré. Désactiver si vous utilisez S3 géré. |
infra.starrocks | 2 GiB | 8 GiB | Activé par défaut (allin1 mono-pod). Désactiver avec infra.starrocks.enabled: false ou remplacer par l'opérateur StarRocks pour du multi-AZ. |
Le calcul isolé des notebooks s'ajoute à ces ressources et est planifié dans
runtimePlane.workloadNamespace. Chaque runtime interactif actif réserve 4 GiB pour Marimo,
1 GiB pour le contrôle de source, 512 MiB pour son broker et 128 MiB pour l'enforcer de sortie
(5,625 GiB au total). Un job de notebook réserve 4 GiB pour son runner, plus 128 MiB pour le
broker et 128 MiB pour l'enforcer (4,25 GiB au total). Dimensionnez le pool de nœuds Kata/KVM
pour le nombre prévu de sessions et de jobs simultanés ; l'ouverture des documents ne consomme
pas cette capacité.
Les limits ont été révisées pour la dernière fois le 2026-05-18 (rollout de minification binaire v1.3.5-rc.54, PR #1142, qui a environ doublé le RSS stable des applications SSR ; la limit platform a ensuite été portée à 2 GiB le 2026-05-29). Les requests ont été ajustées le 2026-07-06 (PR #2257) pour suivre le RSS stable mesuré. Les anciennes requests sous-estimaient l'usage réel 2 à 4 fois, donc le scheduler surcompactait les nœuds et les pods étaient évincés pendant les rollouts sous pression mémoire. Si vous franchissez l'une de ces limites lors d'une mise à niveau sur un cluster existant, vérifiez la marge du pool de nœuds avant helm upgrade.
AI Gateway
L’AI Gateway s'exécute à l'intérieur du pod api-platform :
son coût pèse donc sur le CPU de ce Deployment et non sur un service dédié. Le
chart livre auth.resources avec une request de 500m et une limit de 2000m.
Cette valeur par défaut couvre le trafic de plan de contrôle qu'api-platform sert
déjà ; le trafic du router s'y ajoute, et c'est la seule charge de cette page
qui évolue avec la façon dont vos équipes travaillent plutôt qu'avec le nombre de
services activés.
Coût d'un tour
Le coût CPU d'un tour se compose d'une petite part fixe et d'une part proportionnelle au nombre d'événements diffusés, et non au nombre d'octets. Votre posture DLP modifie le terme événementiel : il y a donc trois courbes plutôt qu'une seule.
| Mode DLP | CPU par tour |
|---|---|
disabled | 0,017 vCPU-s + 0,14 ms × événements |
audit | 0,025 vCPU-s + 0,18 ms × événements |
enforce | 0,026 vCPU-s + 0,20 ms × événements |
C'est le terme événementiel qui compte. Un agent de code diffuse environ un événement par token généré : un tour qui écrit 600 tokens coûte donc à peu près cinq fois un tour qui en écrit 100, même si les deux réponses restent courtes. Notez que le DLP est presque entièrement un coût par événement, et non un coût fixe : il inspecte le flux au fil de son passage, donc une réponse plus longue paie davantage.
| Longueur de réponse | Événements diffusés | disabled | audit | enforce |
|---|---|---|---|---|
| ~200 tokens (réponse courte, appel d'outil) | ~200 | 0,05 vCPU-s | 0,06 vCPU-s | 0,07 vCPU-s |
| ~600 tokens (tour d'agent typique) | ~600 | 0,10 vCPU-s | 0,13 vCPU-s | 0,15 vCPU-s |
| ~1 000 tokens | ~1 000 | 0,16 vCPU-s | 0,20 vCPU-s | 0,23 vCPU-s |
| ~2 000 tokens (écriture de code longue) | ~2 000 | 0,30 vCPU-s | 0,38 vCPU-s | 0,43 vCPU-s |
La taille du prompt est en comparaison quasi gratuite : un prompt de 150 Ko coûte à peu près autant qu'un prompt de 16 Ko, car le router analyse une requête une seule fois et ne la relit pas.
enforce ajoute par ailleurs environ 11 ms au temps de premier token, de
façon constante : le flux est libéré par fenêtres gouvernées de 512 caractères,
avec une retenue de 256 caractères pour qu'une détection à cheval sur une
frontière soit tout de même prise. Ce coût est plat : il n'augmente pas avec la
longueur de la réponse. audit n'ajoute aucun TTFT mesurable, car il inspecte
sans rien retenir.
Dimensionner pour une population de développeurs
Dimensionnez à partir des tours par seconde, et non du nombre de développeurs disposant d'un compte. Un développeur ayant un agent ouvert ne diffuse pas en continu : il lit, édite et réfléchit entre deux tours. La fraction de temps pendant laquelle son outil diffuse réellement est le cycle d'activité, et c'est ce chiffre qui détermine votre CPU.
Pour 1 000 développeurs émettant des tours typiques de 600 tokens d'environ 15 secondes chacun :
Les vCPU provisionnés ci-dessous visent un taux d'utilisation de 65 %, pour les trois modes DLP :
| Cycle d'activité | Flux simultanés | Tours/s | disabled | audit | enforce | Réplicas |
|---|---|---|---|---|---|---|
| 10 % — usage occasionnel | 100 | 6,7 | 1,1 vCPU | 1,3 vCPU | 1,5 vCPU | 2 |
| 25 % — usage régulier d'agent de code | 250 | 16,7 | 2,6 vCPU | 3,3 vCPU | 3,8 vCPU | 4 |
| 50 % — usage intensif, piloté par agents | 500 | 33,3 | 5,3 vCPU | 6,7 vCPU | 7,5 vCPU | 8 |
| 100 % — tous les développeurs diffusent en même temps | 1 000 | 66,7 | 10,5 vCPU | 13,4 vCPU | 15,1 vCPU | 16 |
Activer le DLP coûte environ 25 % de CPU en plus par tour en audit et
50 % en enforce, sur un tour d'agent typique. C'est un coût réel, mais
rarement décisif : c'est le nombre de réplicas ci-dessous qui contraint d'abord.
C'est en général le nombre de réplicas qui contraint, pas le total de vCPU.
Chaque pod accepte auth.llmRouter.maxInFlight tours ouverts (64 par défaut) :
le nombre minimal de réplicas vaut donc flux simultanés ÷ 64, quelle que soit
la marge CPU d'un pod. À 250 flux simultanés cela fait 4 réplicas qui se
partagent environ 3,5 vCPU — bien en dessous de la limit de 2000m autorisée à
chacun. Augmentez maxInFlight et la limit CPU ensemble, ou ajoutez des
réplicas ; n'augmentez pas l'un sans l'autre.
Valider vos propres chiffres
Les valeurs ci-dessus sont un point de départ, pas un substitut à la mesure de votre trafic réel. La longueur des tours, la posture DLP et le degré d'automatisation par agents déplacent le résultat davantage que l'erreur de modélisation. Une fois le trafic réel, les métriques décrites dans la section capacité de l’AI Gateway indiquent où vous vous situez :
scrydon_llm_router_streams_in_flightcomparé à votremaxInFlight— à quelle distance un pod se trouve du délestage.scrydon_llm_router_admission_rejections_total— durablement non nul en régime établi signifie qu'il faut ajouter un réplica, pas des retries côté client.scrydon_llm_router_overhead_msface àscrydon_llm_router_provider_ttfb_ms— sépare le temps passé dans votre plateforme du temps passé chez le fournisseur, ce qui distingue un problème de capacité d'un modèle lent.
Une organisation unique connaît un second plafond, indépendant du CPU.
Chaque tour écrit une preuve d'audit chaînée par hachage, et cette preuve est
ordonnée par organisation : le débit de tours soutenu d'un même locataire est
donc borné par la vitesse de commit de sa chaîne d'audit, et ajouter des
réplicas ne déplace pas cette limite. Deux écritures d'audit par tour, ou
quatre lorsque le DLP s'exécute en enforce.
Notre suite de capacité mesure ce commit entre 3 et 10 ms, ce qui situe une
organisation entre environ 100 et 380 écritures d'audit par seconde — largement
au-dessus de chaque ligne du tableau ci-dessus, sauf la dernière en enforce.
Si vous placez les 1 000 développeurs dans une seule organisation et que
vous exécutez le DLP en enforce et que vous attendez une diffusion
simultanée, validez cette combinaison avant de vous y engager. Un trafic
réparti sur plusieurs organisations ne partage pas cet ordonnancement et n'est
pas concerné.