Partager via


Cet article a fait l'objet d'une traduction automatique.

Trace de pile

Quels sont ces PTE système ?

Bob Golding and David Butler

Contenu

Que sont des API système utilisée pour associer ces adresses ?
Arrêter 3F PTE suivi est pas toujours nécessaire
Piles du noyau

PTE système, comme tous les PTE, représente des adresses dans l'espace d'adressage système. Ce qui rend ces entrées de table de page différent est qu'ils sont une ressource système. Il existe seulement ainsi plusieurs par système. Ces « PTE système » est « connecteurs dynamiques » dans le mappage d'espace adresse système qui signifie qu'une plage d'adresses sont réservée dans l'espace d'adressage système et permettent de mapper des pages de la demande et attribuer une adresse à un tampon, ou ils sont utilisés pour les piles de threads système. La plage d'adresses se trouve entre réserve non paginée et de pool paginé. Vous trouverez ci-dessous de mi386.h.

E1000000 | Start of paged system area         |
         |   Kernel mode access only.         |
         |                                    |
         |                                    |
         +------------------------------------+
         |                                    |
         | System PTE area - for mapping      |
         |   kernel thread stacks and MDLs    |
         |   that require system VAs.         |<----- Range reserved for dynamic mapping. 
         |   Kernel mode access only.         |
         |                                    |
         +------------------------------------+
         |                                    |
         | NonPaged System area               |
         |   Kernel mode access only.         |
         |                                    |
         +------------------------------------+
FFBE0000 | Crash Dump Driver area             |
         |   Kernel mode access only.         |
         +------------------------------------+

Ainsi, sa taille étant entre le pool paginé et non paginée, ajuster ces regroupements de mémoire avoir un effet sur la taille de la fenêtre Mise en correspondance. En outre, comme il s'agit partie de l'espace d'adressage, les facteurs qui affectent la taille des pools de mémoire (c'est-à-dire, / 3 GB) affectent la taille de la fenêtre Mise en correspondance.

Que sont des API système utilisée pour associer ces adresses ?

Certaines API mapper ces adresses est MiMapLockedPagesInUserSpace, MiUnmapLockedPagesInUserSpace, MmMapLockedPages et MmUnmapLockedPages. Ces API mapper une mémoire tampon dans la plage d'adresses dynamiques. Ils mappera la mémoire tampon entier, afin de la taille du tampon détermine combien de pages contiguës obtenir utilisé.

Comme vous pouvez le voir, il existe une API unmap pour chaque carte API. C'est important de noter. Mémoires tampon doit être non mappées ; sinon, la fenêtre Mise en correspondance se ferme. En d'autres termes : sans système plus PTE. Les pages plus obtenir mappé le système plus que PTE obtenir utilisé. Comme indiqué précédemment, les piles de système utiliser cette plage. Vidéo effectue également pour mapper les mémoires tampons vidéo. Ainsi, il doit être assez subsiste pour mapper les tampons. Lorsque l'espace pour les tables de pages système obtenir faible, les problèmes de performances a lieu. En outre, un 3F STOP peut se produire, mais ces doivent être rares, comme code NT est plus tolérantes aux conditions de ressources faible.

Arrêter 3F PTE suivi est pas toujours nécessaire

Un manque de PTE système est généralement troubleshot Utilisation TrackPtes pour trouver le consommateur d'un nombre élevé d'entrées des page de table. Cependant, parfois, cela n'est pas utile car TrackPtes n'est pas implémentée par le code sysptes.c lui-même. C'est donc possible de réserver PTE sans suivies. TrackPtes uniquement est implémentée par des appelants de MiReserveSystemPtes.

Piles du noyau

Un consommateur courantes de sysptes n'est pas suivi par TrackPtes est piles du noyau. Heureusement, le Gestionnaire de mémoire offre nous plusieurs global, qui fournissent la vision le sysptes utilisé pour mapper les piles du noyau.

Dans l'exemple ci-dessous, le Gestionnaire de mémoire a créé uniquement sysptes 23,000. Qui est un très petit nombre, mais il n'est pas rare avec / 3 GB. De ces sysptes 17,860 sont utilisés pour mapper les piles du noyau. Analyse des processus et threads n'a détecté une fuite apparente ; architecture d'application du client requis de threads GDI. Après analyse Utilisation de la mémoire l'ordinateur, nous avons pu régler le Gestionnaire de mémoire pour augmenter le système totale PTE et assurez-vous suffisamment d'espace pour les éléments à exécuter.

1: kd> !sysptes 

System PTE Information
  Total System Ptes 23006 

1: kd> dc nt!MmKernelStackPages l 1
80483680  000045c4                             .E..
1: kd> ?45c4
Evaluate expression: 17860 = 000045c4

1: kd> dc MmLargeStacks l 1
8048368c  0000037b
1: kd> dc MmSmallStacks l 1
8048367c  00000385
1: kd> ?37b*f
Evaluate expression: 13365 = 00003435
1: kd> ?385*3
Evaluate expression: 2703 = 00000a8f
1: kd> ?3435+a8f+37b+385
Evaluate expression: 17860 = 000045c4 

trois Golding travaille chez Microsoft depuis 1997. Il est ingénieur au principal de l'équipe services au principal où il prend en charge des clients plus grandes de Microsoft avec leurs problèmes plus importants.

Butler qui travaille chez Microsoft depuis 2000. Il est un ingénieur de l'équipe services au principal où il prend en charge des clients plus grandes de Microsoft avec leurs problèmes plus importants.