加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

都说Linux是吃内存的主可你知道具体是哪些进程吃掉了吗?

发布时间:2021-06-10 13:41:09 所属栏目:Linux 来源:互联网
导读:一个经常被问到的 Linux 问题:为啥 Linux 系统没运行多少程序,显示的可用内存这么少? 其实 Linux 与 Windows 的内存管理不同,会尽量缓存内存以提高读写性能
副标题[/!--empirenews.page--]

一个经常被问到的 Linux 问题:为啥 Linux 系统没运行多少程序,显示的可用内存这么少?

其实 Linux 与 Windows 的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做 Cache Memory。

比较老的资料都会介绍 Linux 的 Cache 占用很多并没有关系,因为 Linux 会尽可能利用内存进行缓存。但是缓存的回收也是需要资源的,比较好的一篇文章是 Poor Zorro 写的 Linux 内存中的 Cache 真的能被回收么?。

虽然大部分情况下我们看到 Cache 占用很高时是没有问题的,但是我们还是想弄清楚到底是哪个程序把 Cache 弄的那么高,这居然不是一件容易的事。

内核的模块在分配资源的时候,为了提高效率和资源的利用率,都是透过 Slab 来分配的。Slab 为结构性缓存占用内存,该项也经常占用很大的内存。不过借助 slabtop 工具,我们可以很方便的显示内核片缓存信息,该工具可以更直观的显示 /proc/slabinfo 下的内容。

# 显示了一台机器缓存中占用对象的情况  

$ slabtop -s c   

Active / Total Objects (% used)    : 856448 / 873737 (98.0%)  

 Active / Total Slabs (% used)      : 19737 / 19737 (100.0%)  

 Active / Total Caches (% used)     : 67 / 89 (75.3%)  

 Active / Total Size (% used)       : 141806.80K / 145931.33K (97.2%)  

 Minimum / Average / Maximum Object : 0.01K / 0.17K / 8.00K  

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME  

416949 416949 100%    0.10K  10691   39     42764K buffer_head  

  5616   5545  98%    2.00K    351   16     11232K kmalloc-2048  

  9114   8990  98%    1.02K    294   31  9408K ext4_inode_cache  

 12404  12404 100%    0.57K    443   28  7088K radix_tree_node  

 10800  10731  99%    0.58K    400   27  6400K inode_cache  

 31290  29649  94%    0.19K    745   42  5960K dentry  

  3552   3362  94%    1.00K    111   32  3552K kmalloc-1024  

  1100   1055  95%    2.84K    100   11  3200K task_struct  

  1649   1481  89%    1.88K     97   17  3104K TCP  

 27000  27000 100%    0.11K    750   36  3000K sysfs_dir_cache  

  1380   1269  91%    2.06K     92   15  2944K sighand_cache 

虽然上面的命令显示了 Cache 中 Slab 的情况,但是还是没有显示什么程序占用的 Cache。

方案一:使用 Pcstat 来实现

经过搜索,发现 linux-ftools 这个工具可以显示某个文件占用的 Cache 的情况, fincore 只是它其中的一个工具。

$ fincore [options] files...  

  --pages=false      Do not print pages  

  --summarize        When comparing multiple files, print a summary report  

  --only-cached      Only print stats for files that are actually in cache.  

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读