配置系统内存容量

这些内核参数有可能有助于提高系统的内存利用率。通过更改/proc文件系统中相应的文件的值来临时设置这些参数以用于测试目的。确定用例生成最佳性能的值后,可以使用sysctl命令永久设置它们。

通常通过设置一个或多个内核参数的值来配置内存使用情况。可以通过更改/proc文件系统中文件的内容来临时设置这些参数,也可以使用procps-ng软件包提供的sysctl工具永久设置这些参数。

例如,要将overcommit_memory参数临时设置为1:

1
echo 1 > /proc/sys/vm/overcommit_memory

要永久设置这个值,在/etc/sysctl.conf文件中添加vm.overcommit_memory=1然后运行:

1
sysctl -p

临时设置参数对于确定参数对系统的影响很有用。然后,当确定参数的值有所需效果时,可以永久设置参数。

虚拟内存参数

除非另有说明,否者列出的参数都位于/proc/sys/vm中。

  • dirty_ratio

    百分比值,修改总系统内存的百分比时,系统开始使用pdflush操作将修改写入磁盘。默认为20%

  • dirty_background_ratio

    百分比值,修改系统总内存百分比时,系统开始后台将修改写入磁盘。默认值为20%

  • overcommit_memory

    定义是接受还是拒接大内存请求的条件。

    默认值为0,默认情况下,内核通过估计可用内存量和过大的请求失败来执行启发式内存过量使用处理。但是由于使用启发式而非精准算法分配内存,因此使用此设置可以重载内存。

    当此参数设置为1时,内核不执行内存过量使用处理。增加了内存过载的可能性,但提高了内存密集型任务的性能。

    当此参数设置为2时,内核拒绝内存请求等于或大于总可用SWAP空间和overcommit_ratio中指定的物理RAM的百分比之和。这样可以降低过度使用内存的风险,但建议仅适用于交换区域大于物理内存的系统。

  • overcommit_ratio

    指定当overcommit_memory设置为2时考虑的物理RAM的百分比。默认是50%

  • max_map_conut

    定义进程可以使用的最大内存映射区域数。默认为65545,适用于大多数情况。如果程序需要映射超过此数量的文件,增加此值。

  • min_free_kbytes

    指定在系统中保持空闲的最小千字节数。这用于确定每个低内存区域的适当值,每个低内存区域都按照其大小按比例分配了多个保留的内存空闲页面。

极端值可能会损坏系统。将min_free_kbytes设置为极低值可防止系统回收内存,但这可能导致系统挂起和OOM终止进程。但是,将min_free_kbytes设置太高(例如,占用系统总内存的5%-10%)会导致系统立即进入内存不足的状态,从而导致系统话费太多时间回收内存。

  • oom_adj

    如果系统内存不足并且panic_on_oom参数设置为0,则oom_killer函数会终止进程,知道系统可以从具有最高oom_score的进程开始恢复。

    oom_adj参数有助于确定进程的oom_score,此参数是根据进程标识符设置的。设置为17表示禁用进程oom_killer。其他有效值为-1615

    由调整后的进程生成的进程会集成进程 大专栏  配置系统内存容量oom_score

  • swappiness

    swappiness值(0-100)控制系统支持的匿名内存或页面缓存程度。较高的值可提高文件系统性能,同时积极地将较少活动的进程从RAM中交换出来。较低的值可避免将进程交换到内存中,这通常或降低延迟,但代价是I/O性能。默认为60

    设置swappiness==0将非常积极的避免交换。这增加了强内存和I/O压力下OOM被杀死的风险。

?

文件系统参数

所列出的参数位于/proc/sys/fs.

  • aio-max-nr

    定义所有活动异步输入/输出上下文中允许的最大事件数。默认值为65535。修改此值不会预先分配或调整任何内核数据结构的大小。

  • file-max

    确定整个系统的最大文件句柄数。默认值最大值是8192或者可用内存页面的十分之一。

    提高此值可以解决由于缺少可用文件句柄而导致的错误。

内核参数

以下参数的默认位于/oroc/sys/kernel中,可由内核在引导时根据可用的系统资源计算。

  • msgmax

    定义消息队列中任何单个消息的最大允许大小(以字节为单位)。该值不得超过队列的大小(msgmnb)。要确定系统上的当前msgmax值,使用:

    1
    sysctl kernel.msgmax
  • msgmnb

    定义单个消息队列的最大值(字节为单位),要确定系统上的当前msgmnb值,使用:

    1
    sysctl kernel.msgmnb
  • msgmni

    定义消息队列标识符的最大数量(以及队列的最大数量),要确定系统上的当前msgmin值,使用:

    1
    sysctl kernel.msgmni
  • shmall

    定义一次可在系统上使用的共享内存页面的总数,例如,x86_64架构上的页面为4096字节。

    要确定系统当前shmall值,使用:

    1
    sysctl kernel.shmall
  • shmmax

    定义内核允许的单个共享内存段的最大大小(字节为单位)。要确定系统上的当前shmmax值,使用:

    1
    sysctl kernel.shmmax
  • shmmni

    定义系统范围的最大共享内存段数,所有系统上的默认值均为4096

  • threads-max

    定义一次可用于内核的系统阀内最大线程数。要确定系统上当前的 threads-max值,使用:

    1
    sysctl kernel.threads-max

    默认结果是:

    1
    mempages/(8*THREAD_SIZE/PAGESIZE)

原文地址:https://www.cnblogs.com/dajunjun/p/11711064.html

时间: 2024-11-05 14:55:27

配置系统内存容量的相关文章

内存容量出现异常的解决办法

[鄙视360人工服务工程师 笨死你!] 如果哪天的内存容量突然出现了异常 而且发现只有一半可以使用的时候 不是内存出现了问题 而是设置的问题. [win 7 win 8 win 10通用的解决办法] 问题描述: 我是win 10 64位系统 内存容量突然只有一半了 打开我的电脑的设置看了一眼 就是这样的 [解决办法]: 1.打开运行-输入msconfig. 2.在对话框中选择完全加载服务程序, 单击应用 确定之后 重启, [问题解决完毕] [差点又要花冤枉钱咯…… 咯咯咯]

.NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSource的方式将其他形式数据作为我们的配置来源. [ 本文已经同

【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)

原创 2016-09-12 熊军 熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC Server发展到今天,在性能方面有着长足的进步.64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server:在Intel和AMD两大处理器巨头的努力下,x86 CPU在处理能力上不断提升:同时随着制造工艺的发展,在PC Server上能够安装的内存容量也越来越大,现在随处可见数十G内存的PC Server.正是硬件的发展,使得PC Server的处

DELL R720系统内存指南

该文章摘自于:http://www.dell.com/support/article/cn/zh/cndhs1/SLN153646/zh#issue3,仅供个人作为笔记使用 PowerEdge R720系统内存指南 目录: R720系统内存指南 最小/最大内存容量 内存模块安装指南/安装规则 内存模式特定指南 卸下/安装系统内存 系统内存一般故障诊断 使用系统诊断程序 文章摘要:本文介绍了PowerEdge R720服务器的内存功能.内容包括支持的内存类型.安装规则和一般故障诊断. 问题1:R7

PowerEdge R720系统内存指南

文章摘要:本文介绍了PowerEdge R720服务器的内存功能.内容包括支持的内存类型.安装规则和一般故障诊断. 问题1:R720系统内存指南 Power Edge R720支持DDR3无缓冲ECC DIMM (ECC UDIMM).已注册的DIMM (RDIMM)和减少负载的DIMM (LRDIMM). Power Edge R720支持DDR3无缓冲ECC DIMM (ECC UDIMM).已注册的DIMM (RDIMM)和减少负载的DIMM (LRDIMM). 注:戴尔仅支持带有ECC的

linux系统内存转换成硬盘使用

解决问题点: 1:站点数据提速,数据放入内存空间,速度指数级提升: 2:数据库缓存: 3:临时数据处理: 4:等等... #查看系统内存 [[email protected] ~]# free -m total        used        free      shared  buff/cache   available Mem:          64257         861       62730          41         665       63103 Swap

系统内存耗尽的案例分析

近日遇到一个RAC节点hang导致节点被重启的问题,最后经过分析,发现在系统运行一段时间后,系统内存就会耗尽,原本256G的内存,最后只剩几百M. 1. 问题时间段的TOP输出可以看到,内存只剩7G,而分析内存问题,TOP输出是不够的,一般情况下,Database的SGA和PGA是内存使用大户,所以,在TOP很难发现谁是使用内存最多的. 除非某些进程内存使用的格外明显 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Linux OSWbb v7.3.

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数] 较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSour

转---高并发Web服务的演变——节约系统内存和CPU

[问底]徐汉彬:高并发Web服务的演变——节约系统内存和CPU 发表于22小时前| 4223次阅读| 来源CSDN| 22 条评论| 作者徐汉彬 问底Web服务内存CPU并发徐汉彬 摘要:现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.一味地通过增加机器来解决并发量的增长,成本是非常高昂的.结合技术优化方案,才是更有效的解决方法. [导读] 徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小