Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Memoire] Pb de swap et de cache (bug 403449)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
pums974
Tux's lil' helper
Tux's lil' helper


Joined: 27 Feb 2010
Posts: 78

PostPosted: Sun Feb 26, 2012 3:38 pm    Post subject: [Memoire] Pb de swap et de cache (bug 403449) Reply with quote

Bonjour,
J'ai remarquer que mon pc utilisait le swap sans raison : free -h
total used free shared buffers cached
Mem: 3,9G 689M 3,2G 0B 31M 348M
-/+ buffers/cache: 310M 3,6G
Swap: 5,0G 321M 4,7G


Alors j'ai voulu le vider : swapoff -av
swapoff sur /dev/sda2
swapoff: /dev/sda2 : échec de swapoff: Ne peut allouer de la mémoire

Je ne comprend pas pourquoi il refuse.

je rajouterais que je n'arrive pas a vider le cache avec : echo "1" > /proc/sys/vm/drop_caches

Je pense que c'est lié à d'autres problèmes lié à la gestion de la mémoire chez moi : https://bugs.gentoo.org/show_bug.cgi?id=403449

Est-ce que ca parle à quelqu'un ?


Last edited by pums974 on Mon Feb 27, 2012 8:59 pm; edited 1 time in total
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Mon Feb 27, 2012 2:05 pm    Post subject: Reply with quote

Bonjour,

Pourrais-tu mettre le titre de ton message en conformité avec le forum ?
Merci d'avance !
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
pums974
Tux's lil' helper
Tux's lil' helper


Joined: 27 Feb 2010
Posts: 78

PostPosted: Mon Feb 27, 2012 9:02 pm    Post subject: Reply with quote

Bonjour,

Au temps pour moi, désolé de ne pas l'avoir fait dés le début.
C'est corrigé, mais je ne suis pas trop sur de ma description, si tu pense à quelque chose de plus clair....
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Mon Feb 27, 2012 9:07 pm    Post subject: Reply with quote

Merci pour le titre ;)
Pour le reste, je ne vois pas trop, je laisse la main à l'équipe
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
pums974
Tux's lil' helper
Tux's lil' helper


Joined: 27 Feb 2010
Posts: 78

PostPosted: Mon Feb 27, 2012 9:31 pm    Post subject: Reply with quote

Déjà je ne suis plus sur,
quand je fais echo "1" > /proc/sys/vm/drop_caches
je suis bien censé me retrouver avec 0 de cache affiché dans free ?

et j'ai fais un test de plus, j'ai rajouter un swap sdd2 et j'ai pu désactiver mon swap sda2, et ce instantanément, sans transfert de données. Mais sans pouvoir desactiver sdd2 ensuite.

Donc :
1 - Je ne comprend pas ce que sont les données qui sont dans mon swap, mais qu'il ne transfert pas dans le nouveau swap...
2 - Mais pourquoi refuse-t'il de vivre sans swap alors qu'il a toute la place dont il a besoin en mémoire.
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Tue Feb 28, 2012 8:11 am    Post subject: Reply with quote

Si le swap ne se vide pas, c'est qu'une application a de la mémoire en swap...
Ferme toutes tes applications avant de dropper ton swap.
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
pums974
Tux's lil' helper
Tux's lil' helper


Joined: 27 Feb 2010
Posts: 78

PostPosted: Tue Feb 28, 2012 9:15 pm    Post subject: Reply with quote

A ce moment là je n'avais quasiment aucune application ouverte, si ce n'est un terminal et gnome...
D'habitude il me semble que je peut vider mon swap à peu près à n'importe quel moment...

Comment je peux savoir quel application utilise le swap ?
Back to top
View user's profile Send private message
ghoti
Advocate
Advocate


Joined: 30 Dec 2002
Posts: 3624
Location: Belgium

PostPosted: Tue Feb 28, 2012 10:17 pm    Post subject: Reply with quote

Tu trouveras sur cette page une série de raisons qui peuvent pousser le kernel à recourir à la SWAP alors qu'il y a de la RAM disponible...
Back to top
View user's profile Send private message
pums974
Tux's lil' helper
Tux's lil' helper


Joined: 27 Feb 2010
Posts: 78

PostPosted: Tue Jun 12, 2012 5:33 pm    Post subject: Reply with quote

Bonjour,
Désolé de relancer le sujet, mais je ne comprend toujours pas.

Je fais, dans l'ordre
# swapon /dev/sda2
*utilisation du PC *
# free
total used free shared buffers cached
Mem: 4045484 3545152 500332 0 157632 1473384
-/+ buffers/cache: 1914136 2131348
Swap: 5245216 278700 4966516
# sync
# sysctl -w vm.drop_caches=3
# sysctl vm.swappiness=0
# free -m
total used free shared buffers cached
Mem: 3950 2347 1603 0 26 599
-/+ buffers/cache: 1721 2229
Swap: 5122 269 4852
# swapon /dev/sda3
# swapoff /dev/sda2
# free -m
total used free shared buffers cached
Mem: 3950 2642 1307 0 60 799
-/+ buffers/cache: 1783 2167
Swap: 10235 0 10235
# swapoff -av
swapoff sur /dev/sda3
swapoff: /dev/sda3 : échec de swapoff: Ne peut allouer de la mémoire

Pourquoi veut-il allouer de la mémoire puisqu'il utilise 0 de swap ???
Back to top
View user's profile Send private message
DuF
Advocate
Advocate


Joined: 09 Dec 2002
Posts: 2687
Location: Paris

PostPosted: Tue Jun 12, 2012 9:35 pm    Post subject: Reply with quote

Bonjour,

Alors pour moi il y a plusieurs sujets :

- ton système swap-t-il ? D'après moi on n'en sait rien, tout du moins nous n'avons pas les informations pour le savoir. J'y reviens après :-)

- Les commandes swapon et swapoff servent seulement à proposer une zone mémoire supplémentaire de type pagination/swap. Il s'agit en général de disques/partitions que l'on dédie à cette activité. [EDIT]Je suis allé un peu vite là. Je comprends bien que l'enchainement d'un swapoff et d'un swapon c'est pour forcer le système à copier cette zone mémoire en ram et repartir avec un swap vide, je ne le remets pas en cause, mais ce n'est pas le but de ces fonctions. C'est pour ça que je fais ce rappel et recentre le sujet sur l'usage attendu afin d'éviter tout contournement, l'objectif étant de comprendre ce qui se passe et d'éviter toute solution curative qui ne serait pas préventive.

- La succesion de commandes swapon/swapoff ne fait que perturber le système sur les zones de pagination/swap qu'il a a disposition. Sachant qu'il peut réserver de la mémoire (en swap) sans l'utiliser réellement (par des écritures disques en l'occurence) il peut échouer sur un swapoff s'il venait de faire une réservation mémoire dans cette zone.

- Le fait qu'il reste de la mémoire 'Free' n'est pas forcément un indicateur de swap ou pas, comme l'indique Ghoti en suivant son lien. En effet un exemple simple (qui n'est pas forcément ton cas), toute la mémoire est prise, un traitement spécifique a besoin à un instant T de mémoire, le système va le mettre en swap ou mettre un swap un autre segment mémoire qu'il juge vieux mais qu'il ne peut libérer. Pour une raison X ou Y tu libères de la mémoire qui était dans la zone 'free' le système ne va pas forcément libérer celui qui a été affecté au swap s'il n'est sollicité par personne. Et dans ce cas la commande free indiquera de la mémoire libre et du swap utilisé, mais peut être que c'est en raison d'une configuration particulière passée. Dans le même genre, la commande suivante permet de voir qu'elle est réellement à un instant T la mémoire réellement utilisée, pas seulement celle réservée, mais celle dites "active", à comparer avec le "free -m" (le cat /proc/meminfo le donne aussi) :

Code:
genduf ~ # vmstat -s -S M | grep mem
         3793 M total memory
         2140 M used memory
         1169 M active memory
          613 M inactive memory
         1652 M free memory
          223 M buffer memory
genduf ~ # free -m
             total       used       free     shared    buffers     cached
Mem:          3793       2127       1666          0        223       1194
-/+ buffers/cache:        709       3084
Swap:         1035          0       1035


Maintenant le point important dans tout ça, de mon point de vue en tout cas :

- Dédier un espace (ou pas) de swap en affectant une partition par exemple, chez toi cela pourrait être /dev/sda3, afin de creuser le sujet voir identifier un coupable à une consommation de mémoire swap.

- Mettre en place une métrologie permettant d'identifier qui swap => Pour ça il existe différents outils, le plus simple et facile à utiliser est vmstat. Il suffit de le lancer dans un terminal/console en indiquant un intervalle de prise de mesure (en secondes).

En général on obtient une sortie du type :

Code:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0 1772024 226012 1155908    0    0    86   106   58  322  3  2 93  2
 0  0      0 1772148 226020 1156184    0    0   128    36  152  278  1  2 97  0
 0  0      0 1764336 226020 1164652    0    0     0     0  126  250  1  2 97  0
 0  0      0 1760616 226028 1167348    0    0   128   102  233 1115  2  2 96  0
 0  0      0 1770288 226028 1156808    0    0   128     0  242 1077  2  2 96  0
 0  0      0 1769800 226028 1156712    0    0     0     0  304 1493  3  2 95  0
 0  0      0 1769188 226040 1157248    0    0   256    42  242 1300  2  2 96  0
 0  0      0 1768800 226040 1157288    0    0     0     0  312 1657  2  2 96  0
 0  0      0 1768676 226048 1157536    0    0   128    60  286 1451  2  2 96  0
 0  0      0 1768428 226048 1157984    0    0   128     0  278 1465  2  2 96  0
 1  0      0 1767064 226056 1158048    0    0   128   100  325 1567  3  2 95  0
 0  0      0 1766420 226056 1158056    0    0     0     4  335 1654  2  2 96  0
 0  0      0 1766296 226056 1158312    0    0   128     0  225 1119  2  2 96  0
 0  0      0 1765676 226068 1158592    0    0   128    38  284 1395  2  2 96  0
 0  0      0 1765552 226068 1158576    0    0     0     0  364 1862  2  3 95  0
 0  0      0 1765056 226068 1159124    0    0   256     0  232 1253  2  2 96  0
 1  0      0 1764560 226076 1159088    0    0     0    22  306 1644  3  2 95  0
 1  0      0 1764560 226076 1159344    0    0   128     0  344 1655  3  2 95  0
 0  0      0 1761956 226084 1159532    0    0    94   104  315 1561  2  3 95  0
 0  0      0 1761212 226084 1159484    0    0     0     0  325 1640  2  3 95  0
 1  0      0 1760468 226084 1159460    0    0     0     0  376 1845  2  3 95  0
 0  0      0 1760344 226096 1159532    0    0     0    40  356 1783  3  2 95  0
 0  0      0 1774604 226108 1171756    0    0   120     0  310 1264  2  3 95  0


Les 2 colonnes qui vont nous intéresser sont 'si' et 'so' pour swapin et swapout, en gros les pages qu'il écrit et qu'il sort de l'espace swap. Attention je crois que le swapout correspond à ce qui est écrit en swap, à vérifier :) Donc si quand tu boot ton swap est à 0 et qu'avec cette commande tu vois de l'activité si/so et que ton swap se remplit, alors effectivement tu as un élément qui génère du swap.

L'étape suivante est d'identifier pourquoi à un moment donné il y a ce swap ou qui se retrouve en swap.

Pour ça il y a plusieurs possibilités mais ça devient plus compliqué car faut d'abord déterminer ce qu'on cherche. Mais c'est à coup de top, pmap etc. Voir si c'est un noyau récent, utiliser 'perf' ( http://perf.wiki.kernel.org/ ) mais pour l'instant je n'ai pas encore eu l'occastion de pratiquer ce qui est bien dommage car j'ai toujours les outils solaris DTT bien sympathiques.

Pour résumer, la première question est : ton système génère-t-il du swap ?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum