Haruskah saya menonaktifkan HyperThreading

8

LATAR BELAKANG Saya baru-baru ini melihat ke dalam waktu tunggu CXPacket yang cukup tinggi baru-baru ini yang membuat saya menggunakan SQL Sentry untuk memantau aktivitas prosesor dengan cukup cermat.

Satu hal yang saya perhatikan sebagai hasilnya adalah kami memiliki lonjakan besar dalam pengalihan konteks. Di bawah ini adalah sampel 5 menit tetapi pola ini sangat umum sepanjang hari.

Konteks

Seperti yang Anda lihat, paku ini cukup teratur. Sekarang pemahaman saya tentang ini akan membuat saya percaya bahwa ini akan menjadi hasil dari tekanan CPU. Namun selama waktu itu hampir tidak mendapatkan lebih dari 60%.

Prosesor

Setelah beberapa penelitian ini membuat saya percaya bahwa ini terjadi sebagai akibat dari hyper threading. Saya tahu saya sudah membaca sebelumnya beberapa bahaya hyper threading. Namun itu ditulis looooong waktu yang lalu.

Untuk membuat cerita panjang pendek. Apakah hyper threading kemungkinan menjadi penyebab lonjakan konteks ini? Apakah mungkin pengalihan konteks berdampak negatif pada pertanyaan paralel saya? Haruskah saya menonaktifkan hyper threading di lingkungan saya?

PEMBARUAN meskipun hal khusus ini terjadi di lingkungan saya, pertanyaan pada intinya lebih universal. Seberapa besar dampak pengalihan konteks tingkat tinggi terhadap permintaan paralel? Bisakah hyper threading menyebabkan masalah seperti ini?

Pada akhirnya sebagian besar dari apa yang saya temukan di internet menunjukkan bahwa hyper threading dan SQL Server bukan teman yang baik, namun kebanyakan info yang sangat tanggal.

Sistem Saya Ada banyak pertanyaan konfigurasi sehingga saya akan membahasnya di sini sehingga dapat dikesampingkan. Kami memiliki pengaturan daya pada kinerja di kedua OS tingkat bio. Maxdop kami diatur ke 8 dan ambang biaya untuk paralelisme adalah 25. Kami memiliki 32 core logis dan 16 fisik. Ini juga sebagian besar merupakan skenario pemuatan data warehouse.

Zane
sumber
11
Kecuali jika perangkat keras Anda benar-benar tua, pertama saya akan mempertimbangkan untuk menurunkan MAXDOP dan / atau meningkatkan ambang biaya untuk paralelisme. Mungkin Anda memiliki kueri yang terlalu pendek / lebih kecil yang paralel. (Dan saya pikir menonaktifkan HT mungkin tidak memiliki dampak positif yang Anda harapkan.)
Aaron Bertrand
1
Apa rencana kekuatan Anda diatur untuk seimbang dibandingkan dengan kinerja tinggi?
Kin Shah
Untuk membonceng komentar @ aaronbertand. Maxdop saat ini adalah 8 untuk 32 core logis. Saya harus memeriksa ulang ambang biaya karena saya tidak ingat nomornya begitu saja.
Zane
@kin kinerja tinggi diatur saat ini.
Zane
1
@Ane di windows atau di BIOS?
Tom V - coba topanswers.xyz

Jawaban:

1

Seringkali menunjukkan tidak lebih dari pertanyaan tertentu yang dijalankan dengan paralelisme; Menunggu CXPACKET di server bukan merupakan tanda langsung masalah, meskipun mereka mungkin merupakan gejala dari masalah lain.

Jika server meng-host gudang data atau tipe pelaporan basis data yang menerima kueri volume rendah tetapi memproses data dalam jumlah besar, paralelisme dapat secara substansial mengurangi waktu yang diperlukan untuk menjalankan kueri tersebut. Sebaliknya, jika server meng-host database OLTP yang memiliki banyak pertanyaan kecil dan transaksi, maka paralelisme dapat membunuh throughput dan berdampak negatif terhadap kinerja.

Bilamana mungkin, yang terbaik adalah mengisolasi dan memecahkan masalah tipe menunggu yang mendasarinya, karena ini akan mengarah pada peningkatan throughput sistem secara keseluruhan. Sekali lagi, menunggu CXPACKET hanyalah gejala dari masalah dalam banyak kasus, bukan masalah yang sebenarnya

DMV sys.dm_os_latch_stats berisi informasi tentang latch tunggu spesifik yang telah terjadi dalam instance, dan jika salah satu latch top menunggu adalah ACCESS_METHODS_DATASET_PARENT, dalam hubungannya dengan CXPACKET, LATCH_ *, dan SOS_SCHEDULER_YIELD menunggu dari jenis menunggu paralelisme pada sistem adalah penyebab bottlenecking selama eksekusi query, dan mengurangi opsi 'max degree of parallelism' sp_configure mungkin diperlukan untuk menyelesaikan masalah.

Artikel TechNet Magazine ini sudah tua tetapi ia mengatakan untuk mencoba mematikan hyperthreading jika Anda melebihi 5000 per detik per prosesor:

Mengoptimalkan Kinerja CPU SQL Server oleh Zach Nichter

James Rhoat
sumber
Saya tidak menyarankan bahwa menunggu cxpacket adalah tanda masalah. Yang ingin saya ketahui adalah apakah hyper threading dapat menyebabkan lonjakan ini dalam konteks switch, dan jika switch tersebut dapat berdampak negatif terhadap permintaan paralel
Zane