Baru-baru ini distrik sekolah kami telah meningkatkan beberapa server dari versi 2005 hingga 2016 dan dari server fisik ke server VM.
Tim infrastruktur kami menyajikan satu server VM untuk instalasi SQL Server dengan satu inti.
Saya mencoba menjelaskan kepada kepala departemen bahwa SQL Server 'benci' berada pada satu inti dan dia ingin melihat 'bukti'. Tidak satu pun dari data yang saya sajikan telah memenuhi kebutuhannya akan bukti dan jadi dia telah meminta beberapa artikel tentang mengapa VM SQL Server tidak akan beroperasi secara efisien pada satu inti.
Artikel apa yang Anda gunakan untuk ini?
Setiap bantuan bagi saya untuk membuat kasus saya akan sangat dihargai!
Jawaban:
Setiap proses non-SQL Server yang mengkonsumsi CPU dapat menyebabkan seluruh SQL Server benar-benar tidak dapat digunakan.
Sebagai contoh, Pembaruan Windows akan menghentikan SQL Server saat sedang membongkar rakitan .Net.
Setiap proses Anti-Virus, bahkan jika itu dikonfigurasi untuk mengecualikan file data dan folder SQL Server dapat menyebabkan SQL Server menjadi tidak responsif saat memindai file dan saat membongkar file definisi virus yang diperbarui.
Jika Anda memiliki perangkat lunak manajemen yang diinstal, seperti IBM Tivoli Server Monitor, dan ia memutuskan untuk menggunakan 100% dari satu inti, Anda mungkin tidak akan dapat melakukan apa pun selain mematikan mesin secara dingin. Jangan tanya kenapa saya membicarakannya.
Saya bisa melanjutkan, tetapi cukup untuk mengatakan, setiap server dengan satu inti hanya meminta masalah dengan kinerja dan pengelolaan. Periksa bahwa, komputer apa pun dengan satu inti harus dianggap tidak dapat digunakan hari ini. Heck, ponsel saya memiliki 8 core.
Sementara Anda melakukannya, yakinkan pria virtualisasi untuk memberikan setiap SQL Server reservasi memori yang wajar yang akan memastikan memori SQL Server tidak keluar dari memori utama host ke disk.
Untuk Server SQL serius yang di-host oleh VMware, Anda harus mengkonfigurasi VMware menurut panduan Architecting SQL Server di VMware Best Practices .
Itu benar-benar bermuara pada satu-core VM hanya dapat menjalankan satu utas pada waktu tertentu. Virtualisasi bukanlah peluru perak untuk situasi satu-inti-per-utas itu.
Poin-poin di atas memperhitungkan bahwa Windows NT (basis kode 1993 yang digunakan untuk semua versi Windows modern) menggunakan multi-tasking preemptive. Preemptive multi-tasking memungkinkan O / S untuk menegakkan multi-tasking dengan memaksa pengalihan konteks pada jadwal reguler. Bahkan dengan preemptive multi-tasking, server dengan satu inti akan tetap menderita dari kinerja yang sangat buruk jika satu tugas memutuskan untuk menggunakan CPU sebanyak mungkin, karena O / S akan memberikan tugas itu sebanyak waktu CPU yang dapat dihemat sementara masih memungkinkan tugas dengan prioritas lebih tinggi untuk dijalankan, memaksa CPU hingga 100%. Jika SQL Server berjalan pada saat CPU mencapai 100%, kuantum CPU SQL Server akan berkurang sehingga menjadi sangat terlihat. Dalam skenario di atas saya dijelaskan, aku tidakkatakanlah, mesin (atau bahkan SQL Server) akan sepenuhnya "berhenti" atau "mati"; itu tidak benar. Namun, mesin mungkin menjadi sangat sibuk sehingga untuk semua maksud dan tujuan mesin menjadi tidak dapat digunakan. Menambahkan inti kedua, walaupun tentu saja bukan obat mujarab, mengurangi kemungkinan bahwa mesin akan menjadi benar-benar tidak responsif. Setiap inti tambahan berarti utas lain dapat berjalan ke CPU 100% tanpa menyebabkan mesin menjadi tidak dapat digunakan.
sumber
Saya harus membuktikan hal yang sama sebelumnya. Apa yang akhirnya sampai pada tim perencanaan kapasitas kami adalah bahwa basis data kami hampir tidak dapat digunakan selama pencadangan.
Sebagai DBA, ketakutan terbesar Anda adalah hilangnya data. Jika Anda tidak dapat dengan percaya diri menjalankan backup tanpa mengambil atau menyebabkan pemadaman, itu masalah besar. Jalankan beberapa tes untuk memastikan kinerja terkena dampak saat cadangan sedang terjadi, lalu jelaskan bahwa dengan lebih dari satu inti masalah harus hilang.
sumber
Untuk memberikan bukti yang meyakinkan bahwa server Anda membutuhkan lebih dari satu CPU, Anda harus memberikan informasi tentang beban kerja dan pertanyaan yang dijalankan di server. Jika hanya memiliki satu basis data kurang dari 100 MB, misalnya, dan semua kueri sangat sederhana dan efisien, mungkin hampir tidak ada untungnya memiliki lebih banyak inti.
Saya akan merekomendasikan Anda mulai mengambil paket permintaan yang paralel dan waktu yang dibutuhkan untuk menyelesaikannya. Ini akan menunjukkan bahwa beban kerja yang berjalan pada sistem akan mendapat manfaat dari memiliki banyak CPU.
Jika sudah diproduksi di lingkungan VM, Anda juga perlu mengambil data kinerja penggunaan CPU. Jika Anda dapat menunjukkan bahwa CPU maksimal pada 100% untuk jangka waktu yang lama, ini juga akan memberikan bukti yang baik bahwa sistem membutuhkan lebih banyak CPU.
sumber
NonParallelPlanReason="EstimatedDOPIsOne"
.Mungkin Anda harus bertanya kepada mereka mengapa mereka bersikeras itu akan menjadi ide yang baik untuk hanya menetapkan satu inti per SQL Server VM.
Kemudian, tergantung pada jawaban mereka, Anda dapat mencoba meyakinkan mereka berdasarkan butir 3.3.2 di tautan ini:
SqlServer-on-vmware-best-pratices
Jika item itu bukan alasan bagi tim infrastruktur untuk menyediakan hanya 1 inti per VM, maka, bisa dibilang, perangkat keras sedang terbuang.
sumber