ID Artikel: 188831 - Kajian Terakhir: 16 September 2011 - Revisi: 2.0

Cara menggunakan fitur khusus kolam untuk mengisolasi renang kerusakan

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

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

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

Sumber renang kerusakan sekarang dapat diidentifikasi pada instruksi yang menyebabkan kerusakan kolam renang. Utilitas manajemen memori baru Itulah bernama khusus kolam disertakan dengan Windows NT 4.0 paket layanan 4 (SP4), Windows 2000, Windows XP, Windows Server 2003, Windows Vista, dan Windows Server 2008. Utilitas renang khusus mengidentifikasi komponen kernel-mode yang merusak data kolam renang dengan menulis ke memori di luar daerah yang dialokasikan.

Catatan Memori tuning tidak berlaku untuk Windows Vista dan Windows Server 2008. Namun fitur renang khusus berlaku untuk produk ini.

INFORMASI LEBIH LANJUT

Penting Bagian ini, metode, atau tugas yang memuat langkah-langkah yang memberitahu Anda bagaimana memodifikasi registri. Namun, masalah yang serius dapat terjadi apabila Anda salah memodifikasi registri. Oleh karena itu, pastikan Anda mengikuti langkah-langkah tersebut dengan seksama. Untuk perlindungan tambahan, buat cadangan registri sebelum Anda memodifikasi. Kemudian, Anda dapat memulihkan registri apabila terjadi masalah. Untuk informasi selengkapnya tentang cara membuat cadangan dan memulihkan registri, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
322756  (http://support.microsoft.com/kb/322756/ ) Cara membuat cadangan dan memulihkan registri di Windows


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

Deteksi overrun adalah mungkin yang paling sering digunakan. Untuk overrun deteksi, diminta alokasi diposisikan pada akhir halaman pertama oleh cadangan permintaan ukuran dari akhir halaman. Ukuran alokasi bulat hingga 8-byte batas. Pola kunci, ukuran, dan kolam renang tag informasi ditulis ke header di delapan byte pertama dari halaman pertama. Pola juga disebarkan di seluruh halaman. Karena alokasi diposisikan pada terdekat 8-byte batas, mungkin sebanyak tujuh slop byte berikut Alokasi. Pola juga ditulis untuk slop byte berikut Alokasi.

Halaman kedua adalah halaman penjaga. Halaman penjaga terdiri dari khusus entri tabel halaman (PTE) yang ditandai dengan tidak ada 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 menghasilkan Stop 0x0000000A atau galat Stop 0x0000001E. Hal ini memungkinkan seseorang debugging sistem untuk menemukan tepat instruksi yang menyebabkan kerusakan kolam renang.

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

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

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


Nama nilai: PoolTag
Jenis Data: REG_DWORD
Data: Tag kolam renang topeng | Alokasi ukuran topeng | 0
Topeng tag kolam renang adalah ID tag kolam renang yang berisi masking karakter kolam yang Anda inginkan untuk menempatkan di kolam renang khusus. Topeng ini harus ditentukan dalam heksadesimal dalam urutan terbalik. Topeng ini juga berisi "?" untuk menutupi satu karakter atau "*" untuk topeng dari sini ke ujung tag. Sebagai contoh, untuk memantau semua renang dengan tag kolam renang yang dimulai dengan "Nt", menentukan "2A744E" (tanpa tanda kutip), yang mewakili "* tN".

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

Ketika nol (0x0) yang ditentukan, utilitas renang khusus tidak dimulai. Selain itu, utilitas khusus renang tidak dimulai jika nilai registri PoolTag tidak didefinisikan dalam registri.
Nama nilai: PoolTagOverruns
Jenis Data: REG_DWORD
Data: 1 | 0
1 menunjukkan bahwa kolam renang alokasi overruns terdeteksi untuk Tag ditentukan. Alokasi terletak pada akhir 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 menciptakan kunci registri dua akan menjadi sebagai berikut:
HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Manager\ Manajemen memori


Nama nilai: PoolTag
Jenis Data: REG_DWORD
Data: 0x2A

Nama nilai: PoolTagOverruns
Jenis Data: REG_DWORD
Data: 1


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


Nama nilai: EnableKStackPool
Jenis Data: REG_DWORD
Data: 0

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


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

Memori dump berkas analisis masalah dapat 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 khusus yang dialokasikan dari analisis. Dalam kasus ini, masalah ini terjadi karena nilai-nilai PTE renang khusus berikut sama:
  • MiSpecialPoolFirstPte
  • MiSpecialPoolLastPte
Masalah ini juga dapat terjadi apabila 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 kolam yang diperbolehkan. Sebagai contoh, menetapkan entri registri PagedPoolSize nilai 256 MB. Jika Anda ingin mengkonfigurasi nilai yang lebih besar, gunakan utilitas Monitor kinerja untuk menentukan persyaratan komputer untuk paged renang 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
Jenis Data: REG_DWORD
Data: 10000000
Base: heksadesimal

Untuk Windows Server 2003 dengan Paket Layanan 1 (SP1) diinstal:

Nama nilai: PagedPoolSize
Jenis Data: REG_DWORD
Data: FFFFFFFF
Base: heksadesimal

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

Jika Setelah Anda mengaktifkan fitur khusus renang, komputer berhenti merespons (menggantung), dan Anda menerima pesan kesalahan di layar biru selama Persiapan, restart komputer dengan menggunakan opsi konfigurasi yang terakhir diketahui baik. Mengaktifkan fitur khusus renang tidak ditulis terakhir dikenal baik Konfigurasi entri di registri sampai setelah logon yang sukses.

Berlaku bagi:
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows XP Professional
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Server
  • Windows Vista Enterprise
  • Windows Vista Home Premium
  • Windows Vista Ultimate
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Datacenter
Kata kunci: 
kbenv kbhowto kbqfe kbmt KB188831 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:188831  (http://support.microsoft.com/kb/188831/en-us/ )