Bagikan melalui


Properti kumpulan utas

Berlaku untuk: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Analysis Services menggunakan multi-threading untuk banyak operasi, meningkatkan performa server secara keseluruhan dengan menjalankan beberapa pekerjaan secara paralel. Untuk mengelola utas secara lebih efisien, mesin menggunakan kumpulan utas untuk mengalokasikan utas terlebih dahulu dan memfasilitasi ketersediaan utas untuk pekerjaan berikutnya.

Setiap instans mempertahankan kumpulan utasnya sendiri. Ada perbedaan dalam bagaimana instans tabular dan multidmensional menggunakan kumpulan utas. Misalnya, hanya instans multidmensional yang menggunakan kumpulan utas IOProcess . Dengan demikian, properti PerNumaNode , yang dijelaskan dalam artikel ini, tidak bermakna untuk instans Tabular. Di bagian Referensi properti di bawah ini, persyaratan mode dipanggil untuk setiap properti.

Catatan

Penyebaran tabular pada sistem NUMA berada di luar cakupan untuk topik ini. Meskipun solusi tabular dapat berhasil disebarkan pada sistem NUMA, karakteristik performa teknologi database dalam memori yang digunakan oleh model tabular dapat menunjukkan manfaat terbatas pada arsitektur yang sangat diskalakan. Untuk informasi selengkapnya, lihat Studi Kasus Analysis Services: Menggunakan Model Tabular dalam Solusi Komersial Skala Besar dan Solusi Ukuran Perangkat Keras Tabular.

Manajemen utas

SQL Server Analysis Services menggunakan multi-threading untuk memanfaatkan sumber daya CPU yang tersedia dengan meningkatkan jumlah tugas yang dijalankan secara paralel. Mesin penyimpanan multi-utas. Contoh pekerjaan multi-utas yang dijalankan dalam mesin penyimpanan termasuk memproses objek secara paralel atau menangani kueri diskrit yang telah didorong ke mesin penyimpanan, atau mengembalikan nilai data yang diminta oleh kueri. Mesin rumus, karena sifat serial perhitungan yang dievaluasinya, adalah utas tunggal. Setiap kueri dijalankan terutama pada satu utas, meminta dan sering menunggu data yang dikembalikan oleh mesin penyimpanan. Utas kueri memiliki eksekusi yang lebih lama, dan dirilis hanya setelah seluruh kueri selesai.

Secara default, SQL Server Analysis Services akan menggunakan semua prosesor logis yang tersedia. Setelah dimulai, proses msmdsrv.exe akan ditetapkan ke grup prosesor tertentu, tetapi seiring waktu utas dapat dijadwalkan pada prosesor logis apa pun, dalam grup prosesor apa pun.

Salah satu efek samping dari penggunaan sejumlah besar prosesor adalah Anda terkadang dapat mengalami penurunan performa karena beban kueri dan pemrosesan tersebar di sejumlah besar prosesor dan ketidakcocokan untuk struktur data bersama meningkat. Ini dapat terjadi terutama pada sistem kelas atas yang menggunakan arsitektur NUMA, tetapi juga pada sistem non-NUMA yang menjalankan beberapa aplikasi intensif data pada perangkat keras yang sama.

Anda dapat mengatur afinitas antara jenis operasi dan sekumpulan prosesor logis tertentu. Properti GroupAffinity memungkinkan Anda membuat masker afinitas kustom yang menentukan sumber daya sistem mana yang akan digunakan untuk setiap jenis kumpulan utas yang dikelola oleh SQL Server Analysis Services.

GroupAffinity adalah properti yang dapat diatur pada salah satu kumpulan utas yang digunakan untuk berbagai beban kerja:

  • ThreadPool \ Parsing \ Short adalah kumpulan penguraian untuk permintaan singkat. Permintaan yang sesuai dalam satu pesan jaringan dianggap singkat.

  • ThreadPool \ Parsing \ Long adalah kumpulan penguraian untuk semua permintaan lain yang tidak sesuai dalam satu pesan jaringan.

    Catatan

    Utas dari salah satu kumpulan penguraian dapat digunakan untuk menjalankan kueri. Kueri yang dijalankan dengan cepat, seperti permintaan Temukan atau Batalkan cepat, terkadang segera dijalankan daripada diantrekan ke kumpulan utas Kueri.

  • ThreadPool \ Query adalah kumpulan utas yang menjalankan semua permintaan yang tidak ditangani oleh kumpulan utas penguraian. Utas dalam kumpulan utas ini akan menjalankan semua jenis operasi, seperti perintah Discovers, MDX, DAX, DMX, dan DDL. A

  • ThreadPool \ IOProcess digunakan untuk pekerjaan IO yang terkait dengan kueri mesin penyimpanan di mesin multidimensi. Pekerjaan yang dilakukan oleh utas ini diharapkan tidak memiliki dependensi pada utas lain. Utas ini biasanya akan memindai satu segmen partisi dan melakukan pemfilteran dan agregasi pada data segmen. Utas IOProcess sangat sensitif terhadap konfigurasi perangkat keras NUMA. Dengan demikian, kumpulan utas ini memiliki properti konfigurasi PerNumaNode yang dapat digunakan untuk menyetel performa jika diperlukan.

  • ThreadPool \ Process adalah untuk pekerjaan mesin penyimpanan durasi yang lebih lama, termasuk agregasi, pengindeksan, dan operasi penerapan. Mode penyimpanan ROLAP juga menggunakan utas dari kumpulan alur Pemrosesan.

  • VertiPaq \ ThreadPool adalah kumpulan utas untuk menjalankan pemindaian tabel dalam model tabular.

Untuk permintaan layanan, SQL Server Analysis Services mungkin melebihi batas kumpulan utas maksimum, meminta utas tambahan jika diperlukan untuk melakukan pekerjaan. Namun, ketika utas selesai menjalankan tugasnya, jika jumlah utas saat ini lebih besar dari batas maksimum, utas hanya berakhir, daripada dikembalikan ke kumpulan utas.

Catatan

Melebihi jumlah kumpulan utas maksimum adalah perlindungan yang dipanggil hanya ketika kondisi kebuntuan tertentu muncul. Untuk mencegah pembuatan utas pelarian melebihi maksimum, utas dibuat secara bertahap (setelah penundaan singkat) setelah batas maksimum tercapai. Melebihi jumlah utas maksimum dapat menyebabkan perlambatan eksekusi tugas. Jika penghitung kinerja menunjukkan jumlah utas secara teratur di luar ukuran maksimum kumpulan utas, Anda mungkin mempertimbangkan bahwa sebagai indikator bahwa ukuran kumpulan utas terlalu kecil untuk tingkat konkurensi yang diminta dari sistem.

Secara default, ukuran kumpulan utas ditentukan oleh SQL Server Analysis Services, dan didasarkan pada jumlah inti. Untuk SSAS, Anda dapat mengamati nilai default yang dipilih dengan memeriksa file msmdsrv.log setelah startup server. Sebagai latihan penyetelan performa, Anda dapat memilih untuk meningkatkan ukuran kumpulan utas, serta properti lainnya, untuk meningkatkan performa kueri atau pemrosesan.

Referensi properti kumpulan utas

Bagian ini menjelaskan properti kumpulan utas yang ditemukan dalam file msmdsrv.ini dari setiap instans SQL Server Analysis Services. Subset properti ini juga muncul di SQL Server Management Studio.

Properti tercantum dalam urutan alfabet.

Nama Jenis Deskripsi Default Panduan
IOProcess \ Concurrency double Nilai titik mengambang presisi ganda yang menentukan algoritma untuk menetapkan target pada jumlah utas yang dapat diantrekan pada satu waktu. 2.0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.

Konkurensi digunakan untuk menginisialisasi kumpulan utas, yang diimplementasikan menggunakan Port Penyelesaian IO di Windows.
IOProcess \ GroupAffinity string Array nilai heksadesimal yang sesuai dengan grup prosesor pada sistem, digunakan untuk mengatur afinitas utas di kumpulan utas IOProcess ke prosesor logis di setiap grup prosesor. tidak ada Anda dapat menggunakan properti ini untuk membuat afinitas kustom. Properti kosong secara default.

Lihat Mengatur GroupAffinity untuk mendefinisikan utas ke prosesor dalam grup prosesor untuk detailnya.

Hanya berlaku untuk model multidmensional.
IOProcess \ MaxThreads int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah maksimum utas untuk disertakan dalam kumpulan utas. 0 0 menunjukkan server menentukan default. Secara default, server mengatur nilai ini ke 64, atau ke 10 kali jumlah prosesor logis, mana pun yang lebih tinggi. Misalnya, pada sistem 4-core dengan hyperthreading, maksimum kumpulan utas adalah 80 utas.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis. Misalnya, ketika diatur ke -10 di server yang memiliki 32 prosesor logis, maksimumnya adalah 320 utas.

Nilai maksimum tunduk pada prosesor yang tersedia per masker afinitas kustom apa pun yang sebelumnya Anda tentukan. Misalnya, jika Anda sudah mengatur afinitas kumpulan utas untuk menggunakan 8 dari 32 prosesor, dan Anda sekarang mengatur MaxThreads ke -10, maka batas atas pada kumpulan utas akan 10 kali 8, atau 80 utas.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.

Informasi selengkapnya tentang penyetelan pengaturan kumpulan utas dapat ditemukan di Panduan Operasi Analysis Services.

Hanya berlaku untuk model multidmensional.
IOProcess \ MinThreads int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah minimum utas untuk melakukan pra-alokasi untuk kumpulan utas. 0 0 menunjukkan server menentukan default. Secara default, minimumnya adalah 1.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.

Informasi selengkapnya tentang penyetelan pengaturan kumpulan utas dapat ditemukan di Panduan Operasi Analysis Services.

Hanya berlaku untuk model multidimensi.
IOProcess \ PerNumaNode int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah kumpulan utas yang dibuat untuk proses msmdsrv. -1 Nilai yang valid adalah -1, 0, 1, 2

-1 = Server memilih strategi Kumpulan Utas IO yang berbeda berdasarkan jumlah simpul NUMA. Pada sistem yang memiliki kurang dari 4 simpul NUMA, perilaku server sama dengan 0 (satu kumpulan utas IOProcess dibuat untuk sistem). Pada sistem yang memiliki 4 simpul atau lebih, perilakunya sama dengan 1 (kumpulan utas IOProcess dibuat untuk setiap simpul).

0 = Menonaktifkan per kumpulan utas simpul NUMA sehingga hanya ada satu kumpulan utas IOProcess yang digunakan oleh proses msmdsrv.exe.

1 = Mengaktifkan satu kumpulan alur IOProcess per simpul NUMA.

2 = Satu kumpulan alur IOProcess per prosesor logis. Utas di setiap kumpulan utas diafinisiskan ke simpul NUMA dari prosesor logis, dengan prosesor ideal diatur ke prosesor logis.

Lihat Mengatur PerNumaNode untuk mendefinisikan utas IO ke prosesor dalam simpul NUMA untuk detailnya.

Hanya berlaku untuk model multidimensi.
IOProcess \ PriorityRatio int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk memastikan bahwa utas prioritas yang lebih rendah terkadang dijalankan bahkan ketika antrean prioritas yang lebih tinggi tidak kosong. 2 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.

Hanya berlaku untuk model multidimensi.
IOProcess \ StackSizeKB int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk menyesuaikan alokasi memori selama eksekusi utas. 0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.

Hanya berlaku untuk model multidimensi.
Parsing \ Lama \ Concurrency double Nilai titik float presisi ganda yang menentukan algoritma untuk menetapkan target pada jumlah utas yang dapat diantrekan pada satu waktu. 2.0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.

Konkurensi digunakan untuk menginisialisasi kumpulan utas, yang diimplementasikan menggunakan Port Penyelesaian IO di Windows.
Parsing \ Lama \ GroupAffinity string Array nilai heksadesimal yang sesuai dengan grup prosesor pada sistem, digunakan untuk mengatur afinitas utas penguraian ke prosesor logis di setiap grup prosesor. tidak ada Anda dapat menggunakan properti ini untuk membuat afinitas kustom. Properti kosong secara default.

Lihat Mengatur GroupAffinity untuk mendefinisikan utas ke prosesor dalam grup prosesor untuk detailnya.
Parsing \ Lama \ NumThreads int Properti bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah utas yang dapat dibuat untuk perintah panjang. 0 0 menunjukkan bahwa server menentukan default. Perilaku default adalah mengatur NumThreads ke nilai absolut 4, atau 2 kali jumlah prosesor logis, mana pun yang lebih tinggi.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis. Misalnya, ketika diatur ke -10 di server yang memiliki 32 prosesor logis, maksimumnya adalah 320 utas.

Nilai maksimum tunduk pada prosesor yang tersedia per masker afinitas kustom yang sebelumnya Anda tentukan. Misalnya, jika Anda sudah mengatur afinitas kumpulan utas untuk menggunakan 8 dari 32 prosesor, dan Anda sekarang mengatur NumThreads ke -10, maka batas atas pada kumpulan utas akan 10 kali 8, atau 80 utas.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.
Parsing \ Lama \ PriorityRatio int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk memastikan bahwa utas prioritas yang lebih rendah terkadang dijalankan bahkan ketika antrean prioritas yang lebih tinggi tidak kosong. 0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
Parsing \ Lama \ StackSizeKB int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk menyesuaikan alokasi memori selama eksekusi utas. 0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
Parsing \ Pendek \ Concurrency double Nilai titik float presisi ganda yang menentukan algoritma untuk menetapkan target pada jumlah utas yang dapat diantrekan pada satu waktu. 2.0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.

Konkurensi digunakan untuk menginisialisasi kumpulan utas, yang diimplementasikan menggunakan Port Penyelesaian IO di Windows.
Parsing \ Pendek \ GroupAffinity string Array nilai heksadesimal yang sesuai dengan grup prosesor pada sistem, digunakan untuk mengatur afinitas utas penguraian ke prosesor logis di setiap grup prosesor. tidak ada Anda dapat menggunakan properti ini untuk membuat afinitas kustom. Properti kosong secara default.

Lihat Mengatur GroupAffinity untuk mendefinisikan utas ke prosesor dalam grup prosesor untuk detailnya.
Parsing \ Pendek \ NumThreads int Properti bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah utas yang dapat dibuat untuk perintah singkat. 0 0 menunjukkan bahwa server menentukan default. Perilaku default adalah mengatur NumThreads ke nilai absolut 4, atau 2 kali jumlah prosesor logis, mana pun yang lebih tinggi.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis. Misalnya, ketika diatur ke -10 di server yang memiliki 32 prosesor logis, maksimumnya adalah 320 utas.

Nilai maksimum tunduk pada prosesor yang tersedia per masker afinitas kustom yang sebelumnya Anda tentukan. Misalnya, jika Anda sudah mengatur afinitas kumpulan utas untuk menggunakan 8 dari 32 prosesor, dan Anda sekarang mengatur NumThreads ke -10, maka batas atas pada kumpulan utas akan 10 kali 8, atau 80 utas.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.
Parsing \ Pendek \ PriorityRatio int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk memastikan bahwa utas prioritas yang lebih rendah terkadang dijalankan bahkan ketika antrean prioritas yang lebih tinggi tidak kosong. 0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
Parsing \ Pendek \ StackSizeKB int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk menyesuaikan alokasi memori selama eksekusi utas. 64 * prosesor logis Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
Proses \ Concurrency double Nilai titik float presisi ganda yang menentukan algoritma untuk menetapkan target pada jumlah utas yang dapat diantrekan pada satu waktu. 2.0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.

Konkurensi digunakan untuk menginisialisasi kumpulan utas, yang diimplementasikan menggunakan Port Penyelesaian IO di Windows.
Proses \ GroupAffinity string Array nilai heksadesimal yang sesuai dengan grup prosesor pada sistem, digunakan untuk mengatur afinitas utas pemrosesan ke prosesor logis di setiap grup prosesor. tidak ada Anda dapat menggunakan properti ini untuk membuat afinitas kustom. Properti kosong secara default.

Lihat Mengatur GroupAffinity untuk mendefinisikan utas ke prosesor dalam grup prosesor untuk detailnya.
Proses \ MaxThreads int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah maksimum utas untuk disertakan dalam kumpulan utas. 0 0 menunjukkan server menentukan default. Secara default, server mengatur nilai ini ke nilai absolut 64, atau jumlah prosesor logis, mana pun yang lebih tinggi. Misalnya, pada sistem 64-core dengan hyperthreading diaktifkan (menghasilkan 128 prosesor logis), maksimum kumpulan utas adalah 128 utas.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis. Misalnya, ketika diatur ke -10 di server yang memiliki 32 prosesor logis, maksimumnya adalah 320 utas.

Nilai maksimum tunduk pada prosesor yang tersedia per masker afinitas kustom apa pun yang sebelumnya Anda tentukan. Misalnya, jika Anda sudah mengatur afinitas kumpulan utas untuk menggunakan 8 dari 32 prosesor, dan Anda sekarang mengatur MaxThreads ke -10, maka batas atas pada kumpulan utas akan 10 kali 8, atau 80 utas.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.

Informasi selengkapnya tentang penyetelan pengaturan kumpulan utas dapat ditemukan di Panduan Operasi Analysis Services.
Proses \ MinThreads int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah minimum utas untuk melakukan pra-alokasi untuk kumpulan utas. 0 0 menunjukkan server menentukan default. Secara default, minimumnya adalah 1.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.

Informasi selengkapnya tentang penyetelan pengaturan kumpulan utas dapat ditemukan di Panduan Operasi Analysis Services.
Proses \ PriorityRatio int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk memastikan bahwa utas prioritas yang lebih rendah terkadang dijalankan bahkan ketika antrean prioritas yang lebih tinggi tidak kosong. 2 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
Proses \ StackSizeKB int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk menyesuaikan alokasi memori selama eksekusi utas. 0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
Query \ Concurrency double Nilai titik mengambang presisi ganda yang menentukan algoritma untuk menetapkan target pada jumlah utas yang dapat diantrekan pada satu waktu. 2.0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.

Konkurensi digunakan untuk menginisialisasi kumpulan utas, yang diimplementasikan menggunakan Port Penyelesaian IO di Windows.
Query \ GroupAffinity string Array nilai heksadesimal yang sesuai dengan grup prosesor pada sistem, digunakan untuk mengatur afinitas utas pemrosesan ke prosesor logis di setiap grup prosesor. tidak ada Anda dapat menggunakan properti ini untuk membuat afinitas kustom. Properti kosong secara default.

Lihat Mengatur GroupAffinity untuk mendefinisikan utas ke prosesor dalam grup prosesor untuk detailnya.
Query \ MaxThreads int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah maksimum utas untuk disertakan dalam kumpulan utas. 0 0 menunjukkan server menentukan default. Secara default, server mengatur nilai ini ke nilai absolut 10, atau 2 kali jumlah prosesor logis, mana pun yang lebih tinggi. Misalnya, pada sistem 4-core dengan hyperthreading, jumlah utas maksimum adalah 16.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis. Misalnya, ketika diatur ke -10 di server yang memiliki 32 prosesor logis, maksimumnya adalah 320 utas.

Nilai maksimum tunduk pada prosesor yang tersedia per masker afinitas kustom apa pun yang sebelumnya Anda tentukan. Misalnya, jika Anda sudah mengatur afinitas kumpulan utas untuk menggunakan 8 dari 32 prosesor, dan Anda sekarang mengatur MaxThreads ke -10, maka batas atas pada kumpulan utas akan 10 kali 8, atau 80 utas.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.

Informasi selengkapnya tentang penyetelan pengaturan kumpulan utas dapat ditemukan di Panduan Operasi Analysis Services.
Query \ MinThreads int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah minimum utas untuk melakukan pra-alokasi untuk kumpulan utas. 0 0 menunjukkan server menentukan default. Secara default, minimumnya adalah 1.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.

Informasi selengkapnya tentang penyetelan pengaturan kumpulan utas dapat ditemukan di Panduan Operasi Analysis Services.
Query \ PriorityRatio int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk memastikan bahwa utas prioritas yang lebih rendah terkadang dijalankan bahkan ketika antrean prioritas yang lebih tinggi tidak kosong. 2 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
Query \ StackSizeKB int Bilangan bulat 32-bit yang ditandatangani yang dapat digunakan untuk menyesuaikan alokasi memori selama eksekusi utas. 0 Properti tingkat lanjut yang tidak boleh Anda ubah, kecuali di bawah panduan dukungan Microsoft.
VertiPaq \ Cpu int Bilangan bulat 32-bit yang ditandatangani yang menentukan jumlah maksimum prosesor yang akan digunakan untuk kueri tabular. 0 0 menunjukkan server menentukan default. Secara default, server mengatur nilai ini ke nilai absolut 10, atau 2 kali jumlah prosesor logis, mana pun yang lebih tinggi. Misalnya, pada sistem 4-core dengan hyperthreading, jumlah utas maksimum adalah 16.

Jika Anda mengatur nilai ini ke nilai negatif, server mengalikan nilai tersebut dengan jumlah prosesor logis. Misalnya, ketika diatur ke -10 di server yang memiliki 32 prosesor logis, maksimumnya adalah 320 utas.

Nilai maksimum tunduk pada prosesor yang tersedia per masker afinitas kustom apa pun yang sebelumnya Anda tentukan. Misalnya, jika Anda sudah mengatur afinitas kumpulan utas untuk menggunakan 8 dari 32 prosesor, dan Anda sekarang mengatur MaxThreads ke -10, maka batas atas pada kumpulan utas akan 10 kali 8, atau 80 utas.

Nilai aktual yang digunakan untuk properti kumpulan utas ini ditulis ke file log msmdsrv saat layanan dimulai.
VertiPaq \ GroupAffinity string Array nilai heksadesimal yang sesuai dengan grup prosesor pada sistem, digunakan untuk mengatur afinitas utas pemrosesan ke prosesor logis di setiap grup prosesor. tidak ada Anda dapat menggunakan properti ini untuk membuat afinitas kustom. Properti kosong secara default.

Lihat Mengatur GroupAffinity untuk mendefinisikan utas ke prosesor dalam grup prosesor untuk detailnya. Hanya berlaku untuk Tabular.

Mengatur GroupAffinity untuk mendefinisikan utas ke prosesor dalam grup prosesor

GroupAffinity disediakan untuk tujuan penyetelan tingkat lanjut. Anda dapat menggunakan properti GroupAffinity untuk mengatur afinitas antara kumpulan utas SQL Server Analysis Services dan prosesor tertentu; namun, untuk sebagian besar penginstalan, SQL Server Analysis Services berkinerja terbaik ketika dapat menggunakan semua prosesor logis yang tersedia. Dengan demikian, afinitas grup tidak ditentukan secara default.

Jika pengujian performa menunjukkan kebutuhan akan pengoptimalan CPU, Anda mungkin mempertimbangkan pendekatan tingkat yang lebih tinggi, seperti menggunakan Windows Server Resource Manager untuk mengatur afinitas antara prosesor logis dan proses server. Pendekatan seperti itu bisa lebih mudah diterapkan dan dikelola daripada mendefinisikan afinitas kustom untuk kumpulan utas individual.

Jika pendekatan tersebut tidak mencukupi, Anda dapat mencapai presisi yang lebih besar dengan menentukan afinitas kustom untuk kumpulan utas. Menyesuaikan pengaturan afinitas lebih mungkin direkomendasikan pada sistem multi-inti besar (NUMA atau non-NUMA) yang mengalami penurunan performa karena kumpulan utas yang tersebar di berbagai prosesor yang terlalu luas. Meskipun Anda dapat mengatur GroupAffinity pada sistem yang memiliki kurang dari 64 prosesor logis, manfaatnya dapat diabaikan dan bahkan mungkin menurunkan performa.

Catatan

GroupAffinity dibatasi oleh edisi yang membatasi jumlah inti yang digunakan oleh SQL Server Analysis Services. Saat memulai, SQL Server Analysis Services menggunakan informasi edisi dan properti GroupAffinity untuk menghitung masker afinitas untuk setiap kumpulan utas yang dikelola oleh SQL Server Analysis Services. Edisi standar dapat menggunakan maksimum 24 core. Jika Anda menginstal SQL Server Analysis Services edisi standar pada sistem multi-core besar yang memiliki lebih dari 24 core, SQL Server Analysis Services hanya akan menggunakan 24 inti. Untuk informasi selengkapnya tentang maksimum prosesor, lihat batas skala lintas kotak di Fitur menurut edisi di SQL Server.

Sintaks

Nilainya heksadesimal untuk setiap grup prosesor, dengan heksadesimal yang mewakili prosesor logis yang SQL Server Analysis Services coba gunakan terlebih dahulu saat mengalokasikan utas untuk kumpulan utas tertentu.

Bitmask untuk Prosesor Logis

Anda dapat memiliki hingga 64 prosesor logis dalam satu grup prosesor. Bitmask adalah 1 (atau 0) untuk setiap prosesor logis dalam grup yang digunakan (atau tidak digunakan) oleh kumpulan utas. Setelah Anda menghitung bitmask, Anda kemudian menghitung nilai heksadesimal sebagai nilai untuk GroupAffinity.

Beberapa grup prosesor

Grup prosesor ditentukan pada startup sistem. GroupAffinity menerima nilai heksadesimal untuk setiap grup prosesor dalam daftar yang dibatasi koma. Mengingat beberapa grup prosesor (hingga 10 pada sistem akhir yang lebih tinggi), Anda dapat melewati grup individual dengan menentukan 0x0. Misalnya, pada sistem dengan empat grup prosesor (0, 1, 2, 3), Anda dapat mengecualikan grup 0 dan 2 dengan memasukkan 0x0 untuk nilai pertama dan ketiga.

<GroupAffinity>0x0, 0xFF, 0x0, 0xFF</GroupAffinity>

Langkah-langkah untuk menghitung masker afinitas prosesor

Anda dapat mengatur GroupAffinity di msmdsrv.ini atau di halaman properti server di SQL Server Management Studio.

  1. Menentukan jumlah prosesor dan grup prosesor

    Anda dapat mengunduh utilitas Coreinfo dari winsysinternals.

    Jalankan coreinfo untuk mendapatkan informasi ini dari bagian Prosesor Logis ke Peta Grup. Baris terpisah dihasilkan untuk setiap prosesor logis.

  2. Urutan prosesor, dari kanan ke kiri: 7654 3210

    Contohnya hanya menunjukkan 8 prosesor (0 hingga 7), tetapi grup prosesor dapat memiliki maksimum 64 prosesor logis, dan mungkin ada hingga 10 grup prosesor di server Windows kelas perusahaan.

  3. Menghitung bitmask untuk grup prosesor yang ingin Anda gunakan

    7654 3210

    Ganti angka dengan 0 atau 1, tergantung pada apakah Anda ingin mengecualikan atau menyertakan prosesor logis. Pada sistem yang memiliki delapan prosesor, perhitungan Anda mungkin terlihat seperti ini jika Anda ingin menggunakan prosesor 7, 6, 5, 4, dan 1 untuk Analysis Services:

    1111 0010

  4. Mengonversi angka biner menjadi nilai Hex

    Menggunakan kalkulator atau alat konversi, konversikan angka biner ke setara heksadesimalnya. Dalam contoh kami, 1111 0010 mengonversi ke 0xF2.

  5. Masukkan nilai hex di properti GroupAffinity

    Di msmdsrv.ini atau di halaman properti server di Management Studio, atur GroupAffinity ke nilai yang dihitung di langkah 4.

Penting

Mengatur GroupAffinity adalah tugas manual yang mencakup beberapa langkah. Saat menghitung GroupAffinity, periksa perhitungan Anda dengan hati-hati. Meskipun SQL Server Analysis Services akan mengembalikan kesalahan jika seluruh masker tidak valid, kombinasi pengaturan yang valid dan tidak valid menghasilkan SQL Server Analysis Services mengabaikan properti. Misalnya, jika bitmask menyertakan nilai tambahan, SQL Server Analysis Services mengabaikan pengaturan, menggunakan semua prosesor pada sistem. Tidak ada kesalahan atau peringatan untuk memperingatkan Anda ketika tindakan ini terjadi, tetapi Anda dapat memeriksa file msmdsrv.log untuk mempelajari bagaimana afinitas benar-benar diatur.

Atur PerNumaNode untuk mendefinisikan utas IO ke prosesor dalam simpul NUMA

Untuk instans Analysis Services multidimensi, Anda dapat mengatur PerNumaNode pada kumpulan utas IOProcess untuk lebih mengoptimalkan penjadwalan dan eksekusi utas. Sedangkan GroupAffinity mengidentifikasi set prosesor logis mana yang akan digunakan untuk kumpulan utas tertentu, PerNumaNode melangkah lebih jauh dengan menentukan apakah akan membuat beberapa kumpulan utas, selanjutnya diafinisisikan ke beberapa subset prosesor logis yang diizinkan.

Nilai yang valid untuk PerNumaNode adalah -1, 0, 1, 2, seperti yang dijelaskan di bagian Referensi Properti Kumpulan Utas dalam topik ini.

Pada sistem yang memiliki simpul NUMA, sebaiknya gunakan pengaturan default PerNumaNode=-1, memungkinkan SQL Server Analysis Services untuk menyesuaikan jumlah kumpulan utas dan afinitas utasnya berdasarkan jumlah simpul. Jika sistem memiliki kurang dari 4 simpul, SQL Server Analysis Services mengimplementasikan perilaku yang dijelaskan oleh PerNumaNode=0, sedangkan PerNumaNode=1 digunakan pada sistem yang memiliki 4 simpul atau lebih.

Memilih nilai

Anda juga dapat mengambil alih default untuk menggunakan nilai lain yang valid.

Mengatur PernumaNode=0

Simpul NUMA diabaikan. Hanya akan ada satu kumpulan utas IOProcess, dan semua utas di kumpulan utas tersebut akan diafinitisasi ke semua prosesor logis. Secara default (di mana PerNumaNode=-1), ini adalah pengaturan operasi jika komputer memiliki kurang dari 4 simpul NUMA.

Numa, prosesor, dan gambar korespondensi kumpulan utas #1

Mengatur PernumaNode=1

Kumpulan utas IOProcess dibuat untuk setiap simpul NUMA. Memiliki kumpulan utas terpisah meningkatkan akses terkoordinasi ke sumber daya lokal, seperti cache lokal pada simpul NUMA.

Numa, prosesor, dan gambar korespondensi kumpulan utas #2

Mengatur PernumaNode=2

Pengaturan ini untuk sistem kelas atas yang menjalankan beban kerja intensif. Properti ini menetapkan afinitas kumpulan utas IOProcess pada tingkat yang paling terperinci, membuat dan mendefinisikan kumpulan utas terpisah pada tingkat prosesor logis.

Dalam contoh berikut, pada sistem yang memiliki 4 simpul NUMA dan 32 prosesor logis, mengatur PerNumaNode ke 2 akan menghasilkan 32 kumpulan utas IOProcess. Utas di 8 kumpulan utas pertama akan diafinitisasi ke semua prosesor logis di simpul NUMA 0, tetapi dengan prosesor ideal diatur ke 0, 1, 2, hingga 7. 8 kumpulan utas berikutnya akan diafinisisikan ke semua prosesor logis di simpul NUMA 1, dengan prosesor ideal diatur ke 8, 9, 10, hingga 15, dan sebagainya.

Numa, prosesor, dan gambar korespondensi kumpulan utas #3

Pada tingkat afinitas ini, penjadwal selalu mencoba menggunakan prosesor logis yang ideal terlebih dahulu, dalam simpul NUMA pilihan. Jika prosesor logis tidak tersedia, penjadwal memilih prosesor lain dalam simpul yang sama, atau dalam grup prosesor yang sama jika tidak ada utas lain yang tersedia. Untuk informasi dan contoh selengkapnya, lihat Pengaturan Konfigurasi Analysis Services 2012 (Blog Wordpress).

Distribusi kerja di antara utas IOProcess

Saat Anda mempertimbangkan apakah akan mengatur properti PerNumaNode , mengetahui bagaimana utas IOProcess digunakan dapat membantu Anda membuat keputusan yang lebih tepat.

Ingat bahwa IOProcess digunakan untuk pekerjaan IO yang terkait dengan kueri mesin penyimpanan di mesin multidimensi.

Ketika segmen dipindai, mesin mengidentifikasi partisi tempat segmen berada, dan mencoba mengantre pekerjaan segmen ke kumpulan utas yang digunakan oleh partisi. Secara umum, semua segmen milik partisi akan mengantrekan tugas mereka ke kumpulan utas yang sama. Pada sistem NUMA, perilaku ini sangat menguntungkan karena semua pemindaian untuk partisi akan menggunakan memori dalam cache sistem file yang dialokasikan secara lokal ke simpul NUMA tersebut.

Skenario berikut menyarankan penyesuaian yang terkadang dapat meningkatkan performa kueri pada sistem NUMA:

  • Untuk grup pengukuran yang kurang dipartisi (misalnya, memiliki partisi tunggal), tingkatkan jumlah partisi. Hanya menggunakan satu partisi akan menyebabkan mesin selalu mengantre tugas ke satu kumpulan utas (kumpulan utas 0). Menambahkan lebih banyak partisi memungkinkan mesin untuk menggunakan kumpulan utas tambahan.

    Atau, jika Anda tidak dapat membuat partisi tambahan, coba atur PerNumaNode=0 sebagai cara untuk meningkatkan jumlah utas yang tersedia untuk kumpulan utas 0.

  • Untuk database di mana pemindaian segmen didistribusikan secara merata di beberapa partisi, mengatur PerNumaNode ke 1 atau 2 dapat meningkatkan performa kueri karena meningkatkan jumlah keseluruhan kumpulan utas IOProcess yang digunakan oleh sistem.

  • Untuk solusi yang memiliki beberapa partisi, tetapi hanya satu yang sangat dipindai, coba atur PerNumaNode=0 untuk melihat apakah itu meningkatkan performa.

Meskipun pemindaian partisi dan dimensi menggunakan kumpulan utas IOProcess , pemindaian dimensi hanya menggunakan kumpulan utas 0. Ini dapat mengakibatkan beban yang sedikit tidak merata pada kumpulan utas itu, tetapi ketidakseimbangannya harus bersifat sementara, karena pemindaian dimensi cenderung sangat cepat dan jarang.

Catatan

Saat mengubah properti server, ingatlah bahwa opsi konfigurasi berlaku untuk semua database yang berjalan pada instans. Pilih pengaturan yang menguntungkan database terpenting, atau jumlah database terbesar. Anda tidak dapat mengatur afinitas prosesor di tingkat database, Anda juga tidak dapat mengatur afinitas antara partisi individual dan prosesor tertentu.

Untuk informasi selengkapnya tentang arsitektur pekerjaan, lihat bagian 2.2 di Panduan Performa SQL Server Analysis Services.

Seperti yang dijelaskan di bagian 2.4 dari Panduan Operasi Analysis Services, jika Anda meningkatkan kumpulan utas pemrosesan, Anda harus memastikan bahwa pengaturan CoordinatorExecutionMode , serta pengaturan CoordinatorQueryMaxThreads , memiliki nilai yang memungkinkan Anda untuk menggunakan sepenuhnya ukuran kumpulan utas yang ditingkatkan.

Analysis Services menggunakan utas koordinator untuk mengumpulkan data yang diperlukan untuk menyelesaikan permintaan pemrosesan atau kueri. Koordinator pertama-tama mengantre satu pekerjaan untuk setiap partisi yang harus disentuh. Masing-masing pekerjaan tersebut kemudian terus mengantre lebih banyak pekerjaan, tergantung pada jumlah total segmen yang harus dipindai di partisi.

Nilai default untuk CoordinatorExecutionMode adalah -4, yang berarti batas 4 pekerjaan secara paralel per inti, yang membatasi jumlah total pekerjaan koordinator yang dapat dijalankan secara paralel oleh permintaan subkubus di mesin penyimpanan.

Nilai default untuk CoordinatorQueryMaxThreads adalah 16, yang membatasi jumlah pekerjaan segmen yang dapat dijalankan secara paralel untuk setiap partisi.

Menentukan pengaturan kumpulan utas saat ini

Pada setiap startup layanan, SQL Server Analysis Services menghasilkan pengaturan kumpulan utas saat ini ke dalam file msmdsrv.log, termasuk utas minimum dan maksimum, masker afinitas prosesor, dan konkurensi.

Contoh berikut adalah kutipan dari file log, memperlihatkan pengaturan default untuk kumpulan utas Kueri (MinThread=0, MaxThread=0, Concurrency=2), pada sistem 4-core dengan hyper-threading diaktifkan. Masker afinitas 0xFF, menunjukkan 8 prosesor logis. Perhatikan bahwa nol di depan ditambahkan ke masker. Anda dapat mengabaikan nol di awal.

"10/28/2013 9:20:52 AM) Message: The Query thread pool now has 1 minimum threads, 16 maximum threads, and a concurrency of 16. Its thread pool affinity mask is 0x00000000000000ff. (Source: \\?\C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\Log\msmdsrv.log, Type: 1, Category: 289, Event ID: 0x4121000A)"

Ingat bahwa algoritma untuk mengatur MinThread dan MaxThread menggabungkan konfigurasi sistem, terutama jumlah prosesor. Posting blog berikut ini menawarkan wawasan tentang bagaimana nilai dihitung: Pengaturan Konfigurasi Analysis Services 2012 (Blog Wordpress). Perhatikan bahwa pengaturan dan perilaku ini tunduk pada penyesuaian dalam rilis berikutnya.

Daftar berikut menunjukkan contoh pengaturan masker afinitas lainnya, untuk kombinasi prosesor yang berbeda:

  • Afinitas untuk prosesor 3-2-1-0 pada sistem inti 8 menghasilkan bitmask ini: 00001111, dan nilai heksadesimal: 0xF

  • Afinitas untuk prosesor 7-6-5-4 pada sistem inti 8 menghasilkan bitmask ini: 11110000, dan nilai heksadesimal: 0xF0

  • Afinitas untuk prosesor 5-4-3-2 pada sistem inti 8 menghasilkan bitmask ini: 00111100, dan nilai heksadesimal: 0x3C

  • Afinitas untuk prosesor 7-6-1-0 pada sistem inti 8 menghasilkan bitmask ini: 11000011, dan nilai heksadesimal: 0xC3

Ingat bahwa pada sistem yang memiliki beberapa grup prosesor, masker afinitas terpisah dihasilkan untuk setiap grup, dalam daftar yang dipisahkan koma.

Tentang msmdsrv.ini

File msmdsrv.ini di SQL Server Analysis Services berisi pengaturan konfigurasi untuk instans, yang memengaruhi semua database yang berjalan pada instans tersebut. Anda tidak dapat menggunakan properti konfigurasi server untuk mengoptimalkan performa hanya satu database untuk pengecualian semua database lainnya. Namun, Anda dapat menginstal beberapa instans SQL Server Analysis Services dan mengonfigurasi setiap instans untuk menggunakan properti yang menguntungkan database yang berbagi karakteristik atau beban kerja yang sama.

Semua properti konfigurasi server disertakan dalam file msmdsrv.ini. Subset properti yang lebih mungkin dimodifikasi juga muncul di alat administrasi, seperti SSMS. Konten msmdsrv.ini identik untuk instans tabular dan multidimensi, namun, beberapa pengaturan hanya berlaku untuk satu mode. Perbedaan perilaku berdasarkan mode server dicatat dalam dokumentasi referensi properti.

Lihat juga

Tentang proses dan utas
Beberapa Prosesor
Grup Prosesor
Panduan Operasi SQL Server Analysis Services