Ukuran file halaman yang disarankan untuk SQL 2008R2 pada Windows 2008R2

25

Artikel Microsoft ini - Cara menentukan ukuran file halaman yang sesuai untuk versi 64-bit Windows Server 2008 dan atau Windows 2008 R2 memberikan panduan untuk menghitung ukuran file halaman untuk 64 bit Windows 2008 dan Windows 2008R2. Ini tidak diragukan lagi berfungsi dengan baik untuk server tujuan umum. Saya bertanya-tanya apa pedoman untuk SQL Server 2008R2 yang berjalan pada Windows 2008 / R2 64 bit?

Saya kira kita hanya ingin sedikit dalam data memori untuk memukul halaman file, jika tidak, SQL bisa memukul disk dua kali untuk data. Apakah SQL Server bahkan memungkinkan data dalam memori mencapai file halaman? Saya telah berburu melalui SQL Server 2008 R2 Books Online untuk panduan tetapi belum menemukan penyebutan penggunaan file halaman.

Berikut skenario penggunaan potensial: Diberikan server fisik dengan 64GB RAM, apakah pagefile diperlukan untuk seluruh 64GB RAM? Haruskah kita bersiap untuk pagefile 96GB? Tampaknya agak berlebihan untuk satu file. Saya tahu kebijaksanaan konvensional adalah bahwa pasangan Windows melakukan pagefile ke memori dalam upaya untuk mempermudah pertukaran aplikasi pada RAM, tetapi apakah itu benar? Akankah pagefile kurang dari 64GB menghambat kinerja di sini?

Kev
sumber

Jawaban:

15

Tidak ada pengaturan khusus untuk SQL Server yang hanya menggunakan memori fisik secara normal

Lakukan saja apa yang MS katakan untuk Windows dan hanya itu

Oh, dan belilah lebih banyak RAM saat kita menjadi subjek ... ;-)

gbn
sumber
6

Lihatlah ke dalam lock pages in memory. Dengan cara ini, Anda dapat memberikan preferensi untuk akun layanan SQL Anda untuk menggunakan RAM yang tersedia daripada paging ke disk. Untuk membaca lebih lanjut tentang halaman kunci dalam memori, periksa tautan ini . Cuplikan berikut:

Opsi Kunci kebijakan Windows di Memori dinonaktifkan secara default. Hak istimewa ini harus diaktifkan untuk mengonfigurasi Address Windowing Extensions (AWE). Kebijakan ini menentukan akun mana yang dapat menggunakan proses untuk menyimpan data dalam memori fisik, mencegah sistem dari paging data ke memori virtual pada disk. Pada sistem operasi 32-bit, mengatur hak istimewa ini ketika tidak menggunakan AWE dapat secara signifikan mengganggu kinerja sistem. Mengunci halaman dalam memori tidak diperlukan pada sistem operasi 64-bit.

Silakan uji fitur ini sebelum digunakan pada sistem Anda.

StanleyJohns
sumber
4
'Kunci halaman dalam memori' mungkin bisa lebih baik digambarkan sebagai pengaman, untuk mencegah memori SQL keluar dari OS. support.microsoft.com/kb/918483
Mark Storey-Smith
4

Ya, untuk RAM 64GB Anda membutuhkan setidaknya file swap 64GB (disarankan 96GB). Bukan karena potensi swapping, tetapi karena desain Windows Memory Manager. Saya telah menulis tentang masalah ini sebelumnya dalam ukuran pagefile sistem pada mesin dengan RAM besar :

Ketika suatu proses meminta MEM_COMMITmemori melalui VirtualAlloc/ VirtualAllocEx, ukuran yang diminta perlu dicadangkan di pagefile. Ini benar dalam sistem Win NT pertama, dan masih benar hari ini lihat Mengelola Memori Virtual di Win32 :

Ketika memori dilakukan, halaman fisik memori dialokasikan dan ruang disediakan dalam file halaman.

Alternatifnya adalah sesuatu seperti oom_killer .

Jadi ikuti rekomendasi, kadang-kadang hal-hal sedikit lebih kompleks daripada yang terlihat. Dan saya bahkan belum menyentuh kerumitan yang dibawa oleh AWE dan keistimewaan halaman kunci ...

Remus Rusanu
sumber
Sangat menarik ... Bagaimana cara kerjanya ketika Anda mengatur file swap lebih kecil dari RAM di mesin? Jika memang kita perlu memesan ruang di pagefile untuk setiap alokasi memori, kita tidak akan dapat menggunakan lebih dari nilai memori ukuran file halaman? Saya tidak yakin ini cara kerjanya dalam praktik.
shlomoid
1
Begitulah cara kerjanya dalam praktik. Wilayah VA yang berkomitmen harus didukung oleh reservasi pertukaran nyata. Sebuah dilindungi wilayah VA tidak harus, tapi SQL Server hampir tidak pernah meminta pemesanan non-berkomitmen.
Remus Rusanu
2
Saya pikir ini tidak benar. Pemahaman saya dari berbagai sumber seperti buku-buku Windows Internals adalah bahwa ruang alamat virtual yang berkomitmen harus didukung oleh sesuatu yang fisik , baik file halaman atau RAM. Jadi, jika Anda mencoba untuk melakukan memori virtual> ([Memori fisik Windows melihat] + [ukuran file Paging]), Anda akan mendapatkan pesan kesalahan "Sistem Anda rendah pada memori virtual" yang terkenal. Mark Russinovich berbicara tentang hal ini di bagian yang disebut "memori yang dilakukan" di sini .
James L
5
Saya pikir Anda dapat mengkonfirmasi kepada diri sendiri bahwa wilayah VA yang berkomitmen tidak harus didukung oleh reservasi swap hanya dengan mem-boot sistem tanpa file paging dan mengonfirmasi bahwa Windows mulai, & oleh karena itu harus ada lebih dari 0 byte VAS yang dilakukan.
James L
Posting ini salah - sangat mungkin untuk dijalankan tanpa file halaman jika Anda memiliki lebih banyak memori daripada persyaratan max commit Anda. Itu berarti Anda tidak dapat menulis crash dumps.
Steve365