首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法跟踪到服务或应用程序的高内存使用率

问无法跟踪到服务或应用程序的高内存使用率
EN

Ask Ubuntu用户
提问于 2022-11-09 11:42:59
回答 1查看 1.5K关注 0票数 4

在Ubuntu22.04中,我遇到了一个奇怪的记忆问题。我似乎找不出为什么我的内存使用量如此之高。当我启动我的笔记本电脑时,内存的使用情况和预期一样,但随着时间的推移,有些东西似乎耗尽了我的内存,但系统似乎不知道它是用来做什么的。

在笔记本电脑运行了几天,晚上都在睡觉之后,free -m报告如下:

代码语言:javascript
复制
               total        used        free      shared  buff/cache   available
Mem:           14812        7329        2683        1810        4799        5348
Swap:           2047         416        1631

所有应用程序都已关闭,根据这个工具,所有应用程序使用的累积内存为1.7 GiB。那么,使用最后一个~5.5GiB (7.2-1.7)的是什么呢?

我是不是遗漏了什么?

EN

回答 1

Ask Ubuntu用户

发布于 2022-12-01 15:32:40

写这个答案是为了试图排除可能导致“不明”内存使用的原因,这可能超出了OP所经历的范围。

背景

在Linux中,内存的使用在很大程度上可以归因于两个元素:

  • 进程/线程的使用
  • 文件系统的使用

在这个问题中,OP不能解释进程/线程使用的所有内存。因此,剩余的内存很可能被内核用于文件系统操作。

可能导致

目前,我知道文件系统内存使用率过高的三个主要原因:

  1. ZFS ARC缓存(或类似的文件系统缓存,注册为“正常”内存使用)
  2. Ramdisk (tmpfs和类似的文件系统)
  3. 本机文件系统压缩,再加上过多的磁盘I/O (因此压缩/重新压缩的内存消耗是恒定的)

要排除这3种情况,我建议如下:

1. ZFS ARC缓存

运行以下命令以获取有关ZFS ARC缓存的详细信息:

代码语言:javascript
复制
arcstat -a 

size报告的stat将显示为正常使用的内存。

从您的帖子中可以看出,这里使用的是0.5GB。

2. Ramdisk

运行以下命令以获取有关当前任何tmpfs文件系统磁盘的信息:

代码语言:javascript
复制
df -hl -t"tmpfs"

used报告的任何金额都将显示为正常使用的内存。

Ubuntu (和许多其他Linux变体)在/dev/shm下有一个默认的ramdisk。应用程序可以使用这个空间,因此您可以轻松地检查:

代码语言:javascript
复制
ls -ahl /dev/shm

此外,tmpfs的使用情况也显示在shared下的free输出中,因此从您的文章中可以明显看出这里使用的是1.8GB。

3. FS压缩

使用以下命令检查磁盘IO:(iostat是sysstat包的一部分)

代码语言:javascript
复制
iostat

将此与有关磁盘的已启用文件系统压缩知识结合起来。对于ZFS,运行以下命令获取所有Zpools和数据集的压缩属性:

代码语言:javascript
复制
zfs get compression

如果磁盘IO较高,再加上启用的本机压缩,则会导致报告为正常使用内存的内存过多。

票数 7
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1439869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档