31 votes

Comment puis-je savoir si mon serveur Windows fait du swapping ?

J'utilise Process Explorer pour surveiller mon serveur Windows pendant qu'il reconstruit des données. Il s'agit principalement d'un processus à forte intensité CPU, mais je veux m'assurer qu'il n'y a pas de swapping. Comment puis-je savoir si c'est le cas en utilisant Process Explorer ? Je pense d'abord que dans la fenêtre d'information du système, il s'agit de Paging File Write Delta. Oui ? Non ? Je suis un idiot ?

*La capture d'écran n'est pas celle du serveur... juste un exemple.

texte alternatif http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

36voto

Rob Howard Points 636

"Pages Input / sec est le compteur à surveiller, mais vous ne devriez pas vous inquiéter de la "permutation" car Windows n'utilise pas le fichier de pages comme le font les *nixes.

Tout d'abord, vous devez comprendre que les pages Windows ne sont pas éliminées. Je vais citer la partie pertinente de Article du blog d'Eric Lipperts (légèrement édité) puisque je ne peux pas le dire mieux moi-même :

"La mémoire vive peut être considérée comme une simple optimisation des performances. L'accès aux données dans la mémoire vive, où l'information est stockée dans des champs électriques qui se propagent à une vitesse proche de celle de la lumière, est beaucoup plus rapide que l'accès aux données sur disque, où l'information est stockée dans d'énormes et lourdes molécules de métal ferreux.

Le système d'exploitation garde la trace des pages de stockage auxquelles les processus accèdent le plus fréquemment et en fait une copie dans la mémoire vive, afin d'obtenir une augmentation de la vitesse. Lorsqu'un processus accède à un pointeur correspondant à une page qui n'est pas actuellement mise en cache dans la RAM, le système d'exploitation effectue une "faute de page", va sur le disque et fait une copie de la page du disque vers la RAM, en supposant raisonnablement qu'elle sera bientôt à nouveau accédée.

Le système d'exploitation est également très intelligent en ce qui concerne le partage des ressources en lecture seule. Si deux processus chargent la même page de code à partir de la même DLL, le système d'exploitation peut partager la mémoire cache entre les deux processus. Étant donné que le code ne sera vraisemblablement pas modifié par l'un ou l'autre processus, il est tout à fait judicieux d'économiser la page de mémoire vive dupliquée en la partageant.

Mais même avec un partage intelligent, ce système de cache finira par manquer de mémoire vive. Lorsque cela se produit, le système d'exploitation détermine quelles sont les pages les moins susceptibles d'être consultées prochainement, les écrit sur le disque si elles ont été modifiées et libère la mémoire vive pour lire quelque chose qui a plus de chances d'être consulté prochainement.

Lorsque le système d'exploitation se trompe ou, plus probablement, lorsqu'il n'y a tout simplement pas assez de mémoire vive pour stocker toutes les pages fréquemment consultées par tous les processus en cours d'exécution, la machine commence à "tourner". Le système d'exploitation passe tout son temps à écrire et à lire la mémoire coûteuse du disque, le disque tourne en permanence et vous ne travaillez pas.

Cela signifie également que le fait de "manquer de mémoire vive" se traduit rarement par une erreur de type "out of memory". Au lieu d'une erreur, cela se traduit par de mauvaises performances, car le coût total du stockage sur disque devient soudain pertinent.

Une autre façon de voir les choses est de dire que la quantité totale de mémoire virtuelle consommée par votre programme n'a pas vraiment d'importance pour ses performances. Ce qui compte, ce n'est pas la quantité totale de mémoire virtuelle consommée, mais plutôt (1) la part de cette mémoire qui n'est pas partagée avec d'autres processus, (2) la taille de l'"ensemble de travail" des pages couramment utilisées et (3) le fait que les ensembles de travail de tous les processus actifs soient plus grands que la mémoire vive disponible.

Il devrait maintenant être clair que les erreurs de type "out of memory" n'ont généralement rien à voir avec la quantité de mémoire physique dont vous disposez, ni même avec la quantité de stockage disponible. Il s'agit presque toujours de l'espace d'adressage, qui, sous Windows 32 bits, est relativement petit et facilement fragmenté. "

Quelques points supplémentaires :

  1. les dll et les fichiers de programme ne sont toujours que paginés, jamais sortis, car ils sont déjà sur le disque (et sont généralement les premières pages libérées lorsque la mémoire vive physique devient insuffisante)
  2. il est beaucoup plus probable que vous manquiez d'entrées libres dans la table des pages ou que votre mémoire soit fortement fragmentée que d'autres problèmes de mémoire (autres que les mauvaises performances globales déjà mentionnées).
  3. Même si vous n'utilisez pas de fichier de page, vous pouvez toujours obtenir des erreurs de page.
  4. d'une manière générale, l'examen de la mémoire engagée est plus révélateur de la manière dont un processus utilise la mémoire

Pour une description complète du fonctionnement de la gestion de la mémoire dans Windows, voir

Le gestionnaire de mémoire virtuelle dans Windows NT

si vous pensez avoir un problème de mémoire, je vous suggère d'abord de regarder cette présentation sur dépannage de la mémoire de Windows

Voici une excellente explication de la raison pour laquelle vous vous retrouvez parfois "à court de mémoire" alors que ce n'est pas le cas, en raison de la fragmentation de la mémoire :

Voir aussi Repousser les limites de Windows : Mémoire physique

Plus d'informations sur la mémoire virtuelle, la fragmentation et les fuites de mémoire, et WOW64

RAM, Mémoire Virtuelle, Pagefile et tous ces trucs (microsoft support)

Mise à jour :

Windows 10 fait quelque chose d'un peu différent avec la mémoire et, au fil du temps, vous verrez un processus appelé "Système et mémoire compressée" Windows 10 ajoute un "magasin de compression" à la liste de sortie de la pagination. Cette mémoire vive est une mémoire UTILISATEUR qui appartient au système (typiquement, le système n'avait que de la mémoire noyau). Cette mémoire est compressée sur place pour une réduction moyenne d'environ 30 %. Cela permet de stocker plus de pages en mémoire (pour ceux qui font le calcul, cela représente 70 % d'espace en plus). Notez que si la mémoire a encore de la pression, les pages du magasin de compression (mode utilisateur, espace de processus du système) peuvent être placées sur la liste modifiée (compressée) qui peut ensuite être écrite sur le fichier de pagination physique. Le système verra qu'elles proviennent de l'espace du mode utilisateur du système et qu'elles sont compressées, et il n'essaiera pas de les remettre dans le magasin. Ainsi, sur les systèmes Windows 10, on peut avoir l'impression que le système inhale de la mémoire vive, mais en fait, il essaie simplement d'être plus efficace dans l'utilisation de la mémoire vive. Les utilisateurs de Mac utilisent une fonctionnalité similaire depuis 2013, et les versions les plus récentes du noyau Linux emploient une version de la compression de la mémoire. Cette méthode de conservation de la mémoire n'est pas seulement meilleure, mais elle est déjà répandue dans d'autres systèmes d'exploitation.

6voto

Jessica McKinnon Points 1503

Oui, les deltas de pagination vous donneraient une indication en direct de la quantité de pagination (ou de "swapping") du serveur, mais seulement à ce moment-là. Pour surveiller cela de plus près, et pour avoir une vue historique, je suggérerais d'utiliser Moniteur de performance ( perfmon.exe ) afin de représenter ou d'enregistrer ces deltas (ainsi que tout autre compteur de performances susceptible d'aider à établir une corrélation entre des événements ou des activités spécifiques et des pics d'activité de radiomessagerie).

5voto

Evan Anderson Points 140581

Le moniteur de performance (perfmon) est votre ami dans ce cas. Vous recherchez des défauts de page durs (c'est-à-dire des défauts de page lorsque la page de mémoire nécessaire pour répondre à la requête doit être lue sur le disque), de sorte que la surveillance des défauts de page durs et mous n'est pas optimale.

Surveillez le compteur "Pages Input / sec" dans l'objet "Memory" à l'aide de perfmon pour avoir une idée du nombre d'erreurs de pages dures qui se produisent.

0voto

Maximus Minimus Points 8917

En règle générale, si votre charge commit est supérieure à votre mémoire physique, vous êtes certainement en train de paginer. quelque chose Mais si votre application utilise un seul tampon de données fixe qui est toujours en cours d'utilisation, il ne sera généralement pas paginé du tout. Il peut y avoir un délai au démarrage pendant que d'autres mémoires sont pagées pour faire de la place.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X