Memory基本debug指令与基础知识(一)
/proc/meminfo memory状态解读
命令:adb shell cat /proc/meminfo
用途:可以整体的了解memory使用情况
我们说的可用memory一般以MemAvailable的数据为准。所以了解MemAvailable的组成可以帮助理解如何提升可用内存:
MemAvailable= free+filepage +slab_reclaimable -(lowmem_reserve +high_wmark_pages) -min(filepage/2,wmark_low) - min(slab_reclaimable/2,wmark_low)
其中:
lowmem_reserve为cat /proc/zoneinfo中的protection数据; 一般获取到的数据为0: protection: (0, 0, 0)
high_wmark_pages 和 wmark_low 也是从zoneinfo中获取的high/low 水位
所以上述公式可以理解为: free, filepage, slab_reclaimable越大,且high_wmark_pages, wmark_low越小 ,则MemAvailable越多
name | 释义 |
---|---|
MemTotal | 系统可用的总内存 (MemTotal = real_Dram_size - hw_reserved - kernel_reserved ) |
MemFree | 当前剩余的物理内存总量 free跟process数据有关,就算有被压缩,但其还是会mapping相关的memory,造成free比较少 |
MemAvailable | 系统可用内存 , 包含已使用但可回收的 ,如available = free+filepage +slab_reclaimable -(lowmem_reserve +high_wmark_pages) -min(filepage/2,wmark_low) - min(slab_reclaimable/2,wmark_low) |
Buffers | Buffer是为了cpu和块设备(block device)之间读写速度不对等而设计的,Buffers统计的就是这部分缓冲区的内存总大小。这部分内存drop cache可以被回收 |
Cached | 用于文件高速缓存,不包括swapcache和buffers,即Cached = file pages-swapcache-buffers,约等于 Active(file) + Inactive(file) |
SwapCached | 缓存的会swap出去的内容 |
Active | 活跃的file page和匿名page,Active = Active(anon) + Active(file),记录最近使用过的内存,通常不回收用于其它目的 |
内存分布log查看方式
kernel log
<4>[366310.867958] DMA free:68160kB min:5140kB low:44156kB high:45996kB active_anon:126592kB inactive_anon:126772kB active_file:211508kB inactive_file:185592kB unevictable:5380kB writepending:1896kB present:1988536kB managed:1841596kB mlocked:5380kB slab_reclaimable:40648kB slab_unreclaimable:187980kB kernel_stack:49760kB pagetables:78368kB bounce:0kB free_pcp:2844kB local_pcp:696kB free_cma:0kB
- DMA free:68160kB
总剩余内存 - min:5140kB low:44156kB high:45996kB
min/low/high 三个水位值,其释义可以参考Linux内存调节之zone watermark - active_anon:126592kB inactive_anon:126772kB
userspace process memory - active_file:211508kB inactive_file:185592kB
userspace file cache memory - managed:1841596kB
DRAM total减掉 reserved memory ,系统总共可运用的内存大小 - slab_reclaimable:40648kB slab_unreclaimable:187980kB
slab 占用内存 - kernel_stack:49760kB
kernel stack 占用内存, 可用来计算process数量 (32bit 8k per process , 64bit 16k per porcess)
注意ion 和 gpu 无法由此看出, 可以通过dumpsys meminfo分解 部分进一步确认
Memory基本debug指令与基础知识(一)相关推荐
- linux io重定向指令,Linux基础知识之 IO重定向
通常在 Shell 中执行命令的时候,我们会在输入命令的下方看到执行结果,操作系统默认将命令的执行结果输出到显示器上.当然,我们也可以手动的指定输出路径,或者输入路径,这就是 I/O 重定向. 1.标 ...
- 汇编8086复习——基础知识、指令汇总、上机实验踩坑
8086处理器基础知识 汇编语言是大小写不敏感的低级语言,意思就是mov和MOV是汇编语言来说是一样的,当然大小写混用也是可以的,如Mov 在8086汇编语言里,数字默认是十进制的,如果是其他进制数字 ...
- 嵌入式cmp指令的判断标志位_嵌入式开发的基础知识
搜索了一些有关于对嵌入式开发的一些基础知识,分享给大家! 1.ARM中一些常见英文缩写解释 MSB:最高有效位: LSB:最低有效位: AHB:先进的高性能总线: VPB:连接片内外设功能的VLSI外 ...
- 操作系统之内存管理:1、内存管理基础知识(指令工作原理、地址转化、程序运行过程)
1.内存管理基础知识(指令工作原理.地址转化.程序运行过程) 思维导图 什么是内存? 指令的工作原理 装入模块的三种实现 绝对装入 可重定位装入 动态重定位 程序的运行过程 链接的三种方式 思维导图 ...
- 计算机的指令合成为,第二章计算机操作基础知识doc
第二章计算机操作基础知识doc (29页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 23.9 积分 第二章 计算机操作基础知识第一节 计算机基础知识 ...
- mysql 访问寄存器_汇编寄存器(内存访问)基础知识之三---mov指令
1 内存中字的存储 一个字型数据占2个内存单元,内存里面一个内存单元一个字节(8位),高地址单位放高8位,低地址单元放低8位. 注意:0号是地址单元,1是高地址单元(上是低地址,下面是高地址) (1) ...
- Linux常用基础知识必备三之常用指令及操作
Linux常用基础知识必备三之常用指令及操作 1.vi和vim vi如何使用 vi几种模式下的操作指令 命令模式进入编辑模式 命令模式下的快捷键 底行模式(指按了esc键之后输入按键:后出现) 字符串 ...
- poll和死锁_计算机基础知识
转自: http://blog.csdn.net/qq_15437629/article/details/52388685 在这里只做备份 计算机网络 TCP/IP 模型 TCP/IP协议集的分层实施 ...
- 《Java并发编程实战》【第一部分 基础知识】
文章目录 第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线 ...
最新文章
- 数据分析 从零开始到实战,Pandas读写CSV数据
- python语言入门e_python 语言学入门第一课必看:编码规范
- TFS 解除独占锁定
- mysql的骚操作:自增长的字段同时插入到另一个字段
- Interview and paper based test
- redis复制_Redis复制
- HLSL Tips 1:如何把输入映射到输出像素
- 开源知识管理系统_Zboot权限后台管理系统开源啦
- 原生安卓10怎么打开面部识别_《原创》安卓系统手机只需一步立即提速翻倍,越久的手机越见效...
- matlab曲线拟合的应用,MATLAB软件在曲线拟合中的应用
- Open3d之点云平面分割
- 交互式电子杂志_电子杂志形式与交互问题分析
- 获取cookie_XSS获取COOKIE
- mpp格式文件怎么打开,mpp进度计划
- HTML期末学生作业~HTML+CSS+JavaScript仿猫眼电影在线网站
- IOS 开发第一个HelloWorld
- python应用题应用背景及实际意义_课题研究的现实背景及意义
- 怎么给android工程改名字,Android Studio项目改名操作
- 腾讯云技术认证考试综述 腾讯云技术认证题库
- SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)