# [OFF] Swap à 100% .. et ? Est-ce grave ? (non)

## loopx

Bonjour, 

Voilà, au boulot, mon collègue a activé un check dans Nagios qui me c**** les c******* ... J'ai beau lui dire que cela ne sert à rien, que ça fait plus chier qu'autre chose ... rien y fait, il veut le laisser ... La suite de l'idée a déjà été jusqu'à faire planter la machine pour "vider" la swap (tout est dans la tête ...).

Le check vérifie la swap disponible ... et il crie quand elle est presque full ... maintenant voilà, certain de nos serveurs sont à 100% ou presque ... la machine s'en porte très bien, mais dans Nagios, ça fait une ligne rouge ... Alors, quand en plus on effectue une purge de la Swap en production sur un serveur DB... et que ça plante! ...

Bref, j'aurais un peu voulu avoir votre avis ... Pour moi, la swap pleine, ce n'est pas un problème puisque c'est le kernel qui gère ça ... Tant qu'il ne grignote pas toute la mémoire dispo de la machine, il n'y a aucun problème pour moi. En fait, j'imagine que le kernel utilise la swap au max pour, justement, permettre une meilleur réactivité ; la mémoire la moins utilisée => swap ... et hop, c'est le meilleur compromis ?

Voici un petit copier/coller d'une machine (je gère le parc JBoss) :

```

[0][root@serveur ~]$ free -m

             total       used       free     shared    buffers     cached

Mem:          7933       7654        278          0        321        735

-/+ buffers/cache:       6597       1335

Swap:         2047       2029         18

```

Cette machine, bien que assez limite niveau mémoire, tourne depuis 190 jours sans problèmes ...

Alors, est-ce grave que la swap soit à 100% ? Je précise que cette question est posée avec un contexte "fixe" : impossible de modifier l'utilisation de la mémoire, je ne parle que de stabilité ici, pas de problème de performance (logique, il swap) ...

Est-ce vraiment bien utile de checker la swap ?

----------

## Oupsman

Message supprimé

----------

## k-root

 *loopx wrote:*   

> Est-ce vraiment bien utile de checker la swap ?

 

si il n'y a que des process java et pas de java.lang.OutOfMemoryError dans les logs ..  non  :wink:

----------

## loopx

```
[0][root@serveur ~]$ vmstat 10 2

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0 2015028 253024 326944 814256    1    1     1    53    1    1  4  0 95  1  0

 0  0 2015028 253444 326952 814256    0    0     0    26 1018 1453  0  0 99  1  0
```

Visiblement, c'est du "stockage" sans vraiment y toucher .. et non, pas de OutOfMemory .. donc, cela doit fonctionner sans problème  :Wink: 

C'est un serveur de validation, il n'est pas soumis à un exercice de charge comme la prod ... donc, au final, il n'y a aucun problème pour moi   :Rolling Eyes: 

----------

## ghoti

Tu devrais peut-être conseiller à ton collègue de relire le "Linux System Administrator's Guide" :

 *Quote:*   

> Sometimes a lot of swap space can be in use even though there is a lot of free physical memory. This can happen for instance if at one point there is need to swap, but later a big process that occupied much of the physical memory terminates and frees the memory. The swapped-out data is not automatically swapped in until it is needed, so the physical memory may remain free for a long time. There is no need to worry about this, but it can be comforting to know what is happening.

 

 :Wink: 

----------

## Poussin

loopx, tu ne travaillerais pas à l'unif toi? ^^

----------

## loopx

De lidge ? Neni hein! Je suis sur BXL  :Wink: 

Mais j'en connais qui y travaille peut être encore  :Wink: 

----------

## Poussin

 *loopx wrote:*   

> De lidge ? Neni hein! Je suis sur BXL 
> 
> Mais j'en connais qui y travaille peut être encore 

 

Je me suis juste basé sur ta localisation :p

----------

## loopx

 *ghoti wrote:*   

> Tu devrais peut-être conseiller à ton collègue de relire le "Linux System Administrator's Guide" :
> 
>  *Quote:*   Sometimes a lot of swap space can be in use even though there is a lot of free physical memory. This can happen for instance if at one point there is need to swap, but later a big process that occupied much of the physical memory terminates and frees the memory. The swapped-out data is not automatically swapped in until it is needed, so the physical memory may remain free for a long time. There is no need to worry about this, but it can be comforting to know what is happening. 
> 
> 

 

Ah que je lui ai montré, mais en fait, le problème, c'est qu'il veut que la machine n'utilise pas de swap => tout à fait d'accord avec lui. On va tenter d'augmenter la quantité de mémoire sur la machine demain   :Laughing: 

... le Nagios devrait plus crier au loup   :Cool: 

----------

## loopx

 *Poussin wrote:*   

>  *loopx wrote:*   De lidge ? Neni hein! Je suis sur BXL 
> 
> Mais j'en connais qui y travaille peut être encore  
> 
> Je me suis juste basé sur ta localisation :p

 

Bah vi, province de l!ège   :Rolling Eyes: 

----------

## k-root

 *loopx wrote:*   

>  On va tenter d'augmenter la quantité de mémoire sur la machine demain   

 

Java processes can often consume more memory than any other application running on a server.

Java processes can be passed a -Xmx option.  This controls the maximum Java memory heap size.  It is important to set a limit on the heap size, otherwise the heap will keep increasing until you get out of memory errors on your VPS

To determine how much memory you can spare for Java, try this: stop your Java process; run free -m; subtract the 'used' value from the "-/+ cache" row from the total memory allocated to your server and then subtract another 'just in case' margin of about 10% of your total server memory.  The number you come up with is a rough indicator of the largest -Xmx setting you can use on your server.

----------

## loopx

 *k-root wrote:*   

>  *loopx wrote:*    On va tenter d'augmenter la quantité de mémoire sur la machine demain    
> 
> Java processes can often consume more memory than any other application running on a server.
> 
> Java processes can be passed a -Xmx option.  This controls the maximum Java memory heap size.  It is important to set a limit on the heap size, otherwise the heap will keep increasing until you get out of memory errors on your VPS
> ...

 

The margin of about 10% is interesting for memory estimation. For Java process (JBoss in fact), it's already set in "run.conf" (JAVA_OPTS)   :Wink:  . But, some application in validation need more memory, and I must run 4 instances in this machine. I already set Xmx to "1792" (25% less than 2Gb) to avoid swap use problem (I estimate than 1Gb will be needed for the system), but an amount of memory are even swapped off.

This midday, we will proceed to a memory upgrade, so, wait & see   :Rolling Eyes: 

----------

## xaviermiller

On peut continuer en french, notre english-speaking intervenant est à Pââââris  :Smile: 

----------

## loopx

 *XavierMiller wrote:*   

> On peut continuer en french, notre english-speaking intervenant est à Pââââris 

 

Arf, sh**   :Laughing: 

EDIT: on a pu ajouté 3Go de mémoire, donc, plus de problème de swap ^^

Problème résolu, mais bon, je voulais juste savoir si la swap pouvait poser des problèmes d'instabilité (hors "memory leak")   :Razz: 

----------

## xaviermiller

Si ton disque dur est instable, la swap le sera aussi :p

----------

## loopx

 *XavierMiller wrote:*   

> Si ton disque dur est instable, la swap le sera aussi :p

 

AAaaaaaarf, mais heureusement, c'est du raid ^^ ... raid monitoré via Nagios :p

----------

## DuF

Bonjour,

Bon déjà ton collègue il est un peu dangereux, j'espère pour lui qu'il ne mettra jamais son nez dans une machine HP-UX, sinon il fera une crise cardiaque avant qu'il ait compris le principe du pseudo-swap.

En fait, le plus important avec le swap c'est qu'il y ait le minimum d'entrées/sorties sur le swap, car c'est lent (sauf si t'es en SSD, le constat est plus nuancé).

Donc la remarque d'Oupsman est très intéressante de ce point de vue là => "est-ce qu'il y a du swap-in/swap-out sur ma machine ?". Cette question est la première à se poser dans le cas d'une problématique de swap. Après dans ton cas tu pourrais avoir en second phénomène le ralentissement des applications qui ne seraient pas en mémoire mais en swap (très visible avec java), mais en général c'est pas ta sonde nagios qui va te prévenir, mais tes utilisateurs  :Smile: 

En soit la swap sous linux n'est pas un problème même si elle approche les 100%, par contre avoir beaucoup d'activité si/so sur ta swap alors logiquement tu dois avoir des ralentissements que les utilisateurs devraient ressentir. Dernier point, si la swap est presque pleine, que la mémoire libre est vide alors le prochain démarrage de process gourmand en mémoire posera des problèmes, voir échouera (cf. remarques de certains sur les java.out.of.memory).

Donc ça c'est le point de vue par rapport à ta phrase initiale : "je ne parle que de stabilité ici" => L'utilisation de l'espace swap ne pose pas de problème de stabilité au système, il peut en poser à la création de nouveau process ou à une demande de réservation mémoire d'un process existant qui en demanderait plus que le système ne peut en fournir.

Par contre je ne suis pas sûr de comprendre ta phrase "pas de problème de performance (logique, il swap)" => A partir du moment que l'activité applicative (java, bdd, annuaire, etc.) est élevée, tous les process qui seront en zone swap plutôt que mémoire vive seront ralentis => Tant que les utilisateurs ne disent rien ça va  :Smile: , mais si tu mets en place une métrologie applicative pour mesurer par exemple les temps de réponses de requêtes sql ou autres, tu devrais voir un delta qui peut être conséquent.

Après tout dépend du besoin, de l'importance du serveur du point de vue business... Là où je bosse on a un annuaire ldap qui répond à environ 6000 requêtes ldap en lecture par seconde et à environ 600 requêtes ldap en écriture par seconde, il est clair que s'il déborde en zone swap c'est mort. On a aussi des applications pour l'intranet dont le swap est full mais c'est pas grave car c'est pas pour les 2 utilisateurs qui sont dessus qu'on va investir dans de la ram  :Smile: 

Donc par rapport à ton sujet, oui le swap à 100% ça peut être grave, sur mon ordi je m'en fou, sur un serveur dont la performance n'est pas une problématique on s'en fou, pour un serveur critique dont la performance est primordiale c'est grave, tu passes d'un temps d'accès à la mémoire vive à un temps d'accès disque, c'est énorme  :Smile: 

----------

## loopx

@DuF :

Je te suis totalement, c'est bien ce que je pensais  :Wink: . Tout ça est totalement logique en même temps. Ma phrase sur la swap est un peu étrange, je ne l'ai pas relue, mais je voulais dire que "ça tourne bien" car il a mis ce dont il n'a pas besoin "dans la swap" => ce dont il a besoin n'y est pas => ça roule   :Cool:  (faut avouer, c'était très mal expliqué ..)

----------

