Bagikan melalui


Konfigurasi server: masker afinitas

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 sebagai gantinya.

Untuk melakukan multitugas, 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; hubungan seperti itu antara utas dan prosesor disebut afinitas prosesor.

SQL Server mendukung afinitas prosesor dengan dua opsi masker afinitas: affinity mask (juga dikenal sebagai masker afinitas CPU) dan affinity I/O mask. Untuk informasi selengkapnya tentang affinity I/O mask option, lihat Mengonfigurasi opsi konfigurasi server mask I/O afinitas. Dukungan afinitas CPU dan I/O untuk server dengan prosesor 33 hingga 64 mengharuskan Anda juga menggunakan opsi konfigurasi server masker afinitas64 dan afinitas64 I/O .

Catatan

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

Opsi affinity mask , yang ada dalam rilis SQL Server sebelumnya, secara dinamis mengontrol afinitas CPU.

Di SQL Server, affinity mask opsi dapat dikonfigurasi tanpa memerlukan restart instans SQL Server. Saat Anda menggunakan sp_configure, , Anda harus menjalankan salah satu RECONFIGURE atau RECONFIGURE WITH OVERRIDE setelah mengatur opsi konfigurasi. Saat Anda menggunakan SQL Server Express, mengubah affinity mask opsi 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 affinity mask opsi 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 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 affinity mask nilai konfigurasi dan affinity 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 affinity mask tidak tumpang tindih dengan affinity I/O mask, 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.

Opsi berjalan RECONFIGURE WITH 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 affinity I/O mask. 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, RECONFIGURE perintah melaporkan pesan kesalahan ke sesi klien dan log kesalahan SQL Server. RECONFIGURE WITH OVERRIDE Menggunakan opsi 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 affinity mask ke 0 (default), algoritma penjadwalan Microsoft Windows mengatur afinitas utas. Ketika Anda mengatur affinity mask ke nilai bukan nol 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 affinity mask opsi untuk menetapkan set pertama 4 CPU ke instans A dan set kedua 4 ke instans B. Untuk mengonfigurasi lebih dari 32 prosesor, atur dan affinity mask affinity64 mask. Nilai untuk affinity mask adalah sebagai berikut:

Byte dalam masker Jumlah CPU
1-byte Hingga 8 CPU
2-byte Hingga 16 CPU
3-byte Hingga 24 CPU
4-byte Hingga 32 CPU

Untuk mencakup lebih dari 32 CPU, konfigurasikan 4 byte affinity mask untuk 32 CPU pertama dan hingga 4 byte affinity64 mask untuk CPU yang tersisa.

Karena mengatur afinitas prosesor SQL Server adalah operasi khusus, gunakan hanya jika diperlukan. Dalam kebanyakan kasus, afinitas Windows default 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 Proses untuk melihat dan menganalisis penggunaan prosesor individual.

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

  • 0affinity mask dalam opsi dan affinity I/O mask opsi .
  • 1affinity mask dalam opsi dan 0 dalam affinity I/O mask opsi .
  • 0affinity mask dalam opsi dan 1 dalam affinity I/O mask opsi .

Perhatian

Jangan mengonfigurasi afinitas CPU dalam sistem operasi Windows dan juga mengonfigurasi affinity mask 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 sp_configure opsi di SQL Server.

Contoh

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

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

Tabel berikut ini memperlihatkan affinity mask nilai 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 ini affinity mask adalah opsi lanjutan. Jika Anda menggunakan prosedur tersimpan sp_configure sistem untuk mengubah pengaturan, Anda hanya dapat mengubah affinity mask saat show advanced options diatur ke 1. Setelah perintah Transact-SQL RECONFIGURE dijalankan, 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 affinity mask diatur, setiap penjadwal dalam simpul mengikat ke CPU-nya sendiri. affinity mask Ketika tidak diatur, setiap penjadwal terikat ke grup CPU dalam simpul NUMA dan penjadwal yang dipetakan ke simpul N1 NUMA 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 affinity mask opsi apa pun 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 lampiran/pemulihan database, lalu mengatur ulang sp_configure nilai eksekusi 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 Transact-SQL RECONFIGURE , pesan kesalahan dilaporkan ke sesi klien dan ke log kesalahan SQL Server, mengharuskan administrator database untuk mengonfigurasi ulang masker afinitas. Tidak ada RECONFIGURE WITH OVERRIDE perintah yang diterima dalam kasus ini.