内存问题排查手段及相关文件介绍
[-]
- 内存问题排查手段及相关文件介绍重点
- 1 procsysvmmin_free_kbytes
- 2 procsysvmdrop_caches
- 3 procsysrq-trigger
- 31对echo m procsysrq-trigger输出的解析
- 4 cat procslabinfo
- 5 cat procmeminfo
- 51 重要信息
- 6 top信息
- 7 free命令
- 8 procsysvm目录下的其他文件
5. 内存问题排查手段及相关文件介绍【重点】
5.1 /proc/sys/vm/min_free_kbytes
min_free_kbytes用来确定系统开始回收内存的阀值,控制系统的空闲内存。值越高,内核越早开始回收内存,空闲内存越高。
可以使用如下方式:echo 65535 > /proc/sys/vm/min_free_kbytes将系统保留内存设置为6M。
5.2 /proc/sys/vm/drop_caches
#echo 1 > /proc/sys/vm/drop_caches 清理页缓存
#echo 2 > /proc/sys/vm/drop_caches 清理文件缓存
#echo 3 > /proc/sys/vm/drop_caches 清理也缓存和文件缓存
5.3 /proc/sysrq-trigger
当一个sysrq命令被触发,内核将会打印信息到内核的环形缓冲并输出到系统控制台。此信息一般也会通过syslog输出到/var/log/messages.
有时候,可能系统已经无法响应,syslogd可能无法记录此信息。在这种情况下,建议您配置一个串口终端来收集这个信息。
#echo m > /proc/sysrq-trigger 导出内存分配信息
#echo t > /proc/sysrq-trigger 导出线程状态信息
#echo p > /proc/sysrq-trigger 导出当前CPU寄存器信息和标志位的信息
#echo w > /proc/sysrq-trigger将进入uninterrupted状态的任务的信息dump出来
5.3.1对echo m > /proc/sysrq-trigger输出的解析
root@ubuntu:/home/linux# echo m >/proc/sysrq-trigger
root@ubuntu:/home/linux# dmesg -c
CPU 0: hi: 186, btch: 31 usd: 93
CPU 1: hi: 186, btch: 31 usd: 140
CPU 0: hi: 186, btch: 31 usd: 185
CPU 1: hi: 186, btch: 31 usd: 13
active_anon:22129 inactive_anon:645isolated_anon:0
active_file:52387 inactive_file:81072isolated_file:0
unevictable:0 dirty:6 writeback:0unstable:0
free:336695 slab_reclaimable:12052slab_unreclaimable:2825
mapped:11208 shmem:892 pagetables:795bounce:0
lowmem_reserve[]: 0 843 1999 1999
lowmem_reserve[]: 0 0 9247 9247
Node 0 hugepages_total=0hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
Swap cache stats: add 0, delete 0, find0/0
active_anon:匿名映射的页,这些映射是与文件无关的
slab_reclaimable:内核数据结构缓存的大小,可减少申请和释放内存带来的消耗
active_anon + active_file + mapped = 应用所使用的大小
active_anon + active_file + mapped +slab_reclaimable = 目前所使用的所有内存大小
这里是buddy system(伙伴系统)的内存信息,如果这里比较大块的内存不多,也很容易出现内存申请失败,或者触发OOM问题
5.4 cat /proc/slabinfo
root@ubuntu:/home/linux# cat/proc/slabinfo
查看slab信息,除了看slabinfo文件外,还可以执行/usr/bin/slabtop命令:
root@ubuntu:/home/linux#/usr/bin/slabtop
Active / Total Objects (% used) : 311009 / 312759 (99.4%)
Active / Total Slabs (% used) : 7308 / 7308 (100.0%)
Active / Total Caches (% used) : 66 / 100 (66.0%)
Active / Total Size (% used) : 58479.13K / 58915.22K (99.3%)
Minimum / Average / Maximum Object : 0.01K /0.19K / 8.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
73949 73949 100% 0.05K 1013 73 4052K buffer_head
66976 66686 99% 0.12K 2093 32 8372K dentry
47100 47100 100% 0.63K 1884 25 30144K ext4_inode_cache
ACTIVE — The number of objects (memoryblocks) that are in use (allocated).
USE — Percentage of total objects thatare active. ((ACTIVE/OBJS)(100))
OBJ SIZE — The size of the objects.
SLABS — The total number of slabs.
OBJ/SLAB — The number of objects thatfit into a slab.
CACHE SIZE — The cache size of theslab.
5.5 cat /proc/meminfo
5.5.1 重要信息
对于该文件,比较重要的是Active、Active(anon)、Active(file)、Mapped、Slab,类似于sysrq-trigger中所说,存在如下计算关系:
Active = Active(anon) + Active(file)
Active(anon)+Ac tive(file)+Mapped = 应用
Active(anon)+Ac tive(file)+Mapped +Slab= 系统总共使用内存
Cached: 436412 kB //高速缓冲存储器(http://baike.baidu.com/view/496990.htm)使用的大小
SwapCached: 19864 kB //被高速缓冲存储用的交换空间大小
Active: 1144512 kB //活跃使用中的高速缓冲存储器页面文件大小
Inactive: 732788 kB //不经常使用的高速缓冲存储器页面文件大小
Active(anon): 987640 kB //anon:不久
HighFree: 7396 kB // The HighTotal value canvary based on the type of kernel used.
LowFree: 42608 kB //The LowTotal value canvary based on the type of kernel
SwapTotal: 489940 kB //交换空间总大小
AnonPages: 1408256 kB //未映射的页的大小
Mapped: 131964 kB //设备和文件映射的大小
Slab: 37368 kB //内核数据结构缓存的大小,可减少申请和释放内存带来的消耗
SReclaimable: 14164 kB //可收回slab的大小
SUnreclaim: 23204 kB //不可收回的slab的大小23204+14164=37368
PageTables: 13308 kB //管理内存分页的索引表的大小
VmallocTotal: 122880 kB //虚拟内存大小
VmallocUsed: 28688 kB //已经被使用的虚拟内存大小
5.6 top信息
DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
5.7 free命令
free的输出一共有四行,第四行为交换区的信息,分别是交换的总量(total),使用量(used)和有多少空闲的交换区(free)
free输出地第二行和第三行都是说明内存使用情况的。第一列是总量(total),第二列是使用量(used),第三列是可用量(free)。
第2行的输出时从操作系统(OS)来看的。也就是说,从OS的角度来看,计算机上一共有:
24677460KB(缺省时free的单位为KB)物理内存;
-buffers/cache,表示一个应用程序认为系统被用掉多少内存;
+buffers/cache,表示一个应用程序认为系统还有多少内存;
5.8 /proc/sys/vm/目录下的其他文件
1. /proc/sys/vm/block_dump
该文件表示是否打开Block Debug模式,用于记录所有的读写及DirtyBlock写回动作。
缺省设置:0,禁用BlockDebug模式
2. /proc/sys/vm/dirty_background_ratio
该文件表示脏数据到达系统整体内存的百分比,此时触发pdflush进程把脏数据写回磁盘。
缺省设置:10
4. /proc/sys/vm/dirty_ratio
该文件表示如果进程产生的脏数据到达系统整体内存的百分比,此时进程自行把脏数据写回磁盘。
缺省设置:40
5./proc/sys/vm/dirty_writeback_centisecs
该文件表示pdflush进程周期性间隔多久把脏数据写回磁盘。
缺省设置:500(1/100秒)
7. /proc/sys/vm/min_free_kbytes
该文件表示强制Linux VM最低保留多少空闲内存(Kbytes)。
缺省设置:724(512M物理内存)
11. /proc/sys/vm/page-cluster
该文件表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页。
缺省设置:3(2的3次方,8页)
12. /proc/sys/vm/swapiness
该文件表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换。
内存问题排查手段及相关文件介绍相关推荐
- syslog 向内存中缓存_内存问题排查手段及相关文件介绍
5. 内存问题排查手段及相关文件介绍[重点] 对于内存问题排查,或者OOM问题排查,一般会涉及到如下文件,下面将如下文件的分析和设置介绍一下,这也是本文档的重点,后面排查内存信息还是要根据这些文件信息 ...
- wince中的BSP工程的相关文件介绍
一.pbcxml分析 每一个BSP都有一个工程文件,比如MyBSP.pbcxml,里面描述了BSP的信息.下面就来介绍一下BSP的pbcxml文件. 文件的大致格式应该是这样的: &l ...
- LTspice基础教程-011.仿真相关文件介绍
LTspice仿真相关的文件有如下几种: asc文件,是我们绘制仿真原理图的时候生成的文件: asy文件,是原理图符号文件: spice模型文件,这类文件并没有固定的扩展名,LTspice对这类文件没 ...
- ubuntu 查询程序崩溃日志_ubuntu查看系统日志及相关文件介绍
1.在ubuntu服务器上,日志是通过syslogd进程处理的.该进程读取如下配置文件: 该文件主要配置哪些信息需要记录日志,记录到什么地方. 在该配置文件的第一部分,是对系统设施日志的配置,主要有: ...
- MySQL8.0内存相关参数介绍
MySQL8.0内存相关参数介绍 首先我们给出MySQL内存使用的计算公式: MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存. 也就是:innodb_b ...
- Linux环境中堆栈和堆相关内存损坏的基本原理和调试方法介绍
本文讲的是Linux环境中堆栈和堆相关内存损坏的基本原理和调试方法介绍, 前言 建议阅读本文之前,你对ARM组件的有个基本了解,本文会先为你介绍32位Linux环境中进程的内存布局,然后再介绍堆栈和堆 ...
- linux 内存溢出排查_java 内存溢出 栈溢出的原因与排查方法
1. 内存溢出的原因是什么? 内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出.如果出现这种现象可行代码排查: 一)是否应用中的类中和引用变量过多使用了Static修饰 ...
- linux 内存溢出排查_记一次JAVA 线上故障排查完整套路
JAVA线上故障排查全套路 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍.同时例如jstack.jmap等工具也 ...
- linux 内存溢出排查_【开发者成长】JAVA 线上故障排查完整套路!
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 线上故障主要会包括 CPU.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以 ...
最新文章
- 【CSDN2012年度博客之星】需要您的一票,感谢大家的支持
- 最清楚的mmap()详解与源码分析
- AseoZdpAseo.init(this, AseoZdpAseo.INSERT_TYPE);
- LDAPit's usage
- python与java、php、go的优势对比
- linux内核设计与实现看不懂,Linux内核设计与实现读书笔记
- 使用Flex Bison 和LLVM编写自己的编译器[zz]
- P2590-[ZJOI2008]树的统计【树链剖分,线段树】
- LeetCode 930. 和相同的二元子数组(哈希+前缀和)
- jenkins用ssh agent插件在pipeline里实现scp和远程执行命令
- 为什么需要动态内存分配?
- 金额逾千万!浪潮智能存储G2中标华中科技大学脑科学研究项目
- sklearn 决策树例子_决策树--规则挖掘应用
- 好书推荐:OpenSuse
- GalForUnity简介
- 技术架构图-大数据架构
- python实现单例模式的几种方法实例详解
- Eclipse搭建springBoot进阶篇-SpringBoot+Mybatis
- element上传附件(el-upload 超详细)
- oa处理会签流程图_关于合同会签oa流程使用说明..doc
热门文章
- python 单链表节点怎么快速定义_线性表链式存储结构之单链表
- feign使用_Feign:介绍与使用
- python内核死亡的原因_Kernel Panic常见原因以及解决方法
- oracle中怎么算奇数,oracle - 如何在oracle中获取奇数列 - SO中文参考 - www.soinside.com...
- python plotly spyder显示_Python绘图工具Plotly的简单使用
- 晶体封装越小esr越大_二轮复习分子晶体与原子晶体
- 停止运行_锅炉停止运行应注意哪些事项?
- Ajax的JSP示例以及相关知识介绍,适合于入门者
- Java讲课笔记35:初探泛型
- Java案例:词频统计