说明:本文为面向Linux系统参数(vm.min_free_kbytes)初学者的指导手册
标签:Linux参数、Oracle优化、vm.min_free_kbytes、内存管理
注意:参数的修改有利有弊,该参数的设置不当有可能导致系统宕机等风险
易学:文中删去了不需要的多余部分,让初学者一目了然一学就会
温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化


★ 参数简述
该Linux系统参数的功能是用来设置一个最小内存空间给系统内核使用
该值设置过大会浪费空间,保留过小会造成系统压力


★ 知识点
※ 用途:合理设置该值有助于Linux系统更有效地回收内存
※ 注意:对于内存较小(≤32GB)的环境不建议设置,保持默认即可
※ 危险:不要对正在运行的环境进行设置
※ 有修改操作,非原版
※ vm.min_free_kbytes参数的单位是:KB
※ 内存水位
    min水位:下的内存是保留给内核使用的;当到达min,会触发内存的direct reclaim
    low水位:比min高一些,当内存可用量小于low的时候,会触发 kswapd回收内存
    high水位:继续睡眠
※ 内存回收方式
    direct reclaim : 触发min水位线时执行
    kswapd reclaim : 触发low水位线时执行


★ 相关脚本
※ 直接在shell里使用ROOT用户执行下面语句即可

MIN_FREE_KBYTES_SYSCTL=$(egrep ^vm.min_free_kbytes /etc/sysctl.conf | awk '{print $3}')
MIN_FREE_KBYTES_MEMORY=$(cat /proc/sys/vm/min_free_kbytes)
NUMA_NODE_COUNT=$(numactl --hardware | grep available: | awk '{print $2}')
TOTAL_MEMORY_KBYTES=$(free -k | awk '/Mem:/ {print $2}')
NUMA_BASED=$(( $NUMA_NODE_COUNT * 1048576 ))
MEMORY_BASED=$(( $TOTAL_MEMORY_KBYTES / 200 ))
if [[ $NUMA_BASED -ge $MEMORY_BASED ]]
thenRECOMMEND_VALUE=$NUMA_BASED
elseRECOMMEND_VALUE=$MEMORY_BASED
fi
OFFSET=$(echo $RECOMMEND_VALUE*.05 | bc | cut -d"." -f1)
LOWER_BOUND=$(echo $RECOMMEND_VALUE-$OFFSET | bc)
UPPER_BOUND=$(echo $RECOMMEND_VALUE+$OFFSET | bc)
if [[ $MIN_FREE_KBYTES_SYSCTL -ge LOWER_BOUND && $MIN_FREE_KBYTES_SYSCTL -le UPPER_BOUND ]]
thenSYSCTL_IN_RANGE=YES
elseSYSCTL_IN_RANGE=NO
fi
#sysctl in range?
if [[ $MIN_FREE_KBYTES_MEMORY -ge LOWER_BOUND && $MIN_FREE_KBYTES_MEMORY -le UPPER_BOUND ]]
thenMEMORY_IN_RANGE=YES
elseMEMORY_IN_RANGE=NO
fi
DETAIL=$(
echo -e "Total Memory:       $TOTAL_MEMORY_KBYTES";
echo -e "NUMA node count:    $NUMA_NODE_COUNT";
echo -e "NUMA calculated:    $NUMA_BASED";
echo -e "memory calculated:  $MEMORY_BASED";
echo -e "recommended value:  $RECOMMEND_VALUE";
echo -e "permitted range:    $LOWER_BOUND to $UPPER_BOUND";
echo -e "in sysctl.conf:     $MIN_FREE_KBYTES_SYSCTL";
echo -e "sysctl in range?:   $SYSCTL_IN_RANGE";
echo -e "in active memory:   $MIN_FREE_KBYTES_MEMORY";
echo -e "memory in range?:   $MEMORY_IN_RANGE";
)
if [[ $SYSCTL_IN_RANGE = YES && $MEMORY_IN_RANGE = YES ]]
thenecho -e "SUCCESS: vm.min_free_kbytes is configured as recommended.  Details:\n\n$DETAIL"
elif [[ $MIN_FREE_KBYTES_SYSCTL -lt $LOWER_BOUND || $MIN_FREE_KBYTES_MEMORY -lt $LOWER_BOUND ]]
thenecho -e ":: Result : 【FAILURE】: vm.min_free_kbytes is not configured as recommended"ZZT_V1=$(( $NUMA_NODE_COUNT * 1 * 1024 * 1024 ))ZZT_V2=$(( $TOTAL_MEMORY_KBYTES * 5 /10 / 100 ))if [ $ZZT_V1 -gt $ZZT_V2 ]then ZZT_MAX=$ZZT_V1 else ZZT_MAX=$ZZT_V2 fiZZT_MAX_GB=$(($ZZT_MAX/1024/1024))echo ">>> if output is <FAILURE>,please vi sysctl.conf and edit param's value for:vm.min_free_kbytes and reboot"echo ">>> [formula_oracle]vm.min_free_kbytes value (Kb) =MAX(1GB * number_numa_nodes, 0.5% * total_memory) "echo ">>> [calculated_zzt]vm.min_free_kbytes = $ZZT_MAX   (About: $ZZT_MAX_GB GB)"ZZT_V3=32ZZT_V4=$(($TOTAL_MEMORY_KBYTES/1024/1024))if [ $ZZT_V4 -gt $ZZT_V3 ]then echo ">>> [PASS]The current memory is suitable for setting system parameters." else echo ">>> [WARN]Your memory is too small to set this parameter."fiecho -e "Details:\n\n$DETAIL"
elif  [[ $MIN_FREE_KBYTES_SYSCTL -gt $UPPER_BOUND && $MIN_FREE_KBYTES_MEMORY -gt $UPPER_BOUND ]]
thenecho -e "WARNING: vm.min_free_kbytes is not configured as recommended.  Details:\n\n$DETAIL"
elseecho -e "ERROR: Inconsistent results.  Details:\n\n$DETAILS"
fi

★ 案例


※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

over

Oracle 优化篇+Linux系统参数(vm.min_free_kbytes)相关推荐

  1. bct对oracle影响,Oracle 优化篇+Rman增量备份优化之BCT(块变更追踪)

    说明:本文为面向Oracle BCT(BLOCK CHANGE TRACKING)初学者的指导手册 标签:BCT.BLOCK CHANGE TRACKING.增量备份.备份优化.RMAN 注意:文中删 ...

  2. Oracle笔记(十二):性能优化篇

    目录 一.概述 二.修改系统全局区 三.修改进程全局区 四.优化查询 分析执行计划 使用索引 优化子查询 五.优化数据库结构 拆分表 增加中间 优化插入记录速度---禁用索引 禁用唯一性检查 使用批量 ...

  3. 2011 DB2著作---舞动DB2系列之设计优化篇隆重问世!

    舞动DB2系列丛书简介: 舞动DB2系列丛书是王飞鹏等人编写的数据库系列著作,包括: 设计优化篇---<DB2设计与性能优化---原理.方法与实践> 应用开发篇---<从Oracle ...

  4. 在linux操作系统中启动oracle数据库程序,Linux系统下Oracle数据库的安装和启动关闭操作教程...

    这篇文章主要介绍了Linux系统下Oracle数据库的安装和启动关闭操作教程,并针对在sqlplus下所需执行的命令进行讲解,需要的朋友可以参考下 1.准备: df -H 查看空间剩余   一般准备最 ...

  5. Oracle 优化和性能调整

    Oracle 优化和性能调整 分析评价Oracle数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即:  数据库用户响应时间=系统 ...

  6. Oracle的SGA与系统vm.nr_hugepages不匹配导致的故障

    某项目,使用红旗DC Server 5.0 for x86_64 SP2,运行Oracle RAC 10.2.0.4.而应用服务器上的应用通过Oracle客户端来连接,为常连接的方式.当进行应用的压力 ...

  7. Oracle的SGA与系统vm.nr_hugepages

    某项目,使用红旗DC Server 5.0 for x86_64 SP2,运行Oracle RAC 10.2.0.4.而应用服务器上的应用通过Oracle客户端来连接,为常连接的方式.当进行应用的压力 ...

  8. 检查 linux guest vm 使用的什么 虚拟化技术

    写在前面的话 如果我有一台基于云的虚拟机,并且运行了Ubuntu或CentOS的Linux服务器系统,而这些设备可能是虚拟化的,也可能不是虚拟化的,那我们应该如何去判断这台Linux Guest系统设 ...

  9. mysql性能调优快捷键_mysql优化篇

    mysql优化篇 2019-4-12 hubo 数据库 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作 ...

最新文章

  1. R语言可视化学习笔记之ggridges包
  2. PyCharm 快捷操作
  3. 程序员最痛苦的事,就是程序出错;程序员最最痛苦的事,就是程序出错了还没有错误信息!--IIS Service Unavailable 问题如何解决...
  4. python作业:高级FTP程序
  5. java中能构成循环的语句_《编程导论(Java)#183;3.2.4 循环语句》
  6. python日期迭代_计算敏捷项目中迭代时间安排(Python3版)
  7. FFmpeg源代码简单分析:avformat_alloc_output_context2()
  8. 全球130多个国家的货币代码对照表
  9. mysql数据库如何授权_MySQL数据库学习笔记 ---- 数据库授权
  10. ARP欺骗,DNS欺骗和图片嗅探——ettercap软件的使用
  11. matlab 三维颜色,Matlab三维视图颜色控制
  12. 代码随想录第十八天 LeetCode513、112、113、106、105
  13. mysql字符集与校对规则设置_MySQL 字符集与校对规则
  14. op07数据手册分析
  15. 数据结构课程设计银行储蓄系统
  16. MT【145】不变的平面角
  17. Voltus任命全球投资者关系负责人
  18. 访问阿里云存储的图片URL实现在网页直接预览略缩图而不直接下载
  19. big code: code2seq论文复现 Generating Sequences from Structured Representations of Code
  20. Win10 64位下载与安装 MySQL 5.7.30

热门文章

  1. C# 汉字转拼音首字母大写
  2. java在线客服系统源码 springboot客服聊天源码 网页客服源码 netty通信技术,java源码
  3. HTML5的离线应用
  4. 打字时覆盖下一个字怎么办
  5. Altium Designer 21导出ANF到SIwave
  6. 0689 ZOJ - 4128
  7. 快手发布2022直播生态报告,运营人速览
  8. ipconfig ipconfig /all
  9. 4000GB、数百亿条个人信息泄露!大数据行业知名企业数据堂被查
  10. 阿里云云栖社区强烈推荐的十本经典机器学习相关书籍