有没有像baobab这样的工具,但是用于内存/RAM?

baobab / “Gnome Disk Usage Analyzer” 是我最喜欢的磁盘使用情况可视化工具——虽然我不确定这种图表的类型,但它对我来说很有意义——深入文件夹可以获得更详细的主要“切片”细分。
在“活动监视器”或htop等其他工具中查看内存使用情况是异常困难的,因为许多程序会生成子进程、线程等——如果有一种类似baobab风格的内存图表,将有助于理解这种令人困惑的内存使用表示方式。
是否存在类似的工具呢?

更新!

我了解到这个图表大致上是一个“Sunburst Chart”。 示例:https://observablehq.com/@d3/sunburst

在看到smem(以及安装它所需的所有依赖项)之后,我正在考虑制作我想要的东西。 如果不存在,似乎并不太难 - 至少对于我想要实现的简单方法来说,即:

  • 已经在您的计算机上安装了某种形式的Node(我是JS开发人员,所以我已经有node)
  • 使用一个http服务器和websocket端点在node中启动一个轻量级服务器以获取实时数据
  • 为Web浏览器提供一些预构建的静态资源以渲染Sunburst图表。

更新2

进展: enter image description here

更新3

进展--为了实现1秒的刷新率,我放弃了对Windows和Mac的支持(可能还能更快,但没必要吧?)

enter image description here


你在更新2中的进展会对普通用户开放吗? - BaTycoon
2是的,我有一个 npm 包在 pnpx ram-usage-analyzer(假设你已经安装了 Node 16 + pnpm)。不过还处于早期阶段 - 有些错误且性能尚未优化,没有配置项(目前还没有),用户体验也有些尴尬 - 目前正在适应 D3。我也在考虑是否放弃对 Windows 和 macOS 的支持,这样可以直接从 /proc 中读取(出于性能原因)。 - NullVoxPopuli
1v 0.0.4 应该是第一个“可用”的版本。 - NullVoxPopuli
到目前为止,我能够达到的最小值是32MB(不包括node的所有依赖项的大小)。 - NullVoxPopuli
虽然,https://bundlejs.com/?q=ram-usage-analyzer 暗示小于1MB... - NullVoxPopuli
1个回答

Smem sudo apt-get install smem

除了顶部没有摘要之外,还有一个类似于top/htop的进程命令行列表。

sudo smem

它像这样列出来:
  676 root     /usr/lib/snapd/snapd               0    28380    28410    30320 
  300 root     /lib/systemd/systemd-journa        0    26932    30747    39896 
63297 rinzwind /opt/google/chrome/chrome -        0    24296    31125   138532 
63203 rinzwind /opt/google/chrome/chrome -        0    26884    32797   135664 
62813 rinzwind /opt/google/chrome/chrome -        0    27808    35084   143680 
62833 rinzwind /opt/google/chrome/chrome -        0    28668    36777   146864 
63364 rinzwind /usr/bin/tilix --gapplicati        0    35132    38137    74620 

但它还支持使用几个命令和参数创建图表。
command  process command line
maps     total number of mappings
name     name of process
pid      process ID
pss      proportional set size (including sharing)
rss      resident set size (ignoring sharing)
swap     amount of swap space consumed (ignoring sharing)
user     owner of process
uss      unique set size
vss      virtual set size (total virtual memory mapped)

例子:

sudo smem --pie name -c "pss"

enter image description here

或者

sudo smem --bar name -c "pss uss" -U rinzwind

enter image description here


哇,这个smem有425MB(还有其他我系统上没有的东西)。看起来好强大啊。它似乎想要安装一堆Python和JavaScript库...还有更多字体,一些C++的东西——有没有什么...更轻量级的选择吗? - NullVoxPopuli
@NullVoxPopuli 不是我知道的。其他的都只有命令行,没有图形界面。这就是为什么 top 和 htop 是管理员的最爱的原因;-) - Rinzwind
@NullVoxPopuli 425MB并不算太大,是吗?对于一个250GB大小的磁盘来说,这只占据了总空间的0.2%而已。 - Marijn
当然可以,但为什么要满足于那个呢?我可以在可能不到1MB的情况下获得同样的东西,并且还能拥有更好的图形(我正在制作一种替代工具)。 - NullVoxPopuli