La modification du registre DisablePagingExecutive a-t-elle un effet réel?

9

Sur un certain nombre de machines dans le passé, sur différentes versions de Windows (2000, XP et sans Vista), j'ai activé DisablePagingExecutive pour essayer d'améliorer les performances. Dans chaque cas, et j'ai eu beaucoup de mémoire, et en particulier dans le cas actuel. Cependant, après avoir activé ce réglage du registre et redémarré, j'ai vérifié le gestionnaire de tâches après un certain temps, et je montre toujours une énorme partie du noyau paginé sur le disque, même si j'ai 2 Go de mémoire physique libre.

Quelqu'un a-t-il déjà utilisé ce réglage avec succès? Déjà? Peut-être que j'affiche le mauvais indicateur lorsque je vérifie le gestionnaire de tâches (onglet Performances -> section "Mémoire du noyau"), mais je voudrais empêcher Windows de paginer tout ce qu'il peut sur le disque, en particulier compte tenu de la quantité de mémoire fournie dans ordinateurs de bureau ces jours-ci. Il semble qu'une option "Ne pas paginer sur le disque sauf en cas de pression de mémoire extrême" devrait exister - en existe-t-il une?

SqlRyan
la source

Réponses:

13

Il existe une énorme confusion sur Internet concernant cette fonction. Le paramètre n'affecte qu'une partie du noyau appelée exécutif, puis uniquement les parties paginables. Il y a d'autres parties du noyau qui ne sont pas du tout affectées par ce paramètre.

La pagination du noyau fonctionne de la même manière que toute autre pagination. Le code et les données qui sont fréquemment consultés seront conservés dans la RAM tandis que le reste restera sur le disque - où il appartient. Le système ne supprimera aucune partie du noyau de la RAM à moins qu'il n'ait trouvé une meilleure utilisation. Microsoft a consacré une énorme quantité de recherches et de tests aux systèmes de pagination.

Dans le contexte du noyau, «non paginé» signifie du code et des données qui ne peuvent en aucun cas être paginés. "Paged" signifie code et données qui peuvent être paginés si nécessaire. Il est impossible de déterminer la quantité réellement IS paginée à partir du Gestionnaire des tâches. Une partie du code paginé n'a jamais été lue à partir du disque, car il n'était pas encore nécessaire. L'accès au noyau n'est pas toujours fréquent. Vous ne devez pas vous attendre à ce que les numéros paginés et non paginés soient affectés par le paramètre en question.

Remarque: Lorsque le code est paginé, il n'est normalement pas copié dans le fichier d'échange. Ce n'est pas nécessaire car il peut simplement être rechargé à partir des fichiers d'origine. Cela s'applique à la plupart des codes, pas seulement au kerenl.

Avec une quantité raisonnable de RAM, le paramètre ne fera pratiquement rien. Cela empêche simplement le système de paginer les données qu'il ne souhaitait de toute façon pas paginer.

Larry Miller
la source
4

Je ne sais pas si vous vous en rendez compte, mais les défauts de page sont le mécanisme que Windows utilise pour charger le code exécutable. Ainsi, par exemple, une DLL est mappée sur la mémoire virtuelle, puis les erreurs de page sont utilisées pour effectuer le chargement réel à partir du disque, comme requis. Le fichier d'échange n'est pas impliqué dans cela.

Donc, beaucoup de ce que vous considérez comme «paginé sur le disque» pourrait être des choses qui étaient sur le disque en premier lieu.

Will Dean
la source
Je ne m'en rendais pas compte, et c'est logique, même si je ne pense pas que cela réponde à ma question. Si je désactive la pagination du noyau Windows, pourquoi mon gestionnaire de tâches continue-t-il de me dire que 75% de celui-ci est paginé (400 Mo de noyau au total avec 275 Mo de pagination)? Cela ne répond pas non plus à ma question de savoir pourquoi Windows semble si lourdement page lorsqu'il y a encore plusieurs Go de RAM libres.
SqlRyan
1
Vous lisez "paginé" comme "mémoire inscriptible qui a été paginée", alors que dans le contexte de la mémoire du noyau, "paginé" signifie "pourrait être paginé" et "non paginé" signifie "ne sera jamais paginé" -en dehors'. Ce dernier est important pour la programmation KM lorsque vous avez besoin de mémoire dans des circonstances où le système de pagination ne peut pas fonctionner (gestionnaires d'interruption, par exemple).
Will Dean
Dans le contexte des termes que vous utilisez (je ne suis pas un développeur de noyau, donc je ne sais pas mieux), je m'attendrais à ce que ce changement de registre marque le noyau entier comme "non paginé" (ce qui signifie " ne jamais être paginé "), et ce n'est pas ce qu'il fait. Je voulais juste voir si d'autres avaient les mêmes attentes que moi, ou si j'interprétais mal ce que ce changement était censé faire.
SqlRyan
3

Juste pour ajouter une utilisation supplémentaire de ce paramètre: il est nécessaire en xperfmarchant en pile.

http://blogs.msdn.com/b/pigscanfly/archive/2009/08/06/stack-walking-in-xperf.aspx

Désactiver le responsable de la pagination

Pour que le traçage fonctionne sous Windows 64 bits, vous devez définir la clé de registre DisablePagingExecutive. Cela indique au système d'exploitation de ne pas paginer les pilotes en mode noyau et le code système sur le disque, ce qui est une condition préalable pour obtenir des piles d'appels 64 bits à l'aide de xperf, car la marche de la pile 64 bits dépend des métadonnées dans les images exécutables, et dans certaines situations, la Le code de marche de la pile xperf n'est pas autorisé à toucher les pages paginées.

Une information supplémentaire sur le paramètre. Cette citation peut être trouvée sur Internet, je ne connais pas sa source principale.

DisablePagingExecutive s'applique uniquement à ntoskrnl.exe. Il ne s'applique pas à win32k.sys (beaucoup plus grand que ntoskrnl.exe!), Aux parties paginables des autres pilotes, au pool paginé et bien sûr au cache du système de fichiers. Tous vivent dans l'espace d'adressage du noyau et sont paginés sur le disque. Sur les systèmes à faible mémoire, cela peut forcer le code d'application à être paginé inutilement et réduire les performances. Si vous avez plus qu'assez de RAM pour votre charge de travail, oui, cela ne fera pas de mal, mais encore une fois, si vous avez plus qu'assez de RAM pour votre charge de travail, le système ne pagine pas beaucoup de ce genre de toute façon. Ce paramètre est utile lors du débogage des pilotes et généralement recommandé pour une utilisation uniquement sur les serveurs exécutant un ensemble limité d'applications bien connues

Donc, on peut conclure qu'en plus de l' xperfutilisation, son avantage est obscur: il limite essentiellement certaines choses "presque aléatoires" de la pagination et de la réflexion - par conséquent, cela fait que quelque chose d'autre est paginé plus souvent à la place.

Roland Pihlakas
la source
2

Le tweak DisablePagingExecutive n'arrête pas la pagination, son but était d'empêcher le "Executive" (c'est-à-dire le noyau lui-même) d'être paginé et de provoquer ainsi un ralentissement du système entier, pas seulement des applications paginées individuelles.

Vous pouvez essayer de désactiver complètement la pagination en supprimant tous les fichiers d'échange dans les Propriétés système (ou dans HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ PagingFiles). Cela fonctionne bien pour moi, mais les choses deviennent plutôt désagréables lorsque vous manquez de mémoire physique, et vous devez avoir un fichier d'échange pour déboguer les erreurs STOP.

Froosh
la source
Je fonctionne sans fichier d'échange depuis quelques jours et cela fonctionne plutôt bien, Windows 7 propose en fait des suggestions d'applications gourmandes en mémoire à tuer lorsqu'il commence à manquer.
Froosh
1

Les composants de niveau système, tels que les pilotes de noyau, de direction et de périphérique, peuvent allouer de la mémoire à partir de deux pools. Il s'agit du pool paginé, qui peut être paginé à la discrétion des gestionnaires de mémoire, et du pool non paginé qui doit rester en RAM à tout moment. Le développeur décide en fonction de ses besoins quel pool sera utilisé. Il est recommandé d'utiliser le pool paginé dans la mesure du possible car cela permet au gestionnaire de mémoire système une flexibilité maximale. Les deux pools sont de taille limitée et dans les systèmes 32 bits en particulier, ces limites peuvent poser problème. La piscine paginée est considérablement plus grande. Si le pool non paginé était utilisé de manière excessive, la taille limite pourrait être atteinte, ce qui entraînerait de graves problèmes système.

Les éléments étiquetés dans le Gestionnaire des tâches comme mémoire du noyau «paginée» et «non paginée» affichent les allocations de ces pools. Cela n'a absolument rien à voir avec l'état dynamique de la quantité de mémoire réellement paginée. L'entrée de registre "DisablePagingExceutive" influence l'état de pagination dynamique d'une partie du pool paginé, ses effets ne seront donc jamais affichés par ask Manager.

Larry Miller
la source
1

Si vous modifiez un paramètre système, vous devez comprendre ces informations ou leurs équivalents afin de savoir quel type de résultats une modification du paramètre système apporte, où les résultats peuvent être positifs, neutres ou négatifs par rapport à la performance du système.

Ce que vous pouvez faire est d'ouvrir "Resource Monitor" dans Windows. Accédez à l'outil de recherche et recherchez «Moniteur de ressources». Ou ouvrez l'outil de commande d'exécution (je suppose que tous ceux qui lisent ceci savent comment le faire) et tapez «resmon».

Utilisez cet outil pour surveiller toutes sortes d'activités du système, telles que l'activité du processeur, l'activité de la mémoire et l'activité du disque dur. Si vous n'êtes pas déjà familier avec les informations contenues dans le `` Moniteur de ressources '', étudiez-les un peu, car vous devrez vous familiariser avec lui pour exécuter des tests qui vous aideront à mesurer le type de résultats d'une modification d'un paramètre système.

L'idée de base est que vous exécutez «Moniteur de ressources» lorsque votre système informatique exécute certaines tâches afin de mesurer les résultats liés aux performances qu'apporte une modification des paramètres système. Exécutez des tâches qui utilisent les ressources système dont vous essayez de tester les performances. Par exemple, certaines tâches peuvent tester le processeur, la mémoire RAM, le ou les disques durs, le processeur graphique ou un périphérique réseau. Utilisez google pour découvrir comment tester les performances des ressources informatiques que vous souhaitez tester.

Si, par exemple, vous apportez une modification au paramètre système, `` Désactiver Paging Executive '', vous pouvez exécuter un test sur les ressources informatiques et utiliser `` Moniteur de ressources '' pour mesurer les types de résultats apportés par la modification (le cas échéant).

Effectuez ensuite une comparaison entre les données et voyez s'il existe des différences significatives entre l'ancien paramètre système et le nouveau paramètre système que vous avez modifié.

Vous n'aurez peut-être pas toujours besoin d'utiliser «Moniteur de ressources», car certaines méthodes de test des performances des ressources système sont fournies avec un logiciel qui surveille et mesure pour vous.

Le fait est que vous souhaitez suivre une méthode systématique pour voir si un changement affecte la performance de votre système par rapport aux tâches que vous demandez à l'ordinateur d'exécuter.

Modifiez un paramètre. Testez-le pour un changement de performance. Déterminez les résultats du test. Sur la base des résultats, décidez si vous allez modifier le paramètre à ce qu'il était, ou à quelque chose d'autre, ou laissez-le où il est. 1) Réglage 2) Test 3) Résultats 4) Décision.

Vous pouvez utiliser cette méthode de déduction logique pour toutes sortes d'ajustements des paramètres du système, y compris «Désactiver le Paging Executive».

Bon ajustement.

WestdoX
la source
1

Il y a beaucoup! De très bonnes informations sur ce post, j'ai été impressionné. J'ai remarqué que DisablePagingExecutive avec une valeur de un est mieux fait sur le premier site du bureau après une installation propre de n'importe quelle version de Windows de XP à Windows 10, 32 bits à 64 bits (tant qu'il y a suffisamment de RAM sur votre carte mère) mais une fois la valeur 1 appliquée à DisablePagingExecutive, la même valeur doit également être appliquée à LargeSystemCache.

De plus, comme mentionné ci-dessus, ces ajustements sont généralement effectués dans les serveurs Windows, mais également pratiques lors du débogage.

Ces modifications sont utilisées à vos risques et périls, alors prenez en considération ce que tout le monde a mentionné ci-dessus, cela ne fait pas de mal de google chacune des clés mentionnées qui étaient DisablePagingExecutive et 1 je ne me souviens pas avoir vu ... LargeSystemCache.

Assurez-vous d'avoir suffisamment de bélier. Un nombre insuffisant de RAM cause des problèmes sur votre système que vous ne voulez pas traiter et qui provoqueraient probablement un écran bleu (bsod) sur votre système.

4 Go de RAM seront le minimum auquel j'appliquerais ces ajustements ci-dessus et c'est si vous n'utilisez pas d'applications intenses qui utilisent beaucoup de RAM ou si vous faites des jeux, si vous faites de son mieux pour les laisser seuls.

(XP: au moins 256 Mo de RAM minimum)

Avant de faire quoi que ce soit dans le registre, c'est une bonne idée d'installer le registre sur un périphérique de stockage plutôt que le disque dur du système d'exploitation ou un stockage séparé de tout type afin que vous puissiez restaurer le registre si vous en avez besoin.

L'information au-dessus de moi traverse vraiment les T et les points les i.

                    Make sure to backup your system.
Smirk24
la source