服务器内存和实际不符问题

2023-11-10 09:50

本文主要是介绍服务器内存和实际不符问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、系统启动时会初始化相关设备,该过程会占用内存,内核启动时,也会占用一部分的内存
2、free -t 命令查询的是云服务器的可用内存,dmidecode -t memory 命令查询的是实际硬件内存大小,因此,使用 free -m 命令查询到的内存大小比实际的要小一些,属于正常情况。

【分析示例】举例说明:

1.先通过free命令核实当前系统中内存大小
在这里插入图片描述
2.通过 kernel log 查看内存初始化信息,核实内存预留情况:
在这里插入图片描述

可以看到在内核加载过程中,系统分配的可供用户使用内存为 1860324k【1882192-1860324=21868k】
加载过程中仍有21868k内存不知去向。继续分析:
kernel code :表示kernel的代码,属于reserved memory
absent:表示不可用的物理内存大小。如有一部分物理内存被BIOS保留,且kernel也是不可用的
reserved:包括【initrd】和【内核代码及数据】以及【kdump】等,其中内核代码和部分数据包含在下列统计值【kernel code、data】中
(查看kdump在grub.cfg配置crashkernel为auto的前提下,2G内存服务器默认预留了160M左右)

在这里插入图片描述
data :表示kernel的可读可写的数据和只读数据大小,属于reserved memory
init :表示init code和init data,属于reserved memory,但引导完成之后会释放给 free memory
PS:这里 reserved 中已经包含了内核初始化完成后会被释放出来的内存

3.接下来通过 kernel log 核实下内核初始化完成后被释放的内存
在这里插入图片描述
初始化后释放给用户的内存总和为:
28+18892+1980+416+552=21868k
21868+1860324=1882192k【最终系统完全启动后分配给用户的内存就为free查到的值】

【如何最大限度增加系统内存】举例操作如下:

减小kdump预留内存(kdump是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务,在系统崩溃时,可进入capture当前运行信息的内核,提取其中的dump core文件,主要功能类似于windows dmp文件,用于分析系统崩溃原因,如无特殊需求不建议人为调整,可能导致kdump无法启动,系统崩溃无法准确确认原因)
调整方法如下:
vim /boot/grub2/grub.cfg

将 kdump 预留内存改为 0(即不为kdump预留内存。注:关闭kdump服务,取消其开机自启,系统仍然会按照grub.cfg设置为其分配内存)


查看系统内存增大【已达到2000M左右】

这篇关于服务器内存和实际不符问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/LgMizar/article/details/125702678
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/381931

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM