Votre SaaS tourne sur un VPS quatre vCPU. Un mardi ordinaire, le p95 API passe de 120 ms à 800 ms sans deploy ni pic de trafic. Le CPU « user » reste modeste, mais %steal oscille entre 12 et 25 %. Le support répond : « Pas d'incident plateforme. » Il a raison — c'est le modèle économique du mutualisé, pas une panne au sens classique.
Le CPU steal (%st dans top ou vmstat) mesure le temps où votre machine virtuelle voulait du processeur mais l'hyperviseur l'a servi ailleurs — souvent à un voisin bruyant qui lance des backups, compile en CI ou sature disque et CPU en même temps.
Lire top, vmstat et le monitoring cloud
Dans la ligne CPU de top, la colonne st (steal) doit être lue avec le reste : us (user), sy (system), id (idle), wa (I/O wait). Un steal élevé avec un us faible et une latence applicative qui grimpe pointe vers la contention hôte, pas vers votre code.
Corrélez avec l'heure : les backups voisins à 02:00 UTC, les compilations nocturnes ou les campagnes marketing d'un autre client sur le même hyperviseur produisent des signatures répétitives. Un graphique steal sur sept jours, granularité une minute, vaut plus qu'une capture top au moment de la plainte.
Steal ou autre cause ?
Avant d'ouvrir un ticket, écartez les fausses pistes :
| Symptôme | Piste probable |
|---|---|
| st haut, us bas, latence API haute | Noisy neighbor / hôte chargé |
| wa haut | Goulot disque ou stockage distant |
| us haut chez vous | Code, requêtes SQL, workers |
| id bas partout | Sous-dimensionnement global |
Profilez l'application une journée complète. Accuser l'hébergeur sans courbe steal, c'est une opinion ; lui présenter steal corrélé au p95, c'est une négociation.
Instances burstable vs steal pur
Sur les instances à crédits CPU (familles T chez certains clouds), distinguez steal et épuisement de crédits. Les métriques diffèrent, les remèdes aussi : upgrade de tier burstable, passage en instance à CPU fixe, ou migration vers un autre type d'offre. Mélanger les deux diagnostics mène à des upgrades inutiles.
Compile CI sur le même VPS que l'API production : le steal impacte à la fois les builds et les requêtes utilisateurs. Séparez les runners CI dès que le steal dépasse votre seuil interne.
Escalade support et preuves
Constituez un evidence pack : graph steal sept jours, p95 API sur la même fenêtre, type d'instance, identifiant d'hôte si connu, benchmark CPU/disque avant et après migration éventuelle. Demandez migration d'hôte ou crédit — pas un « c'est normal en mutualisé » sans données.
Définissez avant signature un SLO steal interne (par exemple moins de 3 % soutenu en production, plus tolérant en staging). Au renouvellement, benchmarkez trois hôtes candidats avec la même configuration : choix data-driven, pas ressenti vendredi soir.
Décider et avancer sans angle mort
Tracez d'abord %steal sur sept jours avec corrélation latence API. Profilez ensuite l'application une journée pour écarter un goulot interne. Ouvrez un ticket avec preuves chiffrées et demandez migration d'hôte ou passage à un tier CPU garanti. Documentez votre seuil steal acceptable par environnement. Si le support refuse sans alternative, comparez des hébergeurs via l'annuaire et le comparateur en rejouant le même benchmark.
Questions fréquentes
Quel steal est acceptable ?
Quasi 0 % à vide. Sous charge soutenue, plus de 5 à 10 % mérite une enquête. Des pics courts restent possibles sur mutualisé ; un steal élevé en permanence indique une contention réelle sur l'hôte.
Comment mesurer le steal ?
top ou vmstat (%st), sar -u, monitoring cloud une minute sur plusieurs jours. Corrélez steal et latence applicative sur la même période.
Monter en taille de VPS suffit-il ?
Parfois — moins de voisins par cœur — mais ce n'est pas garanti. Préférez les offres vCPU dédiées ou CPU garanti si votre revenu dépend du p95 API.
Différence avec le throttling burstable ?
Le steal vient de l'hyperviseur. Le throttling concerne les crédits CPU des instances burstable. Les deux peuvent se cumuler ; diagnostiquez séparément.
Archivez un graph steal avant d'ouvrir le ticket support — sans courbe, c'est opinion ; avec courbe, c'est négociation.
