1. 程式人生 > >5. 跟蹤標記 (Trace Flag) 834, 845 對內存頁行為的影響

5. 跟蹤標記 (Trace Flag) 834, 845 對內存頁行為的影響

AC tran net 用戶 安全 work errorlog 碎片 物理地址

跟蹤標記:834

功能:

在64位的windows環境下,為SQL Server開啟這個跟蹤標記,那麽SQL Server 會使用大頁(Large pages)為內存緩沖區(buffer pool)分配內存,從而可以提高CPU轉換檢測緩沖區(TLB: Translation Lookaside Buffer)的效率得以提升性能;

大頁(Large Pages): 正常情況下windows內存是4KB的頁,而大頁的最小空間是2MB,也就是說分配的時候可能大於2MB;

轉換檢測緩沖區(TLB: Translation Lookaside Buffer):是一個內存管理單元,用於改進虛擬地址到物理地址轉換速度;

如何開啟?

跟蹤標記834只能在啟動SQL Server時開啟

1. 打開SQL Server Configuration Manger;

2. 右擊SQL Server實例選擇屬性(Properties);

3. 在啟動參數 (Startup Parameters) 裏添加-T834;

技術分享圖片

4. 保存並重啟SQL Server實例的服務以生效;

5. 開啟成功的話,在SQL Server errorlog裏可以看到類似字樣:Using large pages in the memory manager.

備註:

1. 大頁 (Large Pages) 分配只在SQL Server 64位+企業版的SQLOS有效;

2. 需要為SQL Server開啟了Lock Pages In Memory (LPIM);

3. 建議只在SQL Server的專用服務器上開啟,否則如果內存碎片太多或者內存不足無法分配大頁,可能會導致SQL Server無法啟動;另外在使用columnstore index的服務器上,也不建議開啟這個跟蹤標記;

跟蹤標記:845

功能:

Locked Pages In Memory(LPIM)是一個windows特性,用於控制Windows進程不使用虛擬內存;

在SQL Server 2012前,如果要對SQL Server進程開啟這一特性,根據版本不同,可能會需要用到跟蹤標記845,詳見下表:

技術分享圖片

SQL Server 2012起,如何開啟LPIM

1. 開始菜單 - 運行 - 輸入gpedit.msc - 回車,以打開組策略;

2. 計算機配置 - Windows 設置 - 安全設置 - 本地策略 - 用戶權利指派

3. 雙擊“鎖定內存中的頁”,在“本地安全策略設置”對話框中,單擊“添加”按鈕添加SQL Server服務賬號並確認;

技術分享圖片

4. 重啟SQL Server服務以使配置生效;

5. 成功開啟LPIM後,在SQL Server errorlog裏可以看到類似字樣:Using locked pages in the memory manager.;

備註:

1. 不難發現,在SQL Server 2012前,64位的標準版裏開啟LPIM會可能會用到跟蹤標記845,從SQL Server 2012之後就再也不需要了;

2. 如果同時開啟834跟蹤標記和LPIM,那麽errorlog只會顯示:Using large pages in the memory manager.,並不會顯示:Using locked pages in the memory manager.,因為開啟跟蹤標記834的前提是開啟了LPIM;

參考:

Trace Flag 834 and When to Use It

https://blogs.technet.microsoft.com/sql_server_isv/2010/11/30/temenos-t24-trace-flag-834-and-when-to-use-it/

Tuning options for SQL Server when running in high performance workloads

https://support.microsoft.com/en-us/help/920093/tuning-options-for-sql-server-when-running-in-high-performance-workloa

SQL Server and Large Pages Explained

https://blogs.msdn.microsoft.com/psssql/2009/06/05/sql-server-and-large-pages-explained/

Server Memory Server Configuration Options

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options#lock-pages-in-memory-lpim

How to enable the "locked pages" feature in SQL Server 2012

https://support.microsoft.com/en-us/help/2659143/how-to-enable-the-locked-pages-feature-in-sql-server-2012

DBCC TRACEON - Trace Flags (Transact-SQL)

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql

5. 跟蹤標記 (Trace Flag) 834, 845 對內存頁行為的影響