Sumber Daya Terdedikasi pada VM hosting SQL Server

8

Pemahaman saya adalah bahwa salah satu manfaat besar menggunakan VM adalah Anda dapat berbagi sumber daya antara mesin virtual di host. Jadi Anda dapat memiliki host dengan 120 CPU dan menempatkan 5 VM di atasnya dengan 32 CPU masing-masing. CPU tambahan "dibagi" antara VM dengan host yang menetapkan CPU secara dinamis berdasarkan kebutuhan. Sama untuk memori.

Saya juga mengerti bahwa ini adalah no-no besar untuk VM yang menampung SQL Server tetapi admin VM saya tidak setuju. Adakah yang punya bukti atau dokumentasi dengan satu atau lain cara?

Saya tidak tahu apakah itu penting tetapi kami menggunakan VMWare.

Kenneth Fisher
sumber
2
anehnya, kami baru saja mengalami masalah dengan failover acak pada grup ketersediaan tervirtualisasi. kami kelebihan langganan pada CPU dengan waktu siap ~ 8 detik. pendengar ag kehilangan sewa clusternya dan akan gagal ke simpul HA lainnya. kesulitannya di sini adalah tidak ada tekanan CPU pada tamu, meskipun kesalahan umumnya terkait dengan tekanan CPU berkelanjutan. ini mengarah pada masalah terbesar dengan virtualisasi - mengetahui apa yang terjadi dan memercayai orang lain untuk melakukan hal yang sama.
swasheck
Posting blog yang sangat bagus di VMware CPU Hot Plug vNUMA Efek pada SQL Server oleh Jonathan Kehayias
Kin Shah
btw: Ini biasanya bukan "Sama untuk memori". Dalam kebanyakan kasus, Anda berbagi cpu, tetapi karena jumlah memori tertentu dialokasikan untuk setiap VM, dan memori ini tidak dibagi. Berbagi cpu dengan SQL Server mungkin OK tergantung pada jumlah cpu total untuk semua VM Anda, tetapi berbagi memori dengan SQL Server akan buruk di hampir semua kasus
MTilsted
@MTilsted Maaf atas kebingungannya. Ketika saya mengatakan "Sama untuk memori" saya maksudkan secara khusus bahwa itu coulddibagikan. Ketika saya mengajukan pertanyaan saya menyadari bahwa mungkin sangat berbeda untuk CPU dan memori tetapi keduanya merupakan pilihan.
Kenneth Fisher

Jawaban:

15

Yang Anda tanyakan adalah, "Apakah boleh jika kita melakukan overcommit pada CPU?"

Tidak apa-apa sampai Anda mulai mengalami hambatan kinerja yang terkait dengan konsumsi CPU. Jawaban yang sama juga berlaku dengan komitmen jaringan yang berlebihan - tidak seperti Anda meletakkan 5 kartu Ethernet 10Gb terpisah di host, dan mendedikasikan satu kartu per VM. Virtualisasi adalah tentang komitmen berlebihan, dan berjalan di antara ketersediaan sumber daya dan kebutuhan sumber daya.

Secara umum, Anda tidak ingin terlalu berkomitmen pada memori, karena SQL Server akan secara aktif menggunakan memori apa pun yang Anda sajikan. Daripada membiarkan halaman VMs ke disk host, Anda lebih baik melakukan analisis VM-by-VM untuk mencari tahu VM mana yang bisa hidup dengan memori lebih sedikit, dan kemudian mengkonfigurasi mereka dengan memori lebih sedikit untuk memulai.

Brent Ozar
sumber
Jangan lupa pentingnya disk fisik khusus dan independen; masing-masing untuk Data, Log , dan Tempdb . :)
Chiramisu
13

Masalah yang saya lihat dengan alokasi dinamis beberapa sumber daya adalah bahwa hal itu mengarah pada kinerja yang tidak terduga. Permintaan pelaporan x memiliki 32 CPU yang tersedia kemarin, dan berjalan dalam 4 menit, hari ini hanya memiliki 24 dan butuh waktu lebih lama. Anda juga dapat melihat latensi saat tamu menunggu core lainnya tersedia.

Jonathan Kehayias memberikan beberapa peringatan praktis tentang over-berlangganan CPU dan memori di sini (dan terus terang saya percaya pengalaman dan sarannya lebih dari admin VM biasa, jangan tersinggung kepada mereka, tapi saya curiga ia memiliki banyak pengalaman langsung dengan kombinasi):

Aaron Bertrand
sumber
11

Pemahaman saya adalah bahwa beberapa tingkat komitmen CPU yang berlebihan mungkin baik-baik saja, tetapi itu benar-benar tergantung pada persyaratan beban kerja semua tamu. Lihatlah blog David Klee untuk mendapatkan banyak informasi VM yang bagus. Khususnya http://www.davidklee.net/articles/sql-server-articles/cpu-overcommitment-and-its-impact-on-sql-server-performance-on-vmware/ untuk penjelasan komitmen CPU berlebihan dan dampaknya pada SQL Server.

Komitmen over-memori adalah hewan lain seluruhnya dan secara umum, host VM tidak boleh terlalu berkomitmen pada memori jika menjalankan SQL Server. Sekali lagi saya akan menggunakan David Klee sebagai referensi. http://www.davidklee.net/2013/11/04/lock-pages-in-memory-in-sql-server-on-vmware-why-or-why-not/ di mana ia menjelaskan efek memori -komitmen.

Semoga ini membantu.

cjsommer
sumber