Bagaimana menggunakan kolam renang khusus untuk mengisolasi renang kerusakan

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 188831 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Ringkasan

Kolam Renang kerusakan dapat menyebabkan banyak yang paling mengelak masalah dengan Windows NT. renang kerusakan disebabkan ketika kernel-mode komponen menulis kehabisan memori di luar area kolam renang yang dialokasikan. Dengan menulis ke kehabisan memori melampaui batas wilayah dialokasikan, sangat mungkin bahwa lain daerah kehabisan memori dialokasikan, mungkin dimiliki oleh komponen lain, ditimpa. Kerusakan ini dapat menyebabkan masalah seperti layar biru di sama sekali tidak berhubungan daerah kode. Komponen kernel-mode membaca luar area dialokasikan dapat juga menyebabkan masalah.

Apakah itu disebabkan oleh peralatan asli Produsen (OEM) driver atau masalah di Windows, Kolam kerusakan masalah yang beberapa yang paling sulit untuk mengidentifikasi. Biasanya, semua yang dapat dilihat di kecelakaan dump analisis adalah gejala dari masalah yang sebenarnya, seperti data area menjadi rusak dan menyebabkan masalah di blok kode sama sekali tidak terkait. Sampai sekarang, itu hampir mustahil untuk menemukan segmen kode bahwa kerusakan kehabisan memori.

Sumber renang kerusakan sekarang dapat diidentifikasi pada arahan menyebabkan kerusakan Outdoor. Utilitas manajemen kehabisan memori baru yang bernama kolam khusus disertakan dengan Windows NT 4.0 Service Pack 4 (SP4), Windows 2000, Windows XP, Windows Server 2003, Windows Vista, dan Windows Server 2008. Utilitas kolam khusus mengidentifikasi komponen kernel-mode yang merusak data outdoor dengan menulis ke kehabisan memori di luar area dialokasikan.

Catatan kehabisan memori tuning tidak sahih untuk Windows Vista dan Windows Server 2008. Namun fitur kolam khusus berlaku untuk produk ini.

Informasi lebih lanjut

Penting Bagian ini, metode, atau tugas yang memuat langkah-langkah yang memberitahu Anda bagaimana untuk mengubah registri. Namun, masalah serius mungkin muncul saat Anda salah memodifikasi registri. Oleh karena itu, pastikan Anda mengikuti langkah-langkah ini dengan hati-hati. Untuk perlindungan tambahan, buat cadangan registri sebelum Anda memodifikasinya. Kemudian, Anda dapat memulihkan registri jika terjadi masalah. Untuk informasi lebih lanjut tentang cara membuat cadangan dan memulihkan registri, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
322756 Cara membuat cadangan dan memulihkan registri pada Windows


Utilitas kolam renang khusus mengalokasikan dua halaman kehabisan memori virtual untuk setiap alokasi outdoor yang diminta melalui ExAllocatePoolWithTag yang sesuai dengan kriteria berikut:
  • Permintaan alokasi harus untuk ukuran yang lebih kecil daripada alokasi maksimum yang akan muat di halaman Outdoor.
  • Permintaan harus sesuai spesifikasi PoolTag di registri.
Untuk outdoor overrun deteksi, halaman pertama yang digunakan untuk berisi alokasi pada akhir halaman. Halaman kedua adalah halaman penjaga. Untuk renang underrun deteksi, halaman pertama adalah halaman penjaga. Diikuti oleh Halaman yang berisi alokasi pada awal halaman.

Deteksi Overrun adalah mungkin yang paling digunakan. Untuk deteksi overrun, diminta alokasi terletak di ujung halaman pertama dengan back up permintaan ukuran dari akhir halaman. Ukuran alokasi dibulatkan hingga 8-byte batas. bukti kunci pola, ukuran, dan kolam renang tag informasi ditulis ke header di byte delapan pertama dari halaman pertama. Pola juga disebarkan seluruh halaman. Karena alokasi terletak di terdekat batas 8-byte, mungkin ada sebanyak tujuh slop byte berikut alokasi. Pola juga ditulis untuk slop byte berikut alokasi.

Halaman kedua adalah halaman penjaga. Halaman penjaga terdiri dari sebuah entry Daftar Tabel halaman khusus (PTE) yang ditandai dengan no-akses perlindungan. Dengan menandai halaman kedua dengan no-akses perlindungan, kode mencoba untuk membaca atau menulis beyond akhir pertama halaman segera menyebabkan pelanggaran akses yang mengakibatkan Stop 0x0000000A atau galat Stop 0x0000001E. Hal ini memungkinkan seseorang debugging sistem untuk menemukan instruksi tepat yang menyebabkan kerusakan Outdoor.

Sebagai cek cadangan untuk menangkap pelanggar yang menulis akhir alokasi tetapi tidak melampaui akhir halaman, slop byte pada akhir alokasi divalidasi selama permintaan kolam renang gratis (ExFreePoolWithTag). Byte slop dibandingkan dengan pola dalam alokasi header untuk menentukan apakah sesuatu ditimpa di daerah byte slop. Jika cek verifikasi tidak bekerja, galat Stop 0x00000001A terjadi.

Cek ini tidak selalu menemukan blok tepat kode yang menyebabkan kerusakan Outdoor. Namun, hal itu mungkin membantu mengidentifikasi komponen yang menyebabkan kerusakan.

Untuk mengaktifkan utilitas kolam khusus, tambahkan bukti kunci dan nilai-nilai registri berikut:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Nama nilai: PoolTag
tipe data: REG_DWORD
Data: Tag kolam renang masker | Alokasi ukuran masker | 0
Kolam Renang tag topeng adalah ID tag outdoor yang berisi masking karakter kolam di mana Anda ingin menempatkan di kolam renang khusus. Topeng ini harus ditentukan dalam heksadesimal dalam urutan menurun terbalik. Topeng ini juga berisi "?" untuk menutupi satu karakter atau "*" untuk menutupi dari sini ke akhir tag. Misalnya, untuk memantau semua kolam dengan tag outdoor yang dimulai dengan "Perjanjian baru", menentukan "2A744E" (tanpa tanda kutip), yang mewakili "* tN".

The Daftar Tabel berikut mencantumkan lebih banyak contoh.
   Pool to monitor   Character representation   Pool tag mask
   ----------------------------------------------------------               
   All pools         "*"                        0x2A
   N??s              "s??N"                     0x733F3F4E
				
Alokasi ukuran masker spesifikasi tempat semua alokasi Kolam Renang ukuran tertentu ke dalam kolam khusus. Ini juga ditentukan dalam heksadesimal. Sebagai contoh, jika semua alokasi 32 byte diposisikan di kolam khusus, menetapkan 0x20.

Bila nol (0x0) adalah ditentukan, utilitas kolam khusus tidak diinisialisasi. Selain itu, utilitas kolam khusus tidak diinisialisasi jika nilai registri PoolTag tidak didefinisikan dalam registri.
Nama nilai: PoolTagOverruns
tipe data: REG_DWORD
Data: 1 | 0
1 menunjukkan bahwa kolam renang alokasi overruns terdeteksi untuk Tag yang ditentukan. Alokasi ini terletak di ujung halaman dan penjaga Halaman berikut.

0 menunjukkan bahwa kolam renang alokasi underruns terdeteksi untuk Tag. Alokasi terletak di awal halaman, dan halaman penjaga datang sebelum halaman yang berisi alokasi.

Contoh penggunaan umum untuk membuat ini bukti kunci registri dua akan menjadi sebagai berikut:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management


Nama nilai: PoolTag
tipe data: REG_DWORD
Data: 0x2A

Nama nilai: PoolTagOverruns
tipe data: REG_DWORD
Data: 1


Catatan Untuk Windows NT 4.0 Server Terminal, Anda harus menonaktifkan KStackPool Bila Anda menggunakan kolam khusus. Untuk melakukannya, tambahkan nilai registri berikut:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Nama nilai: EnableKStackPool
tipe data: REG_DWORD
Data: 0

1 - KStack renang selalu diaktifkan
2 - KStack renang diaktifkan untuk komputer yang memiliki 256 MB atau lebih kehabisan memori (default)
Jika Anda tidak membuat perubahan ini pada Terminal Server komputer yang memiliki 256 MB atau lebih banyak kehabisan memori, Anda mungkin menerima "berhenti 0x00000078 (PHASE0_EXCEPTION) "pesan kesalahan.


Catatan Kolam renang khusus mungkin tidak bekerja pada Windows Server 2003 jika ada tidak cukup halaman khusus Daftar Tabel entri (PTEs). Masalah ini biasanya terjadi pada single-user terminal server yang mengandung lebih dari 1 GB RAM dan yang memiliki nilai tuning manajemen kehabisan memori komputer diatur ke nilai asali. Masalah ini tidak terjadi dalam versi 64-bit Windows Server 2003.

kehabisan memori dump file analisis masalah mungkin berisi informasi berikut:
*** Virtual Memory Usage *** 
Physical Memory: 1015660 ( 4062640 Kb) 
Page File: \??\C:\Pagefile1\pagefile.sys 
Current: 4193280Kb Free Space: 4180856Kb 
Minimum: 4193280Kb Maximum: 4193280Kb 
Available Pages: 552680 ( 2210720 Kb) 
ResAvail Pages: 932179 ( 3728716 Kb) 
Locked IO Pages: 347 ( 1388 Kb) 
Free System PTEs: 187166 ( 748664 Kb) 
Free NP PTEs: 32765 ( 131060 Kb) 
Free Special NP: 117228 ( 468912 Kb) 
Modified Pages: 106 ( 424 Kb) 
Modified PF Pages: 98 ( 392 Kb) 
NonPagedPool Usage: 6599 ( 26396 Kb) 
NonPagedPool Max: 65536 ( 262144 Kb) 
PagedPool 0 Usage: 10697 ( 42788 Kb) 
PagedPool 1 Usage: 1240 ( 4960 Kb) 
PagedPool 2 Usage: 1239 ( 4956 Kb) 
PagedPool 3 Usage: 1265 ( 5060 Kb) 
PagedPool 4 Usage: 1231 ( 4924 Kb) 
PagedPool Usage: 15672 ( 62688 Kb) 
PagedPool Maximum: 90112 ( 360448 Kb) 
Shared Commit: 3866 ( 15464 Kb) 
Special Pool: 511 ( 2044 Kb) <-- very small
Shared Process: 5205 ( 20820 Kb) 
PagedPool Commit: 15672 ( 62688 Kb) 
Driver Commit: 2091 ( 8364 Kb) 
Committed pages: 439832 ( 1759328 Kb) 
Commit limit: 2023823 ( 8095292 Kb)

0: kd> dd nt!MmSpecialPoolRejected l8 
8057afe0 00000000 00000000 00b2e59a 00000000 <-- A DWORD value of 3 causes special pool PTE's shortage.
8057aff0 00000000 00000000 00000000 00000000

8057afd8 nt!MiSpecialPoolFirstPte = 0xc022af78
8057afd4 nt!MiSpecialPoolLastPte = 0xc022af78
Anda dapat memverifikasi masalah dengan ukuran kolam renang khusus yang dialokasikan dari analisis. Dalam kasus ini, masalah ini terjadi karena nilai PTE kolam khusus berikut sama:
  • MiSpecialPoolFirstPte
  • MiSpecialPoolLastPte
Masalah ini juga terjadi jika nilai entri registri MmSpecialPoolRejected adalah tiga atau lebih besar.

Untuk mengatasi masalah ini, mengkonfigurasi nilai entri registri PagedPoolSize ke nilai yang lebih kecil daripada ukuran paged outdoor yang diizinkan. Sebagai contoh, menetapkan entri registri PagedPoolSize ke nilai 256 MB. Jika Anda ingin mengkonfigurasi nilai yang lebih besar, gunakan utilitas Monitor kinerja untuk menentukan persyaratan komputer untuk paged Outdoor ukuran yang lebih besar.

Anda dapat menggunakan nilai berikut untuk entri registri PagedPoolSize:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Untuk Windows Server 2003 tanpa paket layanan:

Nama nilai: PagedPoolSize
tipe data: REG_DWORD
Data: 10000000
Base: heksadesimal

Untuk Windows Server 2003 dengan Service Pack 1 (SP1) diinstal:

Nama nilai: PagedPoolSize
tipe data: REG_DWORD
Data: FFFFFFFF
Base: heksadesimal

Catatan Setelah Anda membuat perubahan registri yang dijelaskan di ini Artikel, restart komputer untuk menyebabkan perubahan berlaku.

Jika Setelah Anda mengaktifkan fitur kolam khusus, komputer berhenti merespons (menggantung), dan Anda menerima pesan galat pada layar biru startup, restart komputer dengan menggunakan opsi konfigurasi baik terakhir dikenal. Mengaktifkan fitur kolam khusus tidak ditulis terakhir dikenal baik Konfigurasi entri di registri sampai setelah log masuk yang sukses.

Properti

ID Artikel: 188831 - Kajian Terakhir: 19 April 2013 - Revisi: 2.1
Berlaku bagi:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows XP Professional
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003 Service Pack 2
  • Windows Vista Home Premium
  • Windows Vista Enterprise
  • Windows Vista Ultimate
  • Windows Vista Service Pack 2
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Service Pack 2
  • Windows 7 Home Premium
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Ultimate
  • Windows 7 Service Pack 1
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Service Pack 1
Kata kunci: 
kbenv kbhowto kbqfe kbmt KB188831 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
Klik disini untuk melihat versi Inggris dari artikel ini: 188831

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com