Pada server database khusus, berapa banyak memori yang harus dipesan untuk OS?

38

Dengan anggapan Anda memiliki server khusus untuk fungsi-fungsi basis data - berapa banyak memori yang harus Anda pesan untuk sistem operasi?

Saya menyadari ini mungkin akan sedikit berbeda tergantung pada OS tertentu, perangkat lunak database tertentu, dan sebagainya. Tapi, karena memori sangat penting untuk kinerja database, saya ingin database memiliki tingkat memori yang wajar maksimum , tanpa kelaparan OS host.

Begitu

  • apa aturan praktis yang baik untuk memulai?
  • penghitung atau indikator kinerja apa yang harus kita lihat untuk menentukan apakah kita sudah melangkah terlalu jauh dan OS host entah bagaimana kelaparan oleh database?
Jeff Atwood
sumber
apakah kalian pernah mengubah pengaturan ini? Apa yang dikatakan profil Anda kepada Anda?
jcolebrand
@ jcole tidak menambahkan apa pun saat ini; kami biasanya memesan 4 - 6 gb untuk OS yang sedikit lebih konservatif daripada yang saya inginkan
Jeff Atwood

Jawaban:

30

Mengasumsikan Windows dan SQL Server ...

Ada dua aliran pemikiran.

  1. Biarkan 2-4 Gigs untuk Windows (tergantung pada apa yang diinstal selain SQL Server).
  2. Biarkan 10% dari memori Anda yang tersedia bebas. Ketika Anda mendapatkan lebih dari 64 Gigs, ini menjadi sejumlah besar memori gila untuk pergi ke OS, yang mungkin tidak perlu.

Secara pribadi saya berada di grup pertama. Windows biasanya hanya membutuhkan 2-4 gigs, terkadang hingga 6.

mrdenny
sumber
2
Setuju dengan 2 ish gb RAM untuk OS.
jcolebrand
Saya juga setuju. Saya biasanya meninggalkan 2GB untuk OS dan memastikan ruang file halaman yang berdekatan juga. Tentu saja, jarak tempuh Anda dapat bervariasi, dan taruhan terbaik Anda adalah mengonfigurasi pengaturan, memantau kinerja, dan melakukan perubahan yang diperlukan secara hati-hati.
Matt M
2
@mat benar tetapi apa yang khusus untuk dipantau, ketika melihat "apakah saya kelaparan OS kehabisan memori?"
Jeff Atwood
1
@ Jeff Komentar saya tidak setepat seharusnya. Untuk memori, saya biasanya melihat penghitung kinerja berikut: Memori: Halaman / detik dan Memori: Bytes Tersedia. Periksa halaman ini untuk informasi lebih lanjut: sql-server-performance.com/articles/audit/... dan technet.microsoft.com/en-us/library/cc966540.aspx (khusus bagian Memory Kemacetan)
Matt M
6
@Jeff Denny jawaban yang benar, dan untuk counter Perfmon, lihat Memori: Bytes Tersedia. Jika jatuh di bawah, katakanlah, 512MB, Anda dalam bahaya kelaparan OS. Namun, perlu juga diperhatikan cache file pada sistem 64-bit, yang masih muncul sebagai tersedia bahkan ketika itu tidak: blogs.msdn.com/b/ntdebugging/archive/2007/11/27/…
Brent Ozar
16

Dengan asumsi Linux, jika Anda mematikan swap dan kernel terus membunuh proses DB Anda karena kehabisan memori, itu adalah indikator yang baik Anda kelaparan OS untuk memori. Mundur hingga berhenti terjadi. Beberapa ratus MB biasanya banyak.

Dan Grossman
sumber
+1 untuk profil profil profil ~ namun karena itu Jeff askin saya kira itu SQLServer dan Windows pasti;)
jcolebrand
1
Namun, @jcolebrand, juga mengetahui bahwa @jeff Anda akan mengenali bahwa dia tidak mengatakannya, artinya dia sengaja membiarkan ini terbuka untuk semua platform dan database.
xenoterracide
2
Dan, masih tahu itu @ jeff ... mengapa dia tidak bisa belajar berhenti mengkhawatirkan dan mencintai Linux? ;-)
Jürgen A. Erhard
8

Anda dapat memanfaatkan pengalaman Amazon dalam menjalankan ribuan server basis data pelanggan di sini: Di ​​Layanan Database Relasional Amazon, mereka menetapkan kumpulan buffer innodb MySQL menjadi 3/4 dari memori sistem, terlepas dari berapa banyak memori yang ada. Tambahkan hingga beberapa MB per koneksi untuk berbagai buffer permintaan, dan mereka kemungkinan menyisakan 10-20% dari memori ke OS.

Dan Grossman
sumber
5

Anda harus membaca memori Brent Ozar . Dia memiliki beberapa jawaban yang cukup standar tentang mengapa Anda harus mencari memori dan mengapa lebih banyak memori sama dengan kinerja yang lebih baik. Secara umum 4 GB atau 10% dicadangkan untuk OS.

Troy
sumber