linux进程内存占用情况统计
来源:互联网 发布:看门狗2重要数据 编辑:程序博客网 时间:2024/05/05 20:09
free查看整体情况
[root@server01 work]# free -k total used free shared buffers cachedMem: 12201292 12055948 145344 0 246852 6433528-/+ buffers/cache: 5375568 6825724Swap: 12582904 886884 11696020
top查看进行情况
[root@server01 work]# toptop - 17:54:51 up 435 days, 6:29, 1 user, load average: 0.22, 0.36, 0.32Tasks: 192 total, 1 running, 191 sleeping, 0 stopped, 0 zombieCpu(s): 2.9%us, 3.0%sy, 2.0%ni, 88.2%id, 0.0%wa, 0.0%hi, 0.7%si, 3.2%stMem: 12201292k total, 12034188k used, 167104k free, 250704k buffersSwap: 12582904k total, 886908k used, 11695996k free, 6404224k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12988 work 20 0 6863m 1.5g 7812 S 1.0 13.0 3534:08 java 15854 work 20 0 4588m 666m 11m S 1.0 5.6 44:57.38 java 27347 work 20 0 4604m 664m 11m S 6.0 5.6 59:33.96 java 8441 work 20 0 4588m 638m 7680 S 1.3 5.4 160:13.87 java 31517 work 20 0 6567m 541m 7616 S 0.3 4.5 16:39.00 java 12619 work 20 0 7260m 347m 4756 S 5.6 2.9 4440:26 mysqld
PR:进程的优先级别,越小越优先被执行
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
ps命令
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep java | sort -nrk5其中rsz为实际内存,按内存排序,由大到小
统计当前所有进程占用的内存
使用ps命令统计
通常,很多用户会使用如下ps命令进行统计
ps aux | awk '{mem += $6} END {print mem/1024/1024}'
但是,这里存在一个问题是,free没有专门统计另一项缓存: Slab。所以上述ps命令统计的结果与free展示的结果存在较大出入。
Slab Allocation是Linux 2.2之后引入的一个内存管理机制,专门用于缓存内核的数据对象,可以理解为一个内核专用的对象池,可以提高系统性能并减少内存碎片。(Linux 2.6.23之后,SLUB成为了默认的allocator)。可查看meminfo文件了解slab信息。
cat /proc/meminfo | grep Slab
统计/proc/进程id/smaps
很多人通过累加 “ps aux” 命令显示的 RSS 列来统计全部进程总共占用的物理内存大小,这是不对的。RSS(resident set size)表示常驻内存的大小,但是由于不同的进程之间会共享内存,所以把所有进程RSS进行累加的方法会重复计算共享内存,得到的结果是偏大的。
正确的方法是累加 /proc/[1-9]*/smaps 中的 Pss 。/proc//smaps 包含了进程的每一个内存映射的统计值,详见proc(5)的手册页。Pss(Proportional Set Size)把共享内存的Rss进行了平均分摊,比如某一块100MB的内存被10个进程共享,那么每个进程就摊到10MB。这样,累加Pss就不会导致共享内存被重复计算了。
命令如下:
grep Pss /proc/[1-9]*/smaps | awk ‘{total+=$2}; END {print total}’
需要注意的是,全部进程占用的内存并不等于 free 命令所显示的 “used memory”,因为“used memory”不仅包含了进程所占用的内存,还包含cache/buffer以及kernel动态分配的内存等等。
调整系统内存管理
/etc/sysctl.conf里有几个对内存管理影响比较大的配置,以下配置项的文档见vm.txt。
vm.vfs_cache_pressure
系统在进行内存回收时,会先回收page cache, inode cache, dentry cache和swap cache。vfs_cache_pressure越大,每次回收时,inode cache和dentry cache所占比例越大。
vfs_cache_pressure默认是100,值越大inode cache和dentry cache的回收速度会越快,越小则回收越慢,为0的时候完全不回收(OOM)。
参考资料
内存问题排查
- linux进程内存占用情况统计
- linux下查看进程内存占用情况
- Linux查看进程的内存占用情况
- Linux查看进程的内存占用情况
- Linux查看进程的内存占用情况
- Linux查看进程的内存占用情况
- Linux查看进程的内存占用情况
- Linux查看进程的内存占用情况
- 查看LINUX进程内存占用情况
- 查看LINUX进程内存占用情况
- 查看LINUX进程内存占用情况
- 查看LINUX进程内存占用情况
- Linux查看进程的内存占用情况
- 查看LINUX进程内存占用情况
- 查看LINUX进程内存占用情况
- 查看LINUX进程内存占用情况
- 查看LINUX进程内存占用情况
- 查看LINUX进程内存占用情况
- 欢迎使用CSDN-markdown编辑器
- 虚拟机
- python easy_install安装
- 使用交换机组建以太网实现开发板tftp高速下载
- C语言中的int类型的范围是由什么决定的
- linux进程内存占用情况统计
- MYSQL静态表、动态表、压缩表以及两个主要的存储
- Unity性能优化之Draw Call
- 图案大集合----非主流
- 自动化测试-利用SourceTree+GitLab拉取、推送代码
- 大数据
- Mac安装Brew
- PTA-5-7 输出GPLT
- 递推递归练习G