精华内容
下载资源
问答
  • hugepage

    2020-08-10 16:20:59
    在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage。 为什么 使用大页? LINUX内存的默认块大小是4K 如果SGA为:128G select 12810241024/4 from dual;33554432个(三千多...

    在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage。
    为什么 使用大页?
    LINUX内存的默认块大小是4K
    如果SGA为:128G
    select 12810241024/4 from dual;33554432个(三千多万),
    select 128*1024/2 from dual; 65536个
    每个内存页,有一个页表项(大概10个字节),记录页的状态、位置
    默认块大小是4K时–页表大小:320M。
    在大页下2M时,页表只占.625M

    在Linux中,每个进程页表独立,有各自的页表。
    如果有1000个进程:1000320M大约是320G。
    而1000个进程使用大页:1000
    0.625=625M
    设置了大页,但没被Oracle使用,原因只有两个:
    (1)SGA_MAX_SIZE超过了大页
    (2)没有设置内存锁
    内存:是进程活动的舞台,ORACLE数据库在startup时会自动去查找是否设置有大页。
    如有,在大页中分配SGA。
    如没有,则正常使用默认数据块大小启动。
    #############
    设置大页步骤:
    1.查看系统当前的大页使用情况:
    [oracle@bys3 ~]$ cat /proc/meminfo |grep Huge
    HugePages_Total: 0
    HugePages_Free: 0
    HugePages_Rsvd: 0
    HugePages_Surp: 0
    Hugepagesize: 2048 kB --大页大小是2M
    BYS@ bys3>show parameter sga_max --查看数据库SGA大小–我的实验机
    NAME TYPE VALUE


    sga_max_size big integer 216M

    1. 设置大页的数量
      –这里是200个*2M=400M,SGA最大216M,大页的内存要大于SGA大小,才能被ORACLE使用,所以我设置200个。

    vi /etc/sysctl.conf
    在里面增加一行:
    vm.nr_hugepages=200
    保存之后执行:
    sysctl -p
    查看: --如果HugePages_Free:未到200,多执行几次sysctl -p
    [root@bys3 ~]# cat /proc/meminfo |grep Huge
    HugePages_Total: 200
    HugePages_Free: 200
    HugePages_Rsvd: 0
    HugePages_Surp: 0
    Hugepagesize: 2048 kB

    3.还需要设置内存锁:-- memlock数量要大于大页的数量–设置为-1,不限制。
    vi /etc/security/limits.conf
    oracle soft memlock -1
    oracle hard memlock -1
    [root@bys3 ~]# ulimit -l
    3500000 -----这个数字就是针对大页数量的限制的,足够用。

    4.重启数据库,大页已经被ORACLE用上了。
    SYS@ bys3>shutdown immediate;
    SYS@ bys3>startup

    重启数据库过程中不断执行;cat /proc/meminfo |grep Huge,能看到HugePages_Free:的数量不断减少,说明大页正在被使用。
    [root@bys3 ~]# cat /proc/meminfo |grep Huge
    HugePages_Total: 200
    HugePages_Free: 101
    HugePages_Rsvd: 10
    HugePages_Surp: 0
    Hugepagesize: 2048 kB

    ========================================
    MOS中明确的参数设置要求
    alter system reset memory_target scope=spfile;
    alter system reset memory_max_target scope=spfile;

    如果dbca以非AMM方式建库会遇到ORA-32010: cannot find entry to delete in SPFILE,也就是说spfile本来就没有这两个参数,错误忽略即可。
    MOS中原文
    If you want to use HugePages make sure that both memory_target / memory_max_target initialization parameters are unset
    unset代表spfile中不允许出现memory_target和memory_max_target(关于这一点,Oracle官方文档中的描述是错误的,而MOS中的一些描述才是正确的)。目前我们实施文档中的标准是设置memory_target,这样其实是没问题的。但是只要再设置memory_max_target就不行了,不管该参数设置为0还是非0,大页都不会生效。所以,正确的配置是memory_target和memory_max_target两个参数都不要出现在spfile中,即都reset掉。

    额外设置的参数
    alter system set use_large_pages=only scope=spfile;
    强制大页生效,如果大页小于sga或者参数配置不符合大页配置规范,实例将无法启动,从根本上杜绝大页不生效的情况,以前确保sga 100%放到hugepage中只能通过vi去alert日志中搜索,这样也可以免除大家检查的复杂性。

    展开全文
  • Hugepage

    2011-10-14 14:16:04
    查看Hugepage: ~> more /proc/meminfo | grep Huge HugePages_Total: 1620 HugePages_Free: 1620 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB  ...

     

    查看Hugepage:

    ~> more /proc/meminfo | grep Huge

    HugePages_Total:    1620

    HugePages_Free:     1620

    HugePages_Rsvd:        0

    HugePages_Surp:        0

    Hugepagesize:       2048 kB

     

    展开全文
  • 对于内存较大的Oracle数据库服务器,配置HugePage是很有必要的,下面是配置Huge的步骤:对于内存较大的Oracle数据库服务器,配置HugePage是很有必要的,下面是配置Huge的步骤:我的环境:OS:CentOS release 6.4 ...

    对于内存较大的Oracle数据库服务器,配置HugePage是很有必要的,下面是配置Huge的步骤:

    对于内存较大的Oracle数据库服务器,配置HugePage是很有必要的,下面是配置Huge的步骤:

    我的环境:

    OS:CentOS release 6.4 (Final)

    Oracle:11.2.0.4 RAC

    Oracle 大内存需要配置HugePage

    在Oracle 11.2.0.3.0上开启大页(HugePages)的详细解析

    Linux HugePages及MySQL 大页配置

    Linux HugePage 特性

    1. 设置memlock

    编辑/etc/security/limits.conf

    增加:

    * Soft memlock 稍小于RAM值

    * hard memlock 稍小于RAM值

    Memlock值大于sga没关系的,所以我们可以设置这个值在我们想要的SGA size和物理内存size之间,这个值得单位是kb。

    [root@node1 ~]# grep -i memtot /proc/meminfo

    MemTotal: 132250576 kB

    我们物理内存大小126G,因此我可以设置memlock为100G。

    在2个节点设置:

    [root@node1 ~]# tail -2 /etc/security/limits.conf

    * soft memlock 104857600

    * hard memlock 104857600

    设置完毕后,以Oracle用户登录验证:

    node2-> ulimit -l

    104857600

    2. 禁用AMM特性:

    禁用AMM特性需要将memory_max_target, memory_max_target2个参数重置,而不仅仅是设置为0,最好的办法是创建一个pfile,在pfile中将这2个参数删除,再根据这个pfile创建spfile.

    主要内存参数设置为:

    node1->

    node1-> grep target /tmp/init.ora

    *.pga_aggregate_target=1572864000

    *.sga_target=64424509440

    SQL> create spfile from pfile='/tmp/init.ora';

    File created.

    SQL> startup force

    ORA-27102: out of memory

    Linux-x86_64 Error: 28: No space left on device

    Additional information: -134217728

    Additional information: 1

    SQL>

    出现这个报错是因为shmall设置的太小。

    Shmall表示共享内存的总大小,单位为pagesize的大小。

    根据我的配置,最大能支持8G的SGA:

    node1-> getconf PAGE_SIZE

    4096

    node1-> cat /proc/sys/kernel/shmall

    2097152

    修改shmall并重新启动数据库,修改的方法很简单,编辑/etc/sysctl.conf:

    kernel.shmall= 16252928

    即可。

    修改完毕kernel.shmall,此时可以重启数据库。

    SQL> startup nomount pfile='/tmp/init.ora';

    ORACLE instance started.

    Total System Global Area 6.4137E+10 bytes

    Fixed Size 2269072 bytes

    Variable Size 6979321968 bytes

    Database Buffers 5.7043E+10 bytes

    Redo Buffers 112762880 bytes

    SQL>

    SQL>

    DB启动后重新创建spfile:

    SQL> create spfile='+OCR/sszgdb/spfilesszgdb.ora' from pfile='/tmp/init.ora';

    File created.

    SQL>

    3. 根据Oracle的脚本计算hugepage大小(计算时要确保Oracle已经启动),也可自己计算:

    Press Enter to proceed...

    Recommended setting: vm.nr_hugepages = 30739

    node1->

    4. 根据脚本的计算值在2个节点编辑/etc/sysctl.conf

    加入vm.nr_hugepages = 30739

    [root@node2 ~]# grep -i huge /proc/meminfo

    AnonHugePages: 602112 kB

    HugePages_Total: 30739

    HugePages_Free: 30739

    HugePages_Rsvd: 0

    HugePages_Surp: 0

    Hugepagesize: 2048 kB停止数据库实例

    5. 重启服务器,一般重启服务器之后DB也自动启动了。服务器和DB重启后可以通过以下命令验证大页的使用情况:

    grep -i Hugepages /proc/meminfo

    此时查看Oracle的alert日志,也可以发现:

    Starting ORACLE instance (normal)

    ************************ Large Pages Information *******************

    Per process system memlock (soft) limit = UNLIMITED

    Total Shared Global Region in Large Pages = 58 GB (96%)

    Large Pages used by this instance: 29761 (58 GB)

    Large Pages unused system wide = 24 (48 MB)

    Large Pages configured system wide = 30739 (60 GB)

    Large Page size = 2048 KB

    RECOMMENDATION:

    Total System Global Area size is 60 GB. For optimal performance,

    prior to the next instance restart:

    1. Increase the number of unused large pages by

    at least 936 (page size 2048 KB, total size 1872 MB) system wide to

    get 100% of the System Global Area allocated with large pages

    可以发现sga并没有全部放在大页里,这样可能对性能带来负面影响,,Oracle建议我们再加入936个大页,可见Oracle的大页脚本计算并不准确,我们需要增加大页数量,并设置参数Use_large_pages=only,该参数确保Oracle的共享内存全部使用大页。

    更多详情见请继续阅读下一页的精彩内容:

    logo.gif

    f68f2add0b68e4f9810432fce46917b7.png

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 因为在X86架构下的linux平台中,配置hugepage时,也是需要关闭AMM,使用ASMM特性。AMM分配内存的方式是在/dev/shm创文件的方式,每个文件大小为granule大小.这种方式和使用huge page的方式不兼容,所以使用huge page...

    在Oracle 12c,测试发现默认并不启用AMM 特性,而是使用了ASMM。因为在X86 架构下的linux 平台中,配置hugepage时,也是需要关闭AMM,使用ASMM特性。

    AMM分配内存的方式是在/dev/shm创文件的方式,每个文件大小为granule大小.这种方式和使用huge page的方式不兼容,所以使用huge page必须要禁掉amm.而使用asmm的方式,是使用传统的共享内存方式.

    在以前使用huge pages时,需要定义db_block_buffers来定义cache buffer使用huge page的数量.其他的内存组件是不能使用huge page的

    现在新增加一个参数,use_large_pages,默认为true,oracle数据库在启动时,先会使用在os层面定义好的huge page数量然后再加上其他的内存,比如现在sga_target=定义了1500M,vm.nr_hugepages=200(MB),会先使用huge page,

    再加上其他定义的1100M,这样就避免了只有db_block_buffers使用huge page的情况.

    [root@prod dbs]# cat /etc/sysctl.conf | grep vm

    vm.nr_hugepages=40

    [root@prod dbs]# cat /etc/security/limits.conf | grep memlock  --要大于hugepage的size

    #        - memlock - max locked-in-memory address space (KB)

    oracle soft memlock 5000000000

    oracle hard memlock 5000000000

    SQL> show parameter use_large_pages;

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    use_large_pages                      string      TRUE

    这样实例在启动时,会用光所有可用的hugepage,不足的部分再按正常的内存去分配.

    Wed Nov 13 04:01:36 2013

    ************************ Large Pages Information *******************

    Wed Nov 13 04:01:36 2013

    Per process system memlock (soft) limit = 4768 GB

    Wed Nov 13 04:01:36 2013

    Total System Global Area in large pages = 78 MB (9%)

    Wed Nov 13 04:01:36 2013

    Large pages used by this instance: 39 (78 MB)

    Wed Nov 13 04:01:36 2013

    Large pages unused system wide = 1 (2048 KB)

    Wed Nov 13 04:01:36 2013

    Large pages configured system wide = 40 (80 MB)

    Wed Nov 13 04:01:36 2013

    Large page size = 2048 KB

    Wed Nov 13 04:01:36 2013

    数据库服务器内存设置——设置大叶内存

    数据库服务器的操作系统内核启动大叶内存选项

    大叶是2M一个页,默认 是4k一个页

    如果数据库连接数很多,每个连接又要访问大量的数据,每个连接对应的进程都要在内存里分空间来存放它所要访问的内存地址映射表,如果这样的进程太多的话,可能会吃掉很多内存

    每1G内存所需要的映射表的大小是2.5M,用大叶内存的话只用不到1M

    $cat /etc/sysctl.conf | grep huge

    vm.nr_hugepages = 45000

    $cat /proc/meminfo | grep Huge

    HugePages_Total: 45000

    HugePages_Free: 6539

    HugePages_Rsvd: 4548

    HugePages_Surp: 0

    Hugepagesize: 2048 kB

    机器的连接数?

    [oracle@prod ~]$ ps -ef | grep oracle | grep "LOCAL=NO"|wc -l

    522

    大致估算一下,64位系统下,一个进程如果要在数据库中访问1G数据的话,需要在内存中分配2M的内存,32位的系统需要1M

    所以可以计算一下,522个会话,每个会话是一个进程,如果每个进程访问1G的数据的话,操作系统需要500*2, 大约是1G的内存来为这些进程创建映射表

    当前正在被使用的映射表占用的内存大小

    [oracle@prod ~]$ cat /proc/meminfo | grep PageTable

    PageTables: 6383288 kB

    当前操作系统内存用于存映射表的大小:6G。

    说明如果不开大叶内存的情况下,调整sga的话,至少需要给系统留出来这些内存,否则系统可能因为内存耗尽

    也就是我这个物理内存64G,不开大叶内存的情况下,至少留个系统6G多。

    按照计算,1个进程如果访问1G数据的话需要2M左右的内存做为映射表,这个机器上有522个会话,映射表总大小是6G,

    说明每个会话平均访问的数据量是5.8G左右

    所以调整sga的时候注意一下,记得给操作系统留出足够的内存

    展开全文
  • 1 hugepage在linux 2.6以后的内核才支持,mysql中只有innodb引擎才支持,hugepage作用:1.减少内存置换2.减少TLB miss次数3.减少swap**启用了hugepage以后,top查看内存被占用很多,但是找不到具体的进程,其实就是...
  • <div><ul><li>in case if ibv_reg_mr is failed then check ... and in case if huge page is detected - ask to set variable RDMAV_HUGEPAGES_SAFE</li></ul>该提问来源于开源项目:openucx/ucx</p></div>
  • Extending Hugepage Feature

    2020-11-28 10:54:45
    - Support hugepage reservation for system-level service / part of original KEP <h3>PRs of container isolation of hugepages <h4>Kubernetes Side <p>PR | Description | Status | Target | Owner -- | -- | -...
  • 最近一直在做性能压测相关的事情,有公众号的读者朋友咨询有赞的数据库服务器有没有开启huge page,我听说过huge page会对性能有所提升,本文就一探究竟。对过程没有兴趣的可以直接看结论。二 Huge Page 来龙去脉2.1...
  • 配置HugePage

    2018-08-13 16:46:00
    什么是HugePage HugePages是Linux内核与2.6版本集成的一个特性。这个特性基本上提供了4K页面大小(IA64为16K)的替代方案,提供更大的页面。HugePages是一种拥有更大页面的方法,它对于处理非常大的内存非常有用。 ....
  • 最近一直在做性能压测相关的事情,有公众号的读者朋友咨询有赞的数据库服务器有没有开启huge page,我听说过huge page会对性能有所提升,本文就一探究竟。对过程没有兴趣的可以直接看结论。二 Huge Page 来龙去脉2.1...
  • 在KVM的测试中,有一项是要测试huge page的使用,所以对Huge Page(巨页)做了一些了解,结合网上的一些资料进行总结一下。 现在,有许多的处理器架构都支持多种的内存页大小,其中就包括比一般的page size大很多的...
  • dpdk hugepage

    千次阅读 2017-04-26 08:56:10
    dpdk hugepage 配置(2.6.39内核为例) 1)内核配置 a、2M hugepage title device  root (hd0,0) kernel /bzImage printk.time=y ramdisk_size=12000 libata.dma=5 hugepages=576 hugepagesz=2M ...
  • Linux huge Page

    2015-07-13 18:40:12
    本文描述了什么是HugePage,以及HugePage的一些特性。 1、Hugepage的引入  操作系统对于数据的存取直接从物理内存要比从磁盘读写数据要快的多,但是物理内存是有限的,这样就引出了物理内存与虚
  • 关闭transparent hugepage

    2019-02-22 19:18:16
    关闭transparent hugepage
  • mysql启用hugepage

    2019-04-01 15:26:04
    1 hugepage在linux 2.6以后的内核才支持,mysql中只有innodb引擎才支持,hugepage作用: 1.减少内存置换 2.减少TLB miss次数 3.减少swap **启用了hugepage以后,top查看内存被占用很多,但是找不到具体的进程,...
  • Linux HugePage 特性

    2019-08-13 14:03:28
    HugePage,就是指的大页内存管理方式。与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效。本文描述了什么是HugePage,以及HugePage的一些特性。 1、Hugepage的引入 操作系统对于数据的...
  • Linux HugePage for MySQL Server(MySQL中大页的使用) 网上大页的资料抄来抄去, 没一个是正确的 :shock: . 本人经过查Linux说明和实践, 现将线上的配置总结一下. :lol: 效果对比 未配置HugePage: 配置HugePage后 (并...
  • hugepage总结

    千次阅读 2017-07-31 15:58:26
    本文总结了hugepage使用过程中的一些知识点,参考的内核版本是4.1.12注:本文为原创,转载请注明出处 1.hugepage是什么,有什么用? 大页是相对传统4K小页而言的,一般来说常见的体系架构都会提供2种大页大小,比如...
  • 简单聊聊HUGEPAGE

    2021-02-22 15:32:27
    可能很多朋友都了解在大内存的服务器上使用HUGEPAGE有助于提升应用的性能?不过为什么会这样呢?是不是使用HUGEPAGE就一定对应用的性能有帮助呢?LINUX的transparent Hugepages功能是不是对我们有帮助呢? 如果要...
  • linux hugepage 设置

    2020-08-25 17:55:37
    mos 401749.1 ...如果要使用HugePage,请确保未设置数据库实例的两个MEMORY_TARGET / MEMORY_MAX_TARGET初始化参数(即,使用“ ALTER SYSTEM RESET”)。 关闭AMM 要完全关闭AMM,一定将MEMORY_TARGE
  • linux之hugepage

    2020-12-18 18:29:10
    首先什么是Hugepage? 介绍Hugepage首先需要知道什么是虚拟内存。 操作系统对于数据的存取直接从物理内存要比从磁盘读写数据要快的多,但是物理内存是有限的,这样就引出了物理内存与虚拟内存的概念。虚拟内存就是...
  • Redhat:HugePage

    2018-01-19 10:04:51
    一、HugePage 介绍  在操作系统Linux环境中,内存是以页Page的方式进行分配,默认大小为4K。如果需要比较大的内存空间,则需要进行频繁的页分配和管理寻址动作。  HugePage是传统4K Page的替代方案。顾名思义,...
  • 理想的 huge page

    千次阅读 2017-01-25 11:09:49
    现代计算机的内存越来越大,服务器动辄就有上百GB,甚至 TB 级别的内存,很多应用已经可以把全部数据都放入内存,这样,磁盘空间换取内存空间这个传统中虚拟内存...于是,大家想起了 huge pagehuge page 大幅减小了
  • Timesten HugePage

    2017-02-10 11:36:33
    配置Timesten使用HugePage 我们知道随着服务器内存的增加,linux的内存查效率会变低,在使用timesten内存数据的时候,这一点变得更加明显。好消息是timesten支持使用largepage来减少查的效率低下的问题环境:RHEL ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,474
精华内容 1,389
关键字:

hugepage