最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

TLB

IT圈 admin 39浏览 0评论

2024年6月3日发(作者:改晓筠)

TLB的基本概念:

TLB:Translationlookasidebuffer,即旁路转换缓冲,或称为页表缓冲;里面存放的是一

些页表文件(虚拟地址到物理地址的转换表)。

X86保护模式下的寻址方式:段式逻辑地址—〉线形地址—〉页式地址;

页式地址=页面起始地址+页内偏移地址;

对应于虚拟地址:叫page(页面);对应于物理地址:叫frame(页框);

X86体系的系统内存里存放了两级页表,第一级页表称为页目录,第二级称为页表。

TLB和CPU里的一级、二级缓存之间不存在本质的区别,只不过前者缓存页表数据,

而后两个缓存实际数据。

二:内部组成:

1:TLB在X86体系的CPU里的实际应用最早是从Intel的486CPU开始的,在X86体

系的CPU里边,一般都设有如下4组TLB:

第一组:缓存一般页表(4K字节页面)的指令页表缓存(Instruction-TLB);

第二组:缓存一般页表(4K字节页面)的数据页表缓存(Data-TLB);

第三组:缓存大尺寸页表(2M/4M字节页面)的指令页表缓存(Instruction-TLB);

第四组:缓存大尺寸页表(2M/4M字节页面)的数据页表缓存(Data-TLB);

2:TLB命中和TLB失败

果TLB中正好存放着所需的页表,则称为TLB命中(TLBHit);如果TLB中没有所

需的页表,则称为TLB失败(TLBMiss)。

3:TLB条目数

即页表条目数,Entry!

4:TLB的联合方式

1〉全联合方式:AthlonXP

2〉4路联合方式:P4

当CPU执行机构收到应用程序发来的虚拟地址后,首先到TLB中查找相应的页表数据,

如果TLB中正好存放着所需的页表,则称为TLB命中(TLBHit),接下来CPU再依次看TLB

中页表所对应的物理内存地址中的数据是不是已经在一级、二级缓存里了,若没有则到内存

中取相应地址所存放的数据。既然说TLB是内存里存放的页表的缓存,那么它里边存放的

数据实际上和内存页表区的数据是一致的,在内存的页表区里,每一条记录虚拟页面和物理

页框对应关系的记录称之为一个页表条目(Entry),同样地,在TLB里边也缓存了同样大

小的页表条目(Entry)。

1.共享内存概述

共享内存允许两个或更多进程共享一给定的存储区。因为数据不需要在各个进程之间复

制,所以这是最快的一种进程间通信方式。使用共享内存时的关键点在于如何在多个进程之

间对一给定的存储区进行同步访问。

例如若一个进程正在将数据放入共享内存区,则在它做完这一操作之前,其他进程不应

该去取这些数据。通常,信号量被用来实现对共享内存访问的同步。

我们可以修改shmmax内核参数,使SGA存在于一个共享内存段中。

通过修改/proc/sys/kernel/shmmax参数可以达到此目的。

[root@neirongroot]#echo1073741824>/proc/sys/kernel/shmmax

[root@neirongroot]#more/proc/sys/kernel/shmmax

1073741824这里设为1G。

对于shmmax文件的修改,系统重新启动后会复位。可以通过修改/etc/使更改永

久化。

在该文件内添加以下一行=1073741824这个更改在系统重新启动后生

效.

1、设置SHMMAX

SHMMAX

参数定义共享内存段的最大尺寸(以字节为单位)。在设置SHMMAX时,切记SGA的大

小应该适合于一个共享内存段。SHMMAX设置不足可能会导致以下问题:

ORA-27123:unabletoattachtosharedmemorysegment

您可以通过执行以下命令来确定SHMMAX的值:

#cat/proc/sys/kernel/shmmax

33554432

SHMMAX的默认值是32MB。我一般使用下列方法之一种将SHMMAX参数设为

2GB:

通过直接更改/proc文件系统,你不需重新启动机器就可以改变SHMMAX的默认

设置。我使用的方法是将以下命令放入/etc/启动文件中:

#>echo"2147483648">/proc/sys/kernel/shmmax

您还可以使用sysctl命令来更改SHMMAX的值:

#=2147483648

最后,通过将该内核参数插入到/etc/启动文件中,您可以使这种更改永久

有效:

#echo"=2147483648">>/etc/

2、设置SHMMNI

我们现在来看SHMMNI参数。这个内核参数用于设置系统范围内共享内存段的最

大数量。该参数的默认值是4096。这一数值已经足够,通常不需要更改。

您可以通过执行以下命令来确定SHMMNI的值:

#cat/proc/sys/kernel/shmmni

4096

3、设置SHMALL

最后,我们来看SHMALL共享内存内核参数。该参数控制着系统一次可以使用的

共享内存总量(以页为单位)。简言之,该参数的值始终应该至少为:

ceil(SHMMAX/PAGE_SIZE)

SHMALL的默认大小为2097152,可以使用以下命令进行查询:

#cat/proc/sys/kernel/shmall

2097152

SHMALL的默认设置对于我们的Oracle9iRAC安装来说应该足够使用。

注意:在i386平台上RedHatLinux的页面大小为4096字节。但是,您可以

使用bigpages,它支持配置更大的内存页面尺寸。

2024年6月3日发(作者:改晓筠)

TLB的基本概念:

TLB:Translationlookasidebuffer,即旁路转换缓冲,或称为页表缓冲;里面存放的是一

些页表文件(虚拟地址到物理地址的转换表)。

X86保护模式下的寻址方式:段式逻辑地址—〉线形地址—〉页式地址;

页式地址=页面起始地址+页内偏移地址;

对应于虚拟地址:叫page(页面);对应于物理地址:叫frame(页框);

X86体系的系统内存里存放了两级页表,第一级页表称为页目录,第二级称为页表。

TLB和CPU里的一级、二级缓存之间不存在本质的区别,只不过前者缓存页表数据,

而后两个缓存实际数据。

二:内部组成:

1:TLB在X86体系的CPU里的实际应用最早是从Intel的486CPU开始的,在X86体

系的CPU里边,一般都设有如下4组TLB:

第一组:缓存一般页表(4K字节页面)的指令页表缓存(Instruction-TLB);

第二组:缓存一般页表(4K字节页面)的数据页表缓存(Data-TLB);

第三组:缓存大尺寸页表(2M/4M字节页面)的指令页表缓存(Instruction-TLB);

第四组:缓存大尺寸页表(2M/4M字节页面)的数据页表缓存(Data-TLB);

2:TLB命中和TLB失败

果TLB中正好存放着所需的页表,则称为TLB命中(TLBHit);如果TLB中没有所

需的页表,则称为TLB失败(TLBMiss)。

3:TLB条目数

即页表条目数,Entry!

4:TLB的联合方式

1〉全联合方式:AthlonXP

2〉4路联合方式:P4

当CPU执行机构收到应用程序发来的虚拟地址后,首先到TLB中查找相应的页表数据,

如果TLB中正好存放着所需的页表,则称为TLB命中(TLBHit),接下来CPU再依次看TLB

中页表所对应的物理内存地址中的数据是不是已经在一级、二级缓存里了,若没有则到内存

中取相应地址所存放的数据。既然说TLB是内存里存放的页表的缓存,那么它里边存放的

数据实际上和内存页表区的数据是一致的,在内存的页表区里,每一条记录虚拟页面和物理

页框对应关系的记录称之为一个页表条目(Entry),同样地,在TLB里边也缓存了同样大

小的页表条目(Entry)。

1.共享内存概述

共享内存允许两个或更多进程共享一给定的存储区。因为数据不需要在各个进程之间复

制,所以这是最快的一种进程间通信方式。使用共享内存时的关键点在于如何在多个进程之

间对一给定的存储区进行同步访问。

例如若一个进程正在将数据放入共享内存区,则在它做完这一操作之前,其他进程不应

该去取这些数据。通常,信号量被用来实现对共享内存访问的同步。

我们可以修改shmmax内核参数,使SGA存在于一个共享内存段中。

通过修改/proc/sys/kernel/shmmax参数可以达到此目的。

[root@neirongroot]#echo1073741824>/proc/sys/kernel/shmmax

[root@neirongroot]#more/proc/sys/kernel/shmmax

1073741824这里设为1G。

对于shmmax文件的修改,系统重新启动后会复位。可以通过修改/etc/使更改永

久化。

在该文件内添加以下一行=1073741824这个更改在系统重新启动后生

效.

1、设置SHMMAX

SHMMAX

参数定义共享内存段的最大尺寸(以字节为单位)。在设置SHMMAX时,切记SGA的大

小应该适合于一个共享内存段。SHMMAX设置不足可能会导致以下问题:

ORA-27123:unabletoattachtosharedmemorysegment

您可以通过执行以下命令来确定SHMMAX的值:

#cat/proc/sys/kernel/shmmax

33554432

SHMMAX的默认值是32MB。我一般使用下列方法之一种将SHMMAX参数设为

2GB:

通过直接更改/proc文件系统,你不需重新启动机器就可以改变SHMMAX的默认

设置。我使用的方法是将以下命令放入/etc/启动文件中:

#>echo"2147483648">/proc/sys/kernel/shmmax

您还可以使用sysctl命令来更改SHMMAX的值:

#=2147483648

最后,通过将该内核参数插入到/etc/启动文件中,您可以使这种更改永久

有效:

#echo"=2147483648">>/etc/

2、设置SHMMNI

我们现在来看SHMMNI参数。这个内核参数用于设置系统范围内共享内存段的最

大数量。该参数的默认值是4096。这一数值已经足够,通常不需要更改。

您可以通过执行以下命令来确定SHMMNI的值:

#cat/proc/sys/kernel/shmmni

4096

3、设置SHMALL

最后,我们来看SHMALL共享内存内核参数。该参数控制着系统一次可以使用的

共享内存总量(以页为单位)。简言之,该参数的值始终应该至少为:

ceil(SHMMAX/PAGE_SIZE)

SHMALL的默认大小为2097152,可以使用以下命令进行查询:

#cat/proc/sys/kernel/shmall

2097152

SHMALL的默认设置对于我们的Oracle9iRAC安装来说应该足够使用。

注意:在i386平台上RedHatLinux的页面大小为4096字节。但是,您可以

使用bigpages,它支持配置更大的内存页面尺寸。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论