程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 如何配置SQL Server使用Windows系統的Large-Page allocations

如何配置SQL Server使用Windows系統的Large-Page allocations

編輯:關於SqlServer

今天,一個可改變控制的實現激使我去寫這篇文章,這個可改變的控制就是允許運行在Windows200864位服務器上的SQLSERVER2005企業版上

使用跟蹤標志834,SQLSERVER會利用 Large-Page allocations去構建內存中的Buffer Pool。

下面是我對 Large-Page allocations的理解和這個Large-Page allocations對性能的提升

頁面分配

虛擬地址空間(VirtualAddressSpace,VAS)由很多的內存頁面組成。這些頁面有兩種大小,小的頁面只有4KB大小(IA64位系統上是8KB)

大的頁面在64位系統上有2MB大小(IA64位系統上是16MB)。

虛擬地址空間(VirtualAddressSpace,VAS)是由頁面描述符表這種結構來維護的,因此,每個虛擬地址空間在頁面描述符表裡都有對應頁面表入口

(個人感覺類似於系統服務描述符表SSDT ,內核描述符表GDT/LDT)。硬件利用這個表將這些入口轉譯出可讀的格式,無論什麼時候轉譯一個虛擬地址,

都必須去這張表找虛擬地址的入口。為了加快查找表上這些入口的進程,CPU維護了一塊緩存叫做:Translation Look-Aside Buffer (TLB)

TLB的工作方式類似於SQLSERVER的執行計劃緩存,只要一個入口曾經被轉譯過下次就不需要再次轉譯。

知道這個,就很容易去理解大的頁面和小的頁面對性能的差別。當一個進程的虛擬地址空間(VirtualAddressSpace,VAS)(每個進程只有一個虛擬地址空間,

虛擬地址空間=一個進程使用的內存)是由小的內存頁面構成的,那麼在頁面描述符表裡的入口就需要相應增加,同時TLB緩存的入口數也會相應增加。

舉個例子,有幾個虛擬地址空間需要被緩存,使用小頁面(一個頁面4KB)就i需要在TLB中緩存更多的入口。更多的入口意味著無論什麼時候接收到

一個新的轉譯請求,TLB的入口緩存就需要更多去循環利用。因此使用大頁面去分配虛擬地址空間在性能上會有一定的提升。

大的頁面2MB大小,小的頁面4KB大小,比如一個進程需要8MB內存,那麼需要4個大頁面或者2000個小頁面

所以使用小頁面來分配虛擬地址空間,就需要在TLB緩存更多的入口,但是TLB緩存的大小是有限的!!

我個人對頁面描述符表的理解:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved