Buffer Pool--内存相关术语

虚拟地址空间(virtual address space):

供应用程序能够申请访问的最大地址空间,32位系统上为4GB,64位系统上是8TB,虚拟地址空间映射的数据不一定存放在物理内存中,还可能存放在页面文件(page file)中

 

Reserved Memory(保留内存):

应用程序通过windows api向虚拟地址空间上申请保留的一块内存地址空间,该空间不是物理内存空间,甚至尚未分配空间/建立页面映射

 

保留内存只是虚拟内存空间上的一段地址,而非真正的物理内存空间,甚至根本没有分配空间/建立页面映射

 

保留地址空间不能被其他程序访问

 

Committed Memory(提交内存)

将预先保留(reserved)内存正式提交(committed)使用,提交的页面在访问时最终转化成物理内存中的有效页面,即在物理内存中申请到一段空间来存放数据。

 

 

Shared Memory(共享内存):

在进程和操作系统间可以相互共享的内存,对多个进程可见的内存或存在于多个进程的虚拟地址空间

 

 

Private Bytes

某个进程提交的地址空间(committed memory),非共享部分

 

 

Working set(工作集)

进程提交的并且存放在物理内存的内存空间

 

Page Fault(页面访问错误)

1.soft Page Fault:目标页面不存在于当前工作集下,需要一次跳转才能访问到的其他进程工作集下的物理地址空间,成为软错误,该错误切换速度快,可以不考虑

2.Hard Page Fault:目标页面存在硬盘上,需要一次硬盘读,管理员需要关注该错误

 

System Working Set:

系统使用的物理内存

 

System Cache:

用于映射在系统高速缓存中打开的文件页面,以提高磁盘IO任务的速度

 

Non Paged Pool:

包括一定范围的系统虚拟地址的内存交换区,保证在任何时候都驻留在物理内存的页面

 

Paged Pool:

系统空间中可以调入调出系统进程工作集的虚拟内存区域,页交换区在系统初始化时建立,被内存模式组件用来分配系统内存

 

stack(栈)

每个线程有两个栈,一个内核模式(kenel model),一个用户模式(user model)

 

Lock Page In Memory:

当SQL的启动系统有Lock Page In Memory的权限时,会将申请到的物理内存一直锁住不释放,不会被Windows的换页机制换出到磁盘上。

但当windows有内存压力时,SQL Server仍需释放内存。

SQL Server企业版会默认开启该选项

 

 

 

SQL Server中NonBuffer Pool中的内存在windows存在内存压力时也不释放。

 

SQL Server中Min Server Memoery 是逻辑概念,不表示SQL Server 使用最小物理内存数,当SQL Server申请内存超过该值后,SQL server内存值到达该值后便不会在释放

SQL Server中Max Server Memoery 是逻辑概念,表示SQL sever的使用内存不超过该值,但该值不代表物理内存值。

 

请不要使用sp_configure ‘set working set size‘来配置内存,可能会引发错误

 

Buffer Pool--内存相关术语

上一篇:开源SDK


下一篇:http server v0.1_http_server.c