Oracle 优化篇+Linux系统参数(vm.min_free_kbytes)
发布日期:2021-06-29 12:02:28
浏览次数:2
分类:技术文章
本文共 3523 字,大约阅读时间需要 11 分钟。
说明:本文为面向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 ]]then RECOMMEND_VALUE=$NUMA_BASEDelse RECOMMEND_VALUE=$MEMORY_BASEDfiOFFSET=$(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 ]]then SYSCTL_IN_RANGE=YESelse SYSCTL_IN_RANGE=NOfi#sysctl in range?if [[ $MIN_FREE_KBYTES_MEMORY -ge LOWER_BOUND && $MIN_FREE_KBYTES_MEMORY -le UPPER_BOUND ]]then MEMORY_IN_RANGE=YESelse MEMORY_IN_RANGE=NOfiDETAIL=$(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 ]]then echo -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 ]]then echo -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 fi ZZT_MAX_GB=$(($ZZT_MAX/1024/1024)) echo ">>> if output is,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=32 ZZT_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." fi echo -e "Details:\n\n$DETAIL"elif [[ $MIN_FREE_KBYTES_SYSCTL -gt $UPPER_BOUND && $MIN_FREE_KBYTES_MEMORY -gt $UPPER_BOUND ]]then echo -e "WARNING: vm.min_free_kbytes is not configured as recommended. Details:\n\n$DETAIL"else echo -e "ERROR: Inconsistent results. Details:\n\n$DETAILS"fi
★ 案例
※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~
over
转载地址:https://blog.csdn.net/zzt_2009/article/details/111436334 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月30日 14时27分46秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
power BI desktop
2019-04-29
中国信息化发展八大趋势(一)
2019-04-29
中国信息化发展八大趋势(二)
2019-04-29
中国信息化发展八大趋势(三)
2019-04-29
中国信息化发展八大趋势(四)
2019-04-29
电商大战二十年
2019-04-29
神奇的麦考林
2019-04-29
centos7使用rpm安装mysql遇到的error: Failed dependencies: mysql-community-common(x86-64) 5.7.9 is needed
2019-04-29
spark报错:warn util.utils::service ‘sparkUI‘ can not bind on part 4040.Attempting port 4041.4042等错误
2019-04-29
Error getting authority: Error initializing authority: Could not connect: No such file or directory
2019-04-29
编程程软件测试思维方式:如何科学制定测试计划
2019-04-29
BLE蓝牙4.0串口调试助手
2019-04-29
树莓派WIFI设置
2019-04-29
用vcgencmd获取树莓派硬件状态数据
2019-04-29
IIS 多域名多张证书配置
2019-04-29
树莓派LINUX 截屏
2019-04-29
树莓派Raspberry Pi的嵌入式QT平台
2019-04-29
apache https
2019-04-29
Debian Jessie安装支持HTML5音视频的Chromium浏览器听百度音乐
2019-04-29