masker afinitas (opsi konfigurasi server)

Berlaku untuk:SQL Server

Catatan

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan ALTER SERVER CONFIGURATION (Transact-SQL) sebagai gantinya.

Untuk melakukan multitugas, Microsoft Windows terkadang memindahkan utas proses di antara prosesor yang berbeda. Meskipun efisien dari sudut pandang sistem operasi, aktivitas ini dapat mengurangi performa SQL Server di bawah beban sistem berat, karena setiap cache prosesor berulang kali dimuat ulang dengan data. Menetapkan prosesor ke utas tertentu dapat meningkatkan performa dalam kondisi ini dengan menghilangkan beban ulang prosesor dan mengurangi migrasi utas di seluruh prosesor, yang mengurangi peralihan konteks. Hubungan seperti itu antara utas dan prosesor disebut afinitas prosesor.

SQL Server mendukung afinitas prosesor dengan dua opsi masker afinitas: masker afinitas (juga dikenal sebagai masker afinitas CPU) dan masker I/O afinitas. Untuk informasi selengkapnya tentang opsi masker I/O afinitas, lihat Opsi Konfigurasi Server mask input-output afinitas. Dukungan afinitas CPU dan I/O untuk server dengan prosesor 33 hingga 64 memerlukan penggunaan tambahan Opsi Konfigurasi Server mask afinity64 dan Opsi Konfigurasi Server mask afinitas64 Input-Output.

Catatan

Dukungan afinitas untuk server dengan prosesor 33 hingga 64 hanya tersedia pada sistem operasi 64-bit.

Opsi masker afinitas, yang ada di rilis SQL Server sebelumnya, secara dinamis mengontrol afinitas CPU.

Di SQL Server, opsi masker afinitas dapat dikonfigurasi tanpa memerlukan mulai ulang instans SQL Server. Saat menggunakan sp_configure, Anda harus menjalankan KONFIGURASI ULANG atau KONFIGURASI ULANG DENGAN AMBIL ALIH setelah mengatur opsi konfigurasi. Saat Anda menggunakan SQL Server Express, mengubah opsi masker afinitas memang memerlukan mulai ulang.

Perubahan pada masker afinitas terjadi secara dinamis, memungkinkan startup sesuai permintaan dan penonaktifan penjadwal CPU yang mengikat utas proses dalam SQL Server. Ini dapat terjadi saat kondisi berubah pada server. Misalnya, jika instans baru SQL Server ditambahkan ke server, mungkin perlu untuk membuat penyesuaian pada opsi masker afinitas untuk mendistribusikan ulang beban prosesor.

Modifikasi pada bitmask afinitas memerlukan SQL Server untuk mengaktifkan penjadwal CPU baru dan menonaktifkan penjadwal CPU yang ada. Batch baru kemudian dapat diproses pada penjadwal baru atau yang tersisa.

Untuk memulai penjadwal CPU baru, SQL Server membuat penjadwal baru dan menambahkannya ke daftar penjadwal standarnya. Penjadwal baru dianggap hanya untuk batch masuk baru. Batch saat ini terus berjalan pada penjadwal yang sama. Pekerja bermigrasi ke penjadwal baru saat mereka membebaskan, atau saat pekerja baru dibuat.

Mematikan penjadwal mengharuskan semua batch pada penjadwal menyelesaikan aktivitas dan keluar. Penjadwal yang telah dimatikan ditandai sebagai offline sehingga tidak ada batch baru yang dijadwalkan di dalamnya.

Baik Anda menambahkan atau menghapus penjadwal baru, tugas sistem permanen seperti monitor kunci, titik pemeriksaan, utas tugas sistem (memproses DTC), dan proses sinyal terus berjalan pada penjadwal saat server beroperasi. Tugas sistem permanen ini tidak dimigrasikan secara dinamis. Untuk mendistribusikan ulang beban prosesor untuk tugas sistem ini di seluruh penjadwal, perlu untuk memulai ulang instans SQL Server. Jika SQL Server mencoba mematikan penjadwal yang terkait dengan tugas sistem permanen, tugas terus berjalan pada penjadwal offline (tidak ada migrasi). Penjadwal ini terikat pada prosesor dalam masker afinitas yang dimodifikasi dan tidak menempatkan beban apa pun pada prosesor yang terikat sebelum perubahan. Memiliki penjadwal offline ekstra seharusnya tidak secara signifikan memengaruhi beban sistem. Jika ya, menghidupkan ulang server database diperlukan untuk mengonfigurasi ulang tugas-tugas ini pada penjadwal yang tersedia dengan masker afinitas yang dimodifikasi.

Jangan atur nilai konfigurasi 'masker afinitas' dan 'afinitas I/O mask' SQL Server untuk menggunakan CPU yang sama. Performa mungkin menderita jika Anda memilih untuk mengikat prosesor untuk penjadwalan utas pekerja SQL Server dan untuk pemrosesan I/O. Oleh karena itu, pastikan bahwa nilai konfigurasi tidak diatur untuk prosesor yang sama. Rekomendasi yang sama berlaku untuk 'affinity64 mask' dan 'affinity64 I/O mask'. Untuk memastikan bahwa masker afinitas tidak tumpang tindih dengan masker IO afinitas, perintah KONFIGURASI ULANG memverifikasi bahwa Afinitas CPU dan I/O normal saling eksklusif. Jika tidak, pesan kesalahan dilaporkan ke sesi klien dan ke log kesalahan SQL Server, menunjukkan bahwa pengaturan seperti itu tidak disarankan.

 Msg 5834, Level 16, State 1, Line 1
 The affinity mask specified conflicts with the IO affinity mask specified. Use the override option to force this configuration

Menjalankan KONFIGURASI ULANG DENGAN opsi OVERRIDE memungkinkan afinitas CPU dan I/O tumpang tindih dan tidak saling eksklusif.

Tugas afinitas I/O (seperti penulis malas dan penulis log) dipengaruhi langsung oleh masker afinitas I/O. Jika tugas penulis malas dan penulis log tidak terikat, mereka mengikuti aturan yang sama yang ditentukan untuk tugas permanen lainnya seperti monitor kunci atau titik pemeriksaan. Jika Anda menentukan masker afinitas yang mencoba memetakan ke CPU yang tidak ada, perintah KONFIGURASI ULANG melaporkan pesan kesalahan ke sesi klien dan log kesalahan SQL Server. Menggunakan opsi KONFIGURASI ULANG DENGAN PENIMPAAN tidak berpengaruh dalam kasus ini, dan kesalahan konfigurasi yang sama dilaporkan lagi.

Anda juga dapat mengecualikan aktivitas SQL Server dari penetapan beban kerja tertentu oleh sistem operasi Windows. Jika Anda mengatur bit yang mewakili prosesor ke 1, prosesor tersebut dipilih oleh Mesin Database SQL Server untuk penetapan utas. Saat Anda mengatur masker afinitas ke 0 (default), algoritma penjadwalan Microsoft Windows mengatur afinitas utas. Saat Anda mengatur masker afinitas ke nilai nonzero apa pun, afinitas SQL Server menginterpretasikan nilai sebagai bitmask yang menentukan prosesor tersebut memenuhi syarat untuk pemilihan.

Dengan memisahkan utas SQL Server agar tidak berjalan pada prosesor tertentu, Microsoft Windows dapat mengevaluasi penanganan proses sistem dengan lebih baik khusus untuk Windows. Misalnya, pada server 8-CPU yang menjalankan dua instans SQL Server (instans A dan B), administrator sistem dapat menggunakan opsi masker afinitas untuk menetapkan set pertama 4 CPU ke instans A dan set kedua 4 ke instans B. Untuk mengonfigurasi lebih dari 32 prosesor, atur masker afinitas dan masker afinitas64. Nilai untuk masker afinitas adalah sebagai berikut:

  • Masker afinitas satu byte mencakup hingga 8 CPU di komputer multiprosedur.

  • Masker afinitas dua byte mencakup hingga 16 CPU di komputer multiprosedur.

  • Masker afinitas tiga byte mencakup hingga 24 CPU di komputer multiprosedur.

  • Masker afinitas empat byte mencakup hingga 32 CPU di komputer multiprosedur.

  • Untuk mencakup lebih dari 32 CPU, konfigurasikan masker afinitas empat byte untuk 32 CPU pertama dan hingga masker empat byte afinitas64 untuk CPU yang tersisa.

Karena mengatur afinitas prosesor SQL Server adalah operasi khusus, disarankan agar hanya digunakan jika diperlukan. Dalam kebanyakan kasus, afinitas default Microsoft Windows memberikan performa terbaik. Pertimbangkan persyaratan CPU untuk aplikasi lain saat mengatur masker afinitas. Untuk informasi selengkapnya, lihat dokumentasi sistem operasi Windows Anda.

Catatan

Anda dapat menggunakan Monitor Sistem Windows untuk melihat dan menganalisis penggunaan prosesor individual.

Saat menentukan opsi masker I/O afinitas, Anda harus menggunakannya dengan opsi konfigurasi masker afinitas. Namun, seperti disebutkan sebelumnya, jangan aktifkan CPU yang sama di sakelar masker afinitas dan opsi masker I/O afinitas. Bit yang sesuai dengan setiap CPU harus berada di salah satu dari tiga status ini:

  • 0 dalam opsi masker afinitas dan opsi masker I/O afinitas.

  • 1 dalam opsi masker afinitas dan 0 dalam opsi masker I/O afinitas.

  • 0 dalam opsi masker afinitas dan 1 dalam opsi masker I/O afinitas.

Perhatian

Jangan mengonfigurasi afinitas CPU dalam sistem operasi Windows dan juga mengonfigurasi masker afinitas di SQL Server. Pengaturan ini mencoba mencapai hasil yang sama, dan jika konfigurasi tidak konsisten, Anda mungkin memiliki hasil yang tidak dapat diprediksi. Afinitas CPU SQL Server paling baik dikonfigurasi menggunakan opsi sp_configure di SQL Server.

Contoh

Sebagai contoh pengaturan opsi masker afinitas, jika prosesor 1, 2, dan 5 dipilih sebagai tersedia dengan bit di posisi 1, 2, dan 5 diatur ke 1 dan bit 0, 3, 4, 6, dan 7 diatur ke 0, nilai heksadesimal 0x26 atau setara desimal 38 harus digunakan. Beri nomor posisi bit dari kanan ke kiri..

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'affinity mask', 38;
RECONFIGURE;
GO

Ini adalah nilai masker afinitas untuk sistem 8-CPU.

Nilai desimal Masker bit biner Mengizinkan utas SQL Server pada prosesor
1 00000001 0
3 00000011 0 dan 1
7 00000111 0, 1, dan 2
15 00001111 0, 1, 2, dan 3
31 00011111 0, 1, 2, 3, dan 4
63 00111111 0, 1, 2, 3, 4, dan 5
127 01111111 0, 1, 2, 3, 4, 5, dan 6
255 11111111 0, 1, 2, 3, 4, 5, 6, dan 7

Opsi masker afinitas adalah opsi lanjutan. Jika Anda menggunakan prosedur tersimpan sistem sp_configure untuk mengubah pengaturan, Anda hanya dapat mengubah masker afinitas saat menampilkan opsi tingkat lanjut diatur ke 1. Setelah menjalankan perintah KONFIGURASI ULANG Transact-SQL, pengaturan baru segera berlaku tanpa memerlukan mulai ulang instans SQL Server.

Akses memori non-seragam (NUMA)

Saat menggunakan akses memori non-seragam berbasis perangkat keras (NUMA) dan masker afinitas diatur, setiap penjadwal dalam simpul mengikat ke CPU-nya sendiri. Ketika masker afinitas tidak diatur, setiap penjadwal terikat ke grup CPU dalam simpul NUMA dan penjadwal yang dipetakan ke simpul NUMA N1 dapat menjadwalkan pekerjaan pada CPU apa pun di simpul, tetapi tidak pada CPU yang terkait dengan simpul lain.

Setiap operasi yang berjalan pada satu simpul NUMA hanya dapat menggunakan halaman buffer dari simpul tersebut. Ketika operasi dijalankan secara paralel pada CPU dari beberapa simpul, memori dapat digunakan dari simpul apa pun yang terlibat.

Masalah lisensi

Afinitas dinamis dibatasi erat oleh lisensi CPU. SQL Server tidak mengizinkan konfigurasi opsi masker afinitas yang melanggar kebijakan lisensi.

Startup

Jika masker afinitas tertentu melanggar kebijakan lisensi selama startup SQL Server atau selama lampiran database, lapisan mesin menyelesaikan proses startup atau operasi melampirkan/memulihkan database, lalu mengatur ulang nilai eksekusi sp_configure untuk masker afinitas menjadi nol, mengeluarkan pesan kesalahan ke log kesalahan SQL Server.

Konfigurasi ulang

Jika masker afinitas tertentu melanggar kebijakan lisensi saat menjalankan perintah KONFIGURASI ULANG Transact-SQL, pesan kesalahan dilaporkan ke sesi klien dan ke log kesalahan SQL Server, mengharuskan administrator database untuk mengonfigurasi ulang masker afinitas. Tidak ada perintah RECONFIGURE WITH OVERRIDE yang diterima dalam kasus ini.

Langkah berikutnya