【问题】当我们的ORACLE运行在Linux平台上的场合,是不是利用Linux默认的4K分页管理方式最稳定、性能最好呢?
【分析】Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会按照LRU算法在适当的时候将物理内存中不经常使用的内存页自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。通常情况下,Linux默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸。HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能。
【建议】对于较大的系统内存以及sga,使用hugepage可以极大程度的提高Oracle数据库性能。可以通过编辑 /etc/sysctl.conf 文件设置以下参数:
min_free_kbytes
vfs_cache_pressure
vm.swappiness
vm.nr_hugepages
然后通过以下命令来确认设置是否生效,
grep Huge /proc/meminfo
【问题】当我们的ORACLE运行在Linux平台上的场合,是不是利用Linux默认的4K分页管理方式最稳定、性能最好呢?
【分析】Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会按照LRU算法在适当的时候将物理内存中不经常使用的内存页自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。通常情况下,Linux默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸。HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能。
【建议】对于较大的系统内存以及sga,使用hugepage可以极大程度的提高Oracle数据库性能。可以通过编辑 /etc/sysctl.conf 文件设置以下参数:
min_free_kbytes
vfs_cache_pressure
vm.swappiness
vm.nr_hugepages
然后通过以下命令来确认设置是否生效,
grep Huge /proc/meminfo