[RHEL 5.6] swap élevé... sans process qui l'utilise

swap élevé... sans process qui l'utilise [RHEL 5.6] - Divers - Linux et OS Alternatifs

Marsh Posté le 26-07-2013 à 10:19:00    

bonjour a tous,
 
voila je seche, j'ai une machine qui swap pas mal alors que j'ai de la mémoire, soit, je me suis essayé a trouver les process qui swap sans succés...
alors déjà un petit free -m :  
            total       used       free     shared    buffers     cached
Mem:         32188      31999        188          0        192      29255
-/+ buffers/cache:       2551      29636
Swap:        39931       3893      36038
 
on voit bien que j'ai pas mal de ram libre et que je swap a 3.8 Go.
 
voila ce que j'ai tenté pour trouver mes process qui swap et essayer de trouver une logique :  
 

Citation :


 #!/bin/bash
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"`
do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null | awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
if (( $SUM > 0 )); then
echo "PID=$PID swapped $SUM KB ($PROGNAME)"
fi
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL KB"
 


 
et ca me renvoit rien, aucune conso de swap...
 
a noter que à l'aveugle je pourrais changer le swapiness, mais n'ayant pas ce comportement sur d'autres serveurs, j'aimerai comprendre... j'ai du louper un truc, mais la je ne vois pas.
merci pour votre aide !!!!!


Message édité par redridinghood le 26-07-2013 à 10:45:16
Reply

Marsh Posté le 26-07-2013 à 10:19:00   

Reply

Marsh Posté le 26-07-2013 à 13:56:18    

J'ai déjà vu ça, quand la mémoire est limitée dans un cgroup par exemple, tu utilises le max de ce qui est autorisé, tu swap, tu déclenches l'OOM alors qu'il reste 16Go de libre  :o  
 
Regarde la sortie de dmesg ? Sinon swapoff / swapon ? :D

Reply

Marsh Posté le 26-07-2013 à 14:12:18    

Le swap a toujours été un peu mystérieux pour moi mais je crois que si tes process n'ont plus besoin de mémoire le kernel ne va pas immédiatement libérer le swap mais le faire lentement. Fais un atop pour voir l'évolution.


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 26-07-2013 à 15:59:35    

merci pour vos réponses, le swapon/swapoff, le souci c'est que ca ne m'aide pas à identifier la cause.
je penche effectivement pour une libération qui ne se fait pas immédiatement, mais là en gros, sur la journée du 24, ca a oscillé entre :
2,4 Go et 5 Go et des poussières de Go (j'utilise SAR).
 
après, et j'aurai du le dire, ca aiderait peut être, c'est un serveur de BDD oracle, et la je ne sais pas du tout comment il gere.. (par contre je me serai attendu a voir du swap utilisé dans les process oracle, ce qui n'a pas été le cas, en tous cas, au moment ou je l'ai fait).
 

Reply

Marsh Posté le 26-07-2013 à 16:12:53    

atop a un démon qui monitor quel process part en vrille niveau CPU/mémoire. Ca peut servir.


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 26-07-2013 à 21:55:14    

Bonjour,
 
Oracle 10 ou 11g ?
 
On peut avoir la valeur de la SGA max & target, + pga (show parameters sga - show parameters pga) des différentes instances. Et Mémoire total du serveur.
 
Est-ce que tu peux nous mettre un petit top histoire de voir ?
 
et un petit ps -f
 
Et montre nous ton SAR. (je connais pas....)
 
Si la mémoire allouée pour tes instances Oracle est supérieur à ta ram physique -> swap
Si la mémoire allouée est insuffisante pour les traitements de tes instances -> swap


Message édité par hadrieno le 26-07-2013 à 21:57:01
Reply

Marsh Posté le 30-07-2013 à 08:38:57    

hello, merci pour vos réponses, je vous mets tout ca dans la journée !

Reply

Marsh Posté le 30-07-2013 à 08:51:44    

et hop, voila le top
 
http://www.zimagez.com/miniature/ora1.jpg
 
et mes SAR (pas fait au même moment, mais ca n'a pas beaucoup changé:
 
 
http://www.zimagez.com/miniature/ora2.jpg
http://www.zimagez.com/miniature/ora3.jpg
http://www.zimagez.com/miniature/ora4.jpg


Message édité par redridinghood le 30-07-2013 à 08:52:58
Reply

Marsh Posté le 30-07-2013 à 10:52:54    

toujours dans les choses etranges, quelqu'un sait pourquoi dans /proc/N°PID/satus, je n'ai pas la ligne vmSwap ?
 
distrib : rhel 5.6
2.6.18-238.5.1.el5

Reply

Marsh Posté le 30-07-2013 à 11:47:03    

Sans vouloir être méchante ... Ta machine commence a swapper alors qu'il te reste 2% de ta mémoire centrale disponible, je trouve ce comportement "normal" sachant que même sous linux, tu n'ira JAMAIS a 0% de mémoire physique disponible (regarde ton % memused qui est dans les 98/99%)
Tu t'étonne de swaper ? Moi pas vue tes graphs. Tu swap parce que t'as plus de mémoire dispo.
Et pourquoi tu vois pas que tu swap ? Parce que pour un programme c'est transparent, surtout si le programme est bien fait et tourne en userland comme il devrait : il voit que du feu, et toi en utilisateur comme tu as dit faut que t'aille taper dans le swapiness. Mais bon, là, ta machine elle est a genoux, t'aurais plutôt intérêt a voir aussi pour une upgrade ram.

Reply

Marsh Posté le 30-07-2013 à 11:47:03   

Reply

Marsh Posté le 30-07-2013 à 12:56:38    

sur le graph mémoire en tout cas c'est net.


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 30-07-2013 à 13:19:55    

j'aimerai justement etre sur qu'elle est a genou...
la deuxieme ligne de free :  
-/+ buffers/cache:       2551      29636  
 
indique que potentiellement j'ai 29 Go qui peuvent être réclamés pour les programmes.
 
donc selon toi MysterieuseX, on ne peut pas voir ce qui swap car totalement transparent ?  
 
moi je pense qu'il y a une mauvaise utilisation de la mémoire (une trop grande reservation non utilisée par ex...) ce qui provoque le swap, mais j'aimerai etre sur.
 
 

Reply

Marsh Posté le 30-07-2013 à 13:52:38    

Dans top/htop faudrait que tu classe tes process en fonction de la mémoire "rés", et de la mémoire "virt"  
Mettons, pour ton premier screen tu as 4 sessions Oracle par exemple, a 15m de mémoire, 19m réserved et 2gig/session de virtuel (se qui n'est pas violent non plus).
En gros faut connaitre le comportement de tes programmes. Oracle va s'allouer de la mémoire pour cacher au max, plus tu lui mettra de mémoire, plus il ira en bouffer, mais c'est "normal". Après je sais pas se qui tourne sur ton serveur, je connais pas les besoins applicatifs vis a vis d'oracle et tes bases donc je pourrai pas te dire comment optimiser.
 
Et la mémoire "cached" en numa et/ou avec une CG c'est pas forcément mauvais comme sur windows hein. Linux est plutôt robuste a ce niveau justement. La question que tu doit te poser surtout c'est niveau "responsivness" et nice/ionice si t'en a encore sous le pied ou pas.
Après tu peu carrément configurer le swapiness pour prioriser tes applications critiques, mais je vois rien de dramatique dans tes logs hormis un comportement normal d'Oracle et de Linux.
Edit :  
cat /proc/mtrr pour voir un truc ?


Message édité par MysterieuseX le 30-07-2013 à 13:53:16
Reply

Marsh Posté le 30-07-2013 à 16:47:48    

je connais pas le fonctionnement d'oracle concernant la gestion memoire, mais effectivement ce n'est pas choquant de réserver plein de mémoire, a condition de s'en servir.... sur ce serveur, il n'y a "que" de la BDD oracle, donc je suis presque sur a 100% que c'est oracle qui swap, alors qu'a mon avis il a de la mémoire réservée de partout....
 
voila le /proc/mtrr  
reg00: base=0xd0000000 (3328MB), size=196864MB: uncachable, count=1
reg01: base=0xe0000000 (3584MB), size=197120MB: uncachable, count=1

Reply

Marsh Posté le 30-07-2013 à 16:50:04    

apres ce qui m'embete c'est aussi l'utilisation (ou plutot la non utilisation) du ramdrive /dev/shm.
oracle est censé s'en servir, il est taillé a 17Go (donc 17Go de RAM "en moins", et quand l'os swap a 4 Go, il est utilisé a ...9 %
 
c'est en ce sens la que je me dis qu'il y a du paramétrage qui ne doit pas etre top. (ce n'est pas moi qui ai monté ni configuré le serveur, ni paramétré oracle d'ou mes interrogations)

Reply

Marsh Posté le 30-07-2013 à 17:39:33    

Essaye de choper les docs de l'intégrateur/ton collègue au sujet du serveur en question avant toutes actions.

Reply

Marsh Posté le 30-07-2013 à 17:47:50    

je l'aurais fait....s'il y en avait....

Reply

Marsh Posté le 31-07-2013 à 10:53:43    

y aurait pas moyen de stopper/redémarrer ta BDD Oracle pour voir si ça libère de la swap ?
 
Tu aurais au moins la confirmation que c'est bien ce process qui swappe et tu pourrais concentrer tes recherches sur les paramètres d'Oracle.
 
Profites-en pour observer à quel moment le serveur recommence à swapper (corrélation avec la consommation globale de mémoire + avec les processus Oracle).
 


---------------
Ravèt pa janmen ni rézon douvan poul
Reply

Marsh Posté le 02-08-2013 à 14:07:05    

oki je vais creuser ca.
la conclusion que j'ai pour le moment, c'est que comme aucun process ne swap, c'est l'os qui decide de swapper (ce que je peux diminuer avec le parametre vm.swapiness) et il y a de fortes chance (que je validerai avec le test d'arret bdd si possible) que du cache oracle passe en swap.

Reply

Marsh Posté le 03-08-2013 à 14:03:31    

redridinghood a écrit :

oki je vais creuser ca.
la conclusion que j'ai pour le moment, c'est que comme aucun process ne swap, c'est l'os qui decide de swapper (ce que je peux diminuer avec le parametre vm.swapiness) et il y a de fortes chance (que je validerai avec le test d'arret bdd si possible) que du cache oracle passe en swap.


Premier point : normal oui, c'est souvent l'OS qui décide de swapper, rarement les appli qui swappent d'elle même. D'ailleurs, je vois pas comment les appli pourraient décider de swapper d'elle même puisque normalement, hormis sur une distro du style "damn vulnerable linux" l'isolation du kernel est fait de telle sorte qu'il est impossible aux applis de sortir de leurs périmètre mémoire et d'avoir connaissance des autres périmètres de manière implicite.
Second point : normal aussi, mais en quoi est-ce génant d'avoir des informations "cached" ? Je te dit : est-ce que ta machine est encore réactive ? Est-ce que tu perd en perf réellement ? Si c'est non a ces deux questions, je vois pas pourquoi tu cherche a régler ce problème de swap, sachant que ta mémoire vive est utilisée a 99% et ton swap a 10% même pas. Je trouve que ta machine a un comportement "normal" pour un serveur de BDD.
 
A rajouter, vue tes paramètres MTRR, que le NUMA n'est pas activé et que donc tu a les deux banques mémoires de tes 2 CPU sur la machine qui sont séparés et non uniformes. Essaye déjà de tuner ton kernel avant d'attaquer a tuner ta config Oracle.

Reply

Marsh Posté le 05-08-2013 à 13:24:47    

je vais regarder ce point egalement. (pour numa, avec oracle ca a l'air sujet sensible)
(qd je dis que l'os swap, je veux dire que je trouve étrange que mes recherches dans les processus (cf script du premier post) n'indique pas qu'il y a des données d'un process en cache).
après il y a des plaintes de réactivité de certaines bases de données d’où mes recherches.


Message édité par redridinghood le 05-08-2013 à 13:37:50
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed