Bagikan melalui


Batas kapasitas komputasi berdasarkan edisi SQL Server

Berlaku untuk: SQL Server

Artikel ini membahas batas kapasitas komputasi untuk edisi SQL Server dan perbedaannya dalam lingkungan fisik dan virtual dengan prosesor multithreading (SMT) simultan. Pada CPU Intel, SMT disebut Hyper-Threading.

Gambaran Umum

Diagram memperlihatkan pemetaan untuk menghitung batas kapasitas.

Tabel ini menjelaskan notasi dalam diagram sebelumnya:

Nilai Deskripsi
0..1 Nol atau satu
1 Tepat satu
1..* Satu atau lebih
0..* Nol atau lebih
1..2 Satu atau dua

Untuk menguraikan lebih lanjut:

  • Komputer virtual (VM) memiliki satu atau beberapa prosesor virtual.
  • Satu atau beberapa prosesor virtual dialokasikan untuk tepat satu komputer virtual.
  • Nol atau satu prosesor virtual dipetakan ke nol atau lebih prosesor logis. Ketika pemetaan prosesor virtual ke prosesor logis adalah:
    • Satu hingga nol: mewakili prosesor logis yang tidak terikat yang tidak digunakan oleh sistem operasi tamu.
    • Satu ke banyak: mewakili overcommit.
    • Nol hingga banyak: mewakili tidak adanya komputer virtual pada sistem host. Jadi VM tidak menggunakan prosesor logis apa pun.
  • Soket dipetakan ke nol atau lebih inti. Saat pemetaan soket-ke-inti adalah:
    • Satu hingga nol: mewakili soket kosong. Tidak ada chip yang diinstal.
    • Satu ke satu: mewakili chip inti tunggal yang dipasang di soket. Pemetaan ini jarang terjadi akhir-akhir ini.
    • Satu hingga banyak: mewakili chip multi-core yang dipasang di soket. Nilai umumnya adalah 2, 4, dan 8.
  • Inti dipetakan ke satu atau dua prosesor logis. Ketika pemetaan inti ke prosesor logis adalah:
    • Satu ke satu: SMT nonaktif.
    • Satu hingga dua: SMT aktif.

Definisi berikut berlaku untuk istilah yang digunakan dalam artikel ini:

  • Utas atau prosesor logis adalah salah satu mesin komputasi logis dari perspektif SQL Server, sistem operasi, aplikasi, atau driver.

  • Inti adalah unit prosesor. Ini dapat terdiri dari satu atau beberapa prosesor logis.

  • Prosesor fisik dapat terdiri dari satu atau beberapa inti. Prosesor fisik sama dengan paket prosesor atau soket.

Batas jumlah inti logis per simpul NUMA hingga 64

Anda dapat mengalami masalah seperti stack dump di server dengan lebih dari 64 prosesor logis per simpul NUMA. Konfigurasi BIOS atau firmware dapat mengurangi jumlah inti logis hingga maksimum 64 prosesor logis per simpul NUMA, yang disajikan ke sistem operasi.

Perhatian

Pembaruan Kumulatif SQL Server 2022 (16.x) 11 memperkenalkan perubahan yang melanggar, di mana Mesin Database tidak dimulai jika mendeteksi lebih dari 64 inti logis per simpul NUMA.

Anda dapat mengurangi jumlah inti logis per simpul NUMA di Azure Virtual Machine, dengan menonaktifkan SMT. Untuk instans SQL Server bare-metal , Anda dapat mengurangi jumlah inti logis dengan opsi pengklusteran sub-NUMA (SNC) atau Node per Soket (NPS).

Menonaktifkan SMT di Azure Virtual Machine

SQL Server memiliki batas 64 inti logis yang didukung per simpul NUMA. Dalam beberapa kasus, VM seri Azure Mv3 mungkin melebihi batas ini, yang mencegah SQL Server memulai, atau memungkinkannya berjalan dengan performa yang terdegradasi. Untuk menonaktifkan SMT, buat perubahan berikut menggunakan PowerShell dan Editor Registri (reg.exe). Pastikan untuk mencadangkan registri Anda sebelum mengeditnya.

  1. Periksa jumlah inti logis. SMT diaktifkan jika rasionya adalah 2:1 (jumlah inti logis adalah dua kali jumlah inti).

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    
  2. Nonaktifkan SMT dengan dua perubahan registri berikut, lalu boot ulang VM.

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
    
  3. Periksa jumlah inti logis sekali lagi. Jumlah inti logis harus cocok dengan jumlah inti.

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    

Mengurangi jumlah inti logis pada instans bare-metal

Tabel berikut menjelaskan cara mengurangi jumlah inti logis pada instans bare-metal SQL Server.

Pada CPU Intel, Anda dapat mengaktifkan pengklusteran sub-NUMA (SNC), yang sebelumnya disebut Cluster-on-Die (CoD), menghasilkan dua domain NUMA dalam satu soket fisik.

Pengaturan Konfigurasi Deskripsi
SNC dinonaktifkan (default) Menonaktifkan pengklusteran sub-NUMA.
SNC diaktifkan Mengaktifkan pengklusteran sub-NUMA.

Pada CPU AMD, Anda dapat mengaktifkan berbagai opsi Node per Soket (NPS).

Pengaturan Konfigurasi Deskripsi
NPS0 Dalam sistem soket ganda, NUMA hadir sebagai simpul tunggal dengan semua saluran memori yang terjalin di seluruh simpul.
NPS1 (default) Konfigurasi ini menyajikan satu simpul NUMA per soket.
NPS2 Konfigurasi ini menyajikan dua simpul NUMA per soket, mirip dengan SNC.
NPS4 Konfigurasi ini menyajikan empat simpul NUMA per soket.

Keterangan

Sistem dengan lebih dari satu prosesor fisik atau sistem dengan prosesor fisik yang memiliki beberapa inti dan/atau SMT memungkinkan sistem operasi menjalankan beberapa tugas secara bersamaan. Setiap utas eksekusi muncul sebagai prosesor logis. Misalnya, jika komputer Anda memiliki dua prosesor quad-core dengan SMT diaktifkan dan dua utas per inti, Anda memiliki 16 prosesor logis: 2 prosesor x 4 core per prosesor x 2 utas per inti. Perlu dicatat bahwa:

  • Kapasitas komputasi prosesor logis dari satu utas inti SMT kurang dari kapasitas komputasi prosesor logis dari inti yang sama dengan SMT yang dinonaktifkan.

  • Kapasitas komputasi dari dua prosesor logis dalam inti SMT lebih besar dari kapasitas komputasi inti yang sama dengan SMT dinonaktifkan.

Setiap edisi SQL Server memiliki dua batas kapasitas komputasi:

  • Jumlah maksimum soket (atau prosesor fisik atau paket prosesor)

  • Jumlah maksimum inti seperti yang dilaporkan oleh sistem operasi

Batas ini berlaku untuk satu instans SQL Server. Mereka mewakili kapasitas komputasi maksimum yang digunakan satu instans. Mereka tidak membatasi server tempat instans mungkin disebarkan. Bahkan, menyebarkan beberapa instans SQL Server di server fisik yang sama adalah cara yang efisien untuk menggunakan kapasitas komputasi server fisik dengan lebih banyak soket dan/atau inti daripada batas kapasitas yang diizinkan.

Tabel berikut menentukan batas kapasitas komputasi untuk satu instans dari setiap edisi SQL Server:

Edisi SQL Server Kapasitas komputasi maksimum untuk satu instans (SQL Server Database Engine) Kapasitas komputasi maksimum untuk satu instans (AS, RS)
Edisi perusahaan: Lisensi berbasis inti 1 Maksimum sistem operasi Maksimum sistem operasi
Pengembang Maksimum sistem operasi Maksimum sistem operasi
Standard Terbatas pada kurang dari 4 soket atau 24 inti Terbatas pada kurang dari 4 soket atau 24 inti
Ekspres Terbatas pada kurang dari 1 soket atau 4 core Terbatas pada kurang dari 1 soket atau 4 core

1 Edisi Perusahaan dengan lisensi Server + Client Access License (CAL) dibatasi hingga 20 core per instans SQL Server. (Lisensi ini tidak tersedia untuk perjanjian baru.) Tidak ada batasan di bawah model Lisensi Server berbasis Inti.

Dalam lingkungan virtual, batas kapasitas komputasi didasarkan pada jumlah prosesor logis, bukan inti. Alasannya adalah bahwa arsitektur prosesor tidak terlihat oleh aplikasi tamu.

Misalnya, server yang memiliki empat soket yang diisi dengan prosesor quad-core dan kemampuan untuk mengaktifkan dua utas SMT per inti berisi 32 prosesor logis dengan SMT diaktifkan. Tetapi hanya berisi 16 prosesor logis dengan SMT dinonaktifkan. Prosesor logis ini dapat dipetakan ke komputer virtual di server. Beban komputasi komputer virtual pada prosesor logis tersebut dipetakan ke utas eksekusi pada prosesor fisik di server host.

Anda mungkin ingin menonaktifkan SMT ketika performa untuk setiap prosesor virtual penting. Anda dapat mengonfigurasi SMT dengan menggunakan pengaturan BIOS untuk prosesor selama penyiapan BIOS, tetapi biasanya operasi cakupan server yang memengaruhi semua beban kerja yang berjalan di server. Anda mungkin mempertimbangkan untuk memisahkan beban kerja yang berjalan di lingkungan virtual, dari beban kerja yang akan mendapat manfaat dari peningkatan performa SMT di lingkungan sistem operasi fisik.

Dapatkan bantuan

Berkontribusi pada dokumentasi SQL

Tahukah Anda bahwa Anda dapat mengedit konten SQL sendiri? Jika Anda melakukannya, Anda tidak hanya membantu meningkatkan dokumentasi kami, tetapi Anda juga dikreditkan sebagai kontributor ke halaman.

Untuk informasi selengkapnya, lihat Cara berkontribusi pada dokumentasi SQL Server