简介:
smem是一个分析linux上内存使用量的内存工具。Android上提供的“ps”只能显示VSIZE和RSS这两类内存值。即使安装了busybox,“ps”也只能显示VSIZE。VSIZE是虚拟图形的总体大小,RSS是resident set size——实际使用的物理内存(包含共享库占用的内存)。这些数据对于显示某一特定的应用程序或守护进程的实际内存消耗来讲,是没有太多的用处的。
smem网站上说:
smem是一个能给出大量关于在linux系统上的内存使用报告的工具。不同于现有的工具的是,smem能报告PSS,即proortional set size实际使用的物理内存(比例分配共享库占用的内存),这一数据能更有效的陈述某一特定类库和应用程序在虚拟存储系统中的内存使用情况。
因为大部分的物理内存通常情况下是被多个应用程序所共享的,所以被认为是衡量内存使用标准的RSS(resident set size:实际使用物理内存,含共享库占用的内存)将明显地高估了内存使用。相反的,为了给出一个现实的措施,PSS权衡每一个应用公平地分享所有的共享区。
前期准备:
1、 合适的内核 (>2.6.27 or so) 查看当前内存版本可用“uname -a”
2、 合适的Python版本 (2.4 or so) 查看版本号可用“python -V”
另外,smem还可以产生非常漂亮的图表,为此,你还需安装python-matplotlib python-matplotlib-tk。
$ sudo apt-get install python-matplotlib python-matplotlib-tk
一、下载并编译
先用hg工具将已经存在的smem仓库拷贝到本地PC
$ hg clone http://selenic.com/repo/smem
用root权限将smem可执行文件拷贝到bin下面 设置路径
$ sudo cp smem/smem /usr/local/bin
用agcc对smemcap.c进行交叉编译
$ cd smem
$ agcc smemcap.c –o android-smemcap
注:agcc为封装了arm-eabi-gcc的perl脚本,地址为http://plausible.org/andy/agcc,使用时需将其全文复制下来后修改脚本的权限。运行agcc前除linux上已安装了perl解析器外,还需先在Android源码中执行build/envsetup.sh和choosecombo将Android环境配好。此外也可直接用arm-eabi-gcc直接进行交叉编译,示例可参考http://android-tricks.blogspot.com/2009/02/hello-world-c-program-on-using-android.html。
二、安装android-smemcap
用adb shell登录手机后创建所需的目录结构
$ adb shell mkdir /data/smem
将编译好的android-smemcap推送到手机中的目录
$ adb push android-smemcap /data/smem
修改执行文件的权限
$ adb shell chmod 777 /data/smem/android-smemcap
三、收集内存信息
进入手机相应的目录
$ adb shell
$ cd /data/smem
运行可执行文件并将结果重定向
$ ./android-smemcap > memdata.tar
$ exit
或直接执行如下命令:
$ adb shell “/data/smem/android-smemcap > /data/smem/memdata.tar”
四、将收集到的数据取回到PC上
$ adb pull /data/smem/memdata.tar
五、审阅数据
*目标程序进程数据视图
$ smem –S memdata.tar
*显示饼图
$ smem -S memdata.tar - -pie=command
或指定显示某一应用程序
$ smem -S memdata.tar -P com.* - -pie=command
*显示柱状图
$smem -S memdata.tar -bar=command
*显示系统中 所有的内存映射
$smem -S memdata.tar -m
*显示指定程序的映射
$smem -S memdata.tar -m -P email
*显示系统库
$smem -S memdata.tar -m -M /system/lib/*
*显示应用软件包的内存映射
$smem -S memdata.tar -m -M .*.apk
*找到拥有最大用户量得类库
$ smem -S memdata.tar -m -M lib -s pids
六、部分数据名称解释
a) VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
b) RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
c) PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
d) USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
PS:打包的tools.zip附件中包含了agcc脚本和已编译好的android-smemcap.
分享到:
相关推荐
smem是一款命令行下的内存使用情况报告工具,他能够给用户提供Linux系统下的内存使用的多种报告,seme与现有工具不同的是,可以报告PSS情况(实际使用的物理内存(PSS),从而可以衡量虚拟内存系统库和应用程序所占用的内存...
在Android系统中,内存分配是一个复杂且关键的过程,它直接影响着设备的性能和稳定性。本文主要探讨了Android手机内存的分配结构,以及如何查看和理解这些分配情况。 首先,我们需要了解Android内存的基本划分。...
在这个上下文中,驱动程序可能负责在内核空间中读取、写入或管理SMEM区域,以记录系统事件、错误日志或其他关键信息。 在标签中,"qualcommmsm7200"、"exploredr1"、"linuxkernel"和"linux"强调了这个组件是针对...
此发布的代码是SMEM FPGA内核代码,其详细信息在我们的论文中进行了描述。 最初的实现是在harp2上的,并且存在版权问题,因此FPGA端通信接口代码被缩写。 如果具有512位宽的读/写端口,则将此代码移植到您的平台应该...
smem的安装可以在Debian、Ubuntu或Linux Mint上使用apt-get install smem命令,在Fedora或CentOS/RHEL上使用yum install smem python-matplotlib命令进行安装。 使用smem可以检查内存使用情况,例如可以使用smem...
在实际应用中,smem-map可能与其他工具结合使用,如strace跟踪系统调用,gdb进行调试,或者valgrind检测内存错误,以提供更全面的系统分析。总的来说,smem-map是一个强大的开源工具,对于理解和优化Linux系统的内存...
通过本章的学习,我们可以了解到在现代智能终端设备中,多核通信技术的重要性及其在多媒体业务处理中的应用。通过采用高效的内存管理和同步机制,能够有效提升系统的整体性能和用户体验。对于从事Android开发的专业...
- 具体操作为:先在Trace32中运行`dotools\debug\smemlog.cmm`,然后运行`perl smem_log.pl > smemlog.txt`来获取SMEM Log。 2. **使用ADB工具**: - 对于没有Trace32工具的用户,可以通过ADB来实现SMEM Log的...
在Android中,可以使用`adb shell`命令触发这个过程: ```bash adb shell am dumpheap <pid> /data/local/tmp/heap.hprof ``` 这里的`<pid>`是你要分析的应用进程ID。生成的HProf文件可以用各种工具打开,例如...
在这个实验中,我们使用ADD指令来实现加法运算。ADD指令的格式为:ADD Smem, src, 其中Smem是源操作数,src是目的寄存器。例如: ```assembly ADD @x2, A ``` 这条指令将x2的值加到累加器A中。 减法运算 在这个...
内存使用状态监控是系统管理的重要环节,特别是在服务器和高性能计算环境中,实时了解内存的使用情况有助于优化系统性能、预防资源耗尽导致的系统崩溃。在本文中,我们将深入探讨如何监控内存使用状态,并提供相关...
3. 符号位不扩展的加法:ADDS指令用于不扩展符号位的加法,`ADDS Smem, src`将Smem中的无符号值与累加器中的值相加,保留符号位不变。 二、减法指令 1. 基本减法:SUB指令从累加器中减去源操作数,例如`SUB Smem, ...
- **ADDSmem, 16, scr[,dst]**:将Smem左移16位后与src中的值相加,结果可以存储在dst中。 - **ADD Smem[, SHIFT], src[, dst]**:允许用户指定移位量,将Smem左移指定位数后再与src中的值相加。 - **ADDXmem, SHFT,...
该快照压缩器成像器基于原型系统,在该系统中,可以通过优化算法或DNN从捕获的2D压缩测量中恢复3D光谱立方。 实际提取的数据已包含在此存储库中。 此外,该代码还包括两个优化迭代算法,与纸上使用的GAP-TV相比,...
f3 log 和 smem log 是高通平台 debug 工具中两个重要的日志文件。f3 log 记录了高通平台上的错误信息,而 smem log 记录了高通平台上的内存信息。获取 f3 log 和 smem log 可以按照以下步骤进行: 1. 准备高通平台...
reports physical memory usage, taking shared memory pages into account. Unshared memory is reported as the USS (Unique Set Size). Shared memory is divided evenly among the processes sharing that ...
在底层实现中,Share Memory首先需要一个内存管理结构,例如在Qualcomm的实现中,有一个名为SMEM_HEAP_INFO的结构体,它存储了每个数据块的地址信息和状态,如是否已分配。此外,还有一个SMEM_HEAP_ENTRY的数组,...
如果没有trace32工具,可以使用ADB命令来 dump smem log: `adb shell` `mkdir /data/debug` `mount -t debugfs debugfs /data/debug` `cd /data/debug/smem_log` `cat dump_sym` 3. 各种LOG Qualcomm平台上有...
在Linux操作系统中,管理和监控系统资源,特别是内存,是管理员日常任务的重要部分。"Linux文件管理器内存检测工具"指的是那些帮助用户查看和分析Linux系统内存使用情况的应用程序。在这个场景下,`click.sh`可能是...