Aller au contenu
EuroVPSEuroVPS

Pourquoi votre VM n'a pas de swap

Le swap laisse une machine prétendre qu'elle a plus de mémoire qu'elle n'en a. Sur du flash enterprise, cette prétention coûte de l'usure du stockage et une falaise de latence, donc nous dimensionnons la RAM à la place.

Par EuroVPS EngineeringLa salle des machines

5 min de lecture
Dans cet article 5 sections
En bref
  • La RAM répond en environ 100 nanosecondes. Le flash rapide répond en environ 100 microsecondes. Une charge qui tombe dans le swap tourne sur une mémoire environ mille fois plus lente.
  • Le swapping transforme un manque de RAM en usure du stockage et en falaise de latence. La charge échoue plus lentement et de façon plus confuse au lieu d'échouer clairement.
  • Nous dimensionnons la RAM à la place. Le Sizing Desk demande la vraie sortie de votre free -m avant de proposer quoi que ce soit.

Les machines virtuelles que nous construisons sont livrées sans swap. Quand l'une d'elles manque de mémoire, l'échec est immédiat et visible, et la solution est une conversation sur la RAM. Sur une fiche technique, cela se lit comme une omission, alors voici le raisonnement en entier. Rien de tout cela ne dépend de notre matériel. Vous pouvez appliquer l'argument à n'importe quelle VM que vous faites tourner n'importe où.

Le swap existe pour laisser une machine dépasser sa mémoire physique

Le swap est la soupape de trop-plein du noyau. Quand la mémoire physique vient à manquer, il déplace sur le disque les pages qu'il juge les plus froides et donne la RAM libérée à qui la demande. La machine peut annoncer plus de mémoire que le silicium n'en contient, chaque allocation peut réussir, et la vérité arrive plus tard, sous forme de latence, chaque fois qu'un processus touche une page qui, finalement, vivait sur le disque.

Cet échange avait du sens quand il a été inventé. La RAM était rare et chère, les machines étaient partagées par de nombreuses tâches, et un traitement par lot qui rampait toute la nuit valait mieux qu'un traitement qui mourait. Chaque élément de ce contexte s'est depuis inversé : la RAM est la moins chère qu'elle ait jamais été par gigaoctet, la machine est à vous seul, et les charges sont des services interactifs où une excursion de latence multipliée par dix est indistinguable d'une panne. La soupape de trop-plein est restée dans les valeurs par défaut malgré tout, parce que les valeurs par défaut survivent à leurs raisons.

Sortir de la RAM coûte trois ordres de grandeur

Le dossier contre le swap est de l'arithmétique avant d'être de la philosophie. La mémoire et le stockage sont à des étages différents de l'immeuble de la latence, et l'escalier entre eux est long.

L'ÉCHELLE DE LA LATENCE · ORDRES DE GRANDEUR, TOUT MATÉRIEL MODERNE
CACHE DU CPU
environ une nanoseconde
RAM
environ 100 nanosecondes
FLASH RAPIDE
environ 100 microsecondes, mille fois plus lent que la RAM
UN PAGE FAULT VERS LE SWAP
l'aller-retour complet vers le stockage, plus la file d'attente, sur le chemin le plus chaud de votre charge

Les chiffres exacts varient selon le matériel. Les écarts entre les étages, non. Sous une vraie pression mémoire, la machine prend cet escalier en continu : le noyau évince des pages, la charge les rappelle aussitôt, et le CPU passe ses cycles à attendre le stockage. Le load average grimpe pendant que le débit utile s'effondre.

LE COÛT D'UN ACCÈS À UNE PAGE HORS RAM

~0,1 à 1 ms

UN ALLER-RETOUR VERS LE STOCKAGE
÷

100 ns

RAM
=

~10 000×

PLUS LENT PAR ACCÈS
Même servi à la vitesse d'une milliseconde, un accès à une page hors RAM coûte à la charge de l'ordre de dix mille accès RAM.

Le swap brûle du flash enterprise pour cacher une erreur de dimensionnement

Sur les disques rotatifs, le swap était simplement lent. Sur le flash, il est aussi corrosif. Le trafic de swap est le pire motif que vous puissiez donner à du flash : un flux continu de petites écritures aléatoires qui n'existent pour aucune raison, sauf que la machine manque de RAM. Chacune de ces écritures vieillit une cellule pour entretenir une illusion.

Et la charge ne reçoit rien en échange de l'usure. Elle boite au rythme du stockage jusqu'à ce que la pression cesse ou que quelqu'un intervienne. La baie sous votre VM ici est du HPE 3PAR all-flash, et son travail est de servir vos données à pleine vitesse. Dépenser son endurance en écriture comme fausse mémoire est un mauvais échange à n'importe quel prix, et c'est pourquoi nous préférons avoir la conversation du dimensionnement dès le départ plutôt que de la masquer par de la pagination.

Sans swap, l'épuisement de la mémoire produit une ligne de log au lieu d'un mystère

L'argument le plus fort est diagnostique, et quiconque a traqué une semaine de lenteur à travers une stack de supervision le connaît déjà. Avec du swap, manquer de mémoire ressemble à tout sauf à un manque de mémoire. La latence monte sur chaque service à la fois, aucune erreur n'apparaît dans aucun log, et les tableaux de bord pointent partout où l'attente se fait sentir, en général la base de données et le stockage. Des équipes perdent des jours dans cette chasse, et le swap la fabrique sur une seule machine, systématiquement, par conception.

LA RAM S'ÉPUISE, AVEC SWAP
  • La latence monte sur chaque service à la fois, sans erreur dans aucun log
  • Les tableaux de bord accusent la base, puis le stockage, puis le réseau
  • La baie absorbe un flux de petites écritures aléatoires dont le seul travail est de cacher le manque
  • Le diagnostic arrive des jours plus tard, après que quelqu'un a corrélé les graphiques
LA RAM S'ÉPUISE, SANS SWAP
  • Le noyau tue le plus gros coupable et le nomme dans le log
  • L'échec a un horodatage, un nom de processus et un total de mémoire
  • La baie dépense ses écritures sur de vraies données
  • La solution est une conversation de redimensionnement le jour même
CE QUI SE PASSE À ZÉRO

Un graphique de mémoire sur une machine sans swap dit la vérité jusqu'au bord.

Nous dimensionnons la RAM honnêtement et nous demandons votre vrai free -m

La solution honnête à un manque de mémoire est la même depuis l'invention de la pagination : plus de RAM, ou un working set plus petit. C'est donc là que nous mettons l'effort. Le Sizing Desk demande la vraie sortie de free -m depuis votre machine actuelle avant de proposer quoi que ce soit, parce que la colonne available de cette commande clôt des discussions que les adjectifs ne clôront jamais, et la même lecture qui supprime le besoin de swap réduit en général aussi le devis.

LES TROIS RÉPONSES À UN MANQUE DE MÉMOIRE
Plus de RAMUn working set plus petitPaginer sur le disque
Une seule des trois dépense de l'endurance flash pour éviter la conversation.

La méthode complète, avec des exemples travaillés pour chaque chiffre que nous demandons, se trouve dans comment dimensionner un serveur. Sur du matériel qui nous appartient, la marge est déjà dans la machine que vous avez payée, donc la provisionner ne coûte rien de plus à votre pic, ce qui retire la dernière excuse économique pour traiter le stockage comme de la RAM de débordement.

Réponses directes

Le noyau n'a-t-il pas besoin d'un peu de swap pour bien fonctionner ?+

Le noyau peut utiliser le swap pour évincer des pages réellement froides et donner la RAM récupérée au cache disque, et sur une machine chroniquement à l'étroit, cela aide à la marge. La marge est le problème. Cela achète quelques pour cent de mémoire effective tout en cachant si la machine est seulement assez grande, et cela brouille chaque graphique de mémoire sur lequel vous compterez plus tard. Sur une machine correctement dimensionnée, le gain des pages froides s'arrondit à zéro, et la clarté diagnostique d'une frontière mémoire nette vaut bien plus à 3 heures du matin.

Comment savoir combien de RAM j'utilise réellement ?+

Lancez free -m pendant un vrai pic et lisez la colonne available. La méthode complète, avec des exemples travaillés pour chaque chiffre, se trouve dans notre article sur le dimensionnement, comment dimensionner un serveur. Si cette colonne dit que vous êtes réellement à l'étroit, la réponse est plus de RAM, et nous le dirons.

Le « sans swap » est une petite décision en aval de plus grandes : dimensionnez les machines sur des chiffres réels plutôt que sur des factures, et mettez du matériel sérieux en dessous pour que les chiffres tiennent une mauvaise nuit. La conversation sur la RAM est moins chère que le mystère qu'elle évite.

Dimensionnez la RAM honnêtement

Le Sizing Desk part des vrais chiffres de votre machine et propose une configuration à partir de nos vraies briques. Quand vos chiffres disent moins, il vous dimensionne à la baisse.

Ouvrir le Sizing Desk

Vous êtes arrivé à la fin.

Mettez la lecture en pratique

Que faites-vous tourner ?

Parlez-nous de la charge de travail, du trafic et des exigences de reprise. Commencez par le configurateur de serveur, ou passez en revue les détails avec un ingénieur.

Écrit par les ingénieurs qui construisent et exploitent l'infrastructure qu'il décrit.
Parler à un ingénieur
XIn

5 min restantes