Linux内核参数-共享内存「建议收藏」

Linux内核参数-共享内存「建议收藏」在数据库配置过程中经常会遇到系统内核参数配置,而其中比较关键的有关于共享内存参数的配置,下面先将其中用到的参数的英文解释摘下来,再结合数据库再谈谈对其中的理解。 kernel.shmall This…

Linux内核参数-共享内存

  • kernel.shmall

This parameter sets the total amount of shared memory pages that can be used system wide.

  • kernel.shmmax

This parameter defines the maximum size in bytes of a single shared memory segment that a Linux process can allocate in its virtual address space.

  • kernel.shmmni

This parameter sets the system wide maximum number of shared memory segments.

首先解释几个定义

  • 共享内存

共享内存,顾名思义即系统中两个或多个进程可以共同访问的内存区域,数据库一般使用共享内存来存储热数据,多个进程可以访问相同的内存数据,尽量避免磁盘IO,提升性能。

  • 共享内存段

共享内存段,可以理解为将共享内存分为一块一块的区域,每块区域即为一个共享内存段。

  • 共享内存页

共享内存页为共享内存的组织单元。用getconf _PHYS_PAGES查看系统可用的内存页总量,用getconf PAGE_SIZE查看内存页的大小。

下面解释一下上面说的三个参数

  • kernel.shmmax

这个参数定义了单个进程在它本身的虚拟地址空间里可以访问的单个共享内存段的最大值

在Oracle场景下,由于SGA由共享内存组成,因此SHMMAX可能会限制SGA的大小。 SHMMAX应略大于SGA大小。

  • kernel.shmall

这个参数定义了系统级别可以用的所有共享内存页的数量。

因为kernel.shmmax是单个内存段可使用的共享内存,所以kernel.shmall的大小应大于等于kernel.shmmax的内存大小,即ceil(shmmax/PAGE_SIZE)。

在数据库场景下,我们通常会将系统内存的一半作为共享内存,那么简单的计算公示为


kernel.shmall = echo $(expr $(getconf _PHYS_PAGES) / 2)  

kernel.shmmax = echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))

代码100分

  • kernel.shmmni

这个参数定义了在系统层面最大的共享内存段的数量。

默认值4096,一般不需要修改

参数配置对数据库的影响

  • 如果共享内存配置的过小,那么数据库的可用的数据缓存空间过小,影响数据库性能。

  • 如果共享内存配置的过大,共享内存占用了其它进程可使用的内存空间,容易导致OOM的发生。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10081.html

(0)
上一篇 2023-01-26
下一篇 2023-01-26

相关推荐

  • HDFS架构

    HDFS架构HDFS架构(Master Slave) 几个进程的角色 1. nameNode(master):用于保存、管理、持久化文件的元数据(文件名、文件副本数、文件块大小、文件块列表),同时还要接收客户端的

    2023-01-30
    170
  • oracle隐式转换和显式转换_oracle隐式游标

    oracle隐式转换和显式转换_oracle隐式游标隐式类型转换简介 通常ORACLE数据库存在显式类型转换(Explicit Datatype Conversion)和隐式类型转换(Implicit Datatype Conversion)两种类型转

    2023-01-28
    144
  • 云主机发展市场风起云涌[亲测有效]

    云主机发展市场风起云涌[亲测有效]云主机作为云计算最基础、最核心的产品,承担了大部分企业的计算任务,其性能和稳定性直接决定了云计算的用户体验。 众所周知,云计算从来不是科技的狂人妄语,在科技技术飞速发展的时代,在技术市场,我们目睹了这

    2023-05-11
    139
  • TiFlash:并非另一个 T + 1 列存数据库[通俗易懂]

    TiFlash:并非另一个 T + 1 列存数据库[通俗易懂]在 上篇关于 TiFlash 的文章 发布后,我们收到了很多伙伴们的反馈,大家有各种各样的疑问,包括 TiFlash 是不是 T + 1 列存数据库?为啥实时写入也很快?读压力大怎么办?节点挂了怎么…

    2023-02-09
    130
  • Python判断空值方法总结

    Python判断空值方法总结在编写Python程序时,我们通常需要判断变量是否为空值。判断空值是编程中非常常见的操作,能够帮助我们编写更加健壮的代码。Python中有多种方法来判断空值,本文将对这些方法进行总结和详细说明。

    2024-07-28
    33
  • Python应用程序中弹出消息框的方法

    Python应用程序中弹出消息框的方法在Python应用程序开发过程中,弹出消息框是一种常用的交互方式。Python提供了多种弹出消息框的方法,本篇文章将从函数的使用、消息盒子的样式、功能实现方式等多个方面进行详细阐述,希望能对Python程序员有所帮助。

    2024-04-09
    77
  • sqlserver刷新视图[通俗易懂]

    sqlserver刷新视图[通俗易懂]sqlserver 用于刷新当前数据库所有视图的存储过程 create procedure dbo.proc_refreshview as begin declare @viewname varcha

    2022-12-20
    172
  • Hive 如何方便地实现存储过程?「终于解决」

    Hive 如何方便地实现存储过程?「终于解决」第一种是 HPL/SQL。这种方式目前还不完善,比如游标使用限制多,很多功能无法实现,对变量要求严格,经常发生不兼容的错误。只要可调试,代码报错并非障碍,但 HPL/SQL 的问题在于不可调试,对于…

    2023-03-03
    161

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注