SQL Server tidak menggunakan semua inti / utas CPU

15

Setelah memutakhirkan perangkat keras SQL Server kami, kami perhatikan di Windows Task Manager bahwa turunan SQL hanya menggunakan setengah dari utas yang tersedia untuknya:

Pengelola tugas.

Server memiliki perangkat keras dan perangkat lunak berikut:

  • Windows 2008 R2 Enterprise 64bit SP1
  • Intel Xeon E7-4870 - 4 prosesor (40 inti, 80 utas)
  • Microsoft SQL Server 2012 Enterprise Edition (64-bit)

Menjalankan select cpu_count from sys.dm_os_sys_infopengembalian 40.

OS melihat semua 80 utas.

Mengapa hanya setengah daya pemrosesan server yang digunakan?

Kami memiliki perangkat keras dan perangkat lunak yang sama di dua server dan keduanya menunjukkan perilaku yang sama.

Jon Seigel
sumber

Jawaban:

23

Dalam log galat SQL Server, itu harus memberi tahu Anda mengapa. Saya menemukan ini di sistem pelanggan (benar-benar hanya menempel pesan untuk jus Google):

SQL Server mendeteksi 4 soket dengan 8 core per soket dan 16 prosesor logis per soket, 64 prosesor logis total; menggunakan 40 prosesor logis berdasarkan lisensi SQL Server. Ini adalah pesan informasi; tidak diperlukan tindakan pengguna.

Saya mendapat penjelasan yang mungkin dari sini :

Untuk pelanggan dengan Jaminan Perangkat Lunak pada lisensi SQL EE Server yang ada (atau akses ke mereka di bawah Perjanjian Perusahaan saat ini selama jangka waktu) versi Enterprise Edition dibuat untuk memungkinkan mereka meningkatkan ke SQL Server 2012. Versi ini memiliki batasan teknis yang membatasi instance untuk hanya menggunakan 20 inti prosesor (40 utas CPU dengan Hyperthreading).

Ringkasan: di log kesalahan, edisi akan dilaporkan sebagai Enterprise Editionatau Enterprise Edition: Core-based Licensing. Jika dikatakan yang pertama, seperti dalam kasus sistem pelanggan yang disebutkan di atas, Anda perlu mendapatkan lisensi berbasis inti untuk menggunakan semua core yang tersedia.

Jika bukan itu masalahnya dan Anda sudah memiliki lisensi untuk semua inti, periksa pengaturan topeng afinitas Anda, terutama jika sudah diatur, dan perangkat keras yang mendasarinya ditingkatkan.

Jon Seigel
sumber
Kami memiliki masalah serupa. Kami membangun VM dengan 1 soket dan 32 core. Sql hanya akan mengenali 8 CPU. Kami beralih ke 8 soket dan 4 core masalah hilang. Kami menjalankan editon perusahaan sql 2008r2 di windows 2008r2.
user3799984
Saya memiliki masalah yang sama dengan versi standar. Kami memiliki 8 soket yang digunakan dan tidak akan menggunakan sisanya. Yang harus kami lakukan adalah mengubah VM dan mengkonfigurasi 4 soket 2 core.
Nicolas de Fontenay
7

Lihat di ERRORLOG sejak SQL Server pertama kali dinyalakan. Ini akan memberi tahu Anda berapa banyak CPU yang digunakan, dan mungkin mengapa. Jika Anda dapat memposting file ERRORLOG di suatu tempat yang akan sangat membantu dalam melihat apa yang terjadi.

mrdenny
sumber
3

Saya melihat ini di pos lain oleh Ajmer Dhariwal:

Bahkan jika Anda memiliki edisi Enterprise, jika model lisensi yang diterapkan berbasis Server + Client Access License (CAL) maka server dibatasi hingga 20 core fisik per instance

Dom
sumber