伺服器組態:親和性 I/O 遮罩
適用於:SQL Server
為了執行多工作業,Windows 有時會在不同的處理器之間移動處理序執行緒。 雖然從作業系統的觀點來看很有效率,但是在繁重的系統負載下,此活動可能會降低 SQL Server 效能,因為每個處理器快取都會重複地重新載入資料。 將處理器指派給特定的執行緒,可藉由去除處理器的重新載入,而在這些狀況下增進效能;執行緒與處理器之間的這種關聯,稱為處理器相似性。
SQL Server 透過兩個親和性遮罩選項來支援處理器親和性:affinity mask
(也稱為 CPU 親和性遮罩) 與 affinity I/O mask
。 如需 affinity mask
選項的詳細資訊,請參閱設定親和性遮罩伺服器組態選項。 針對擁有 33 到 64 個處理器的伺服器之 CPU 與 I/O 親和性支援,也需要您分別使用 affinity64 遮罩與 affinity64 I/O 遮罩伺服器組態選項。
注意
擁有 33 到 64 個處理器之伺服器的相似性支援只能在 64 位元的作業系統上使用。
affinity I/O mask
選項會將 SQL Server 磁碟 I/O 繫結到指定的 CPU 子集。 在高階的 SQL Server 線上交易處理 (OLTP) 環境中,此延伸模組可強化 SQL Server 執行緒發出 I/O 的效能。 這項增強功能並不支援個別磁碟或磁碟控制器的硬體親和性。
affinity I/O mask
的值可指定在多處理器的電腦中,有哪些 CPU 適合處理 SQL Server 磁碟 I/O 作業。 遮罩是一種點陣圖,其中最右邊的位元會指定最低順位 CPU(0),緊鄰其左側的位元則指定次低順位 CPU(1),依此類推。 若要設定超過 32 個處理器,請同時設定 affinity I/O mask
和 affinity64 I/O mask
。
affinity I/O mask
的值如下:
遮罩中的位元組 | CPU 數目 |
---|---|
1 個位元組 | 最多 8 個 CPU |
2 個位元組 | 最多 16 個 CPU |
3 個位元組 | 最多 24 個 CPU |
4 個位元組 | 最多 32 個 CPU |
若要處理 32 個以上的 CPU,請針對前 32 個 CPU 設定 4 個位元組的 affinity I/O mask
,並針對剩餘的 CPU 設定最多 4 個位元組的 affinity64 I/O mask
。
親和性 I/O 模式中的 1
位元會指定對應的 CPU 符合執行 SQL Server 磁碟 I/O 作業的資格。 0
位元會指定沒有任何一個 SQL Server 磁碟 I/O 作業應該為對應的 CPU 加以排程。 當所有的位元都設為 0
或未指定 affinity I/O mask
時,則 SQL Server 磁碟 I/O 會排程給任何一個符合處理 SQL Server 執行緒資格的 CPU。
因為設定 SQL Server affinity I/O mask
選項是專門的作業,因此請僅在必要時才使用。 在大部分情況下,預設的 Windows 親和性可提供最佳效能。
指定 affinity I/O mask
選項時,您必須搭配使用 affinity mask
組態選項。 請勿同時在 affinity I/O mask
切換開關與 affinity mask
選項中啟用相同的 CPU。 對應到每個 CPU 的位元,應屬於下列三種情況之一:
- 同時在
affinity I/O mask
選項和affinity mask
選項中的0
。 - 在
affinity I/O mask
選項的1
和在affinity mask
選項中的0
。 - 在
affinity I/O mask
選項的0
和在affinity mask
選項中的1
。
affinity I/O mask
選項為進階選項。 若使用 sp_configure
系統預存程序來變更設定,只有當 show advanced options
設為 1
時,才能變更 affinity I/O mask
。 在 SQL Server 中,重新設定 affinity I/O mask
選項需要重新啟動 SQL Server 執行個體。
警告
不要在 Windows 作業系統中設定 CPU 親和性,同時又在 SQL Server 中設定 affinity mask
。 這些設定嘗試達到相同的結果,如果組態不一致,可能會有無法預期的結果。 設定 SQL Server CPU 親和性時,最好使用 SQL Server 中的 sp_configure
系統預存程序。