AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 3104
In Process
dbr
dbr
Asked: 2009-05-03 05:55:28 +0800 CST2009-05-03 05:55:28 +0800 CST 2009-05-03 05:55:28 +0800 CST

绘制内存使用情况的简单工具?

  • 772
锁定。这个问题及其答案被锁定,因为这个问题离题但具有历史意义。它目前不接受新的答案或交互。

是否有脚本将内存使用情况显示为图形,例如饼图,每个进程都是一个单独的切片?

我不是在寻找像Munin这样的东西来绘制一段时间内的内存使用情况,而是在单个时间点显示每个进程的内存使用情况。

为了使我的请求更加模糊,它适用于无头服务器(因此没有 X 应用程序)。最简单的方法是编写一个 PNG 文件,或者可能是一个 HTML 文件(可以使用 Javascript 来允许过滤进程、在图形类型之间进行更改等)

linux memory performance-monitoring
  • 13 13 个回答
  • 29398 Views

13 个回答

  • Voted
  1. jldugger
    2009-05-03T09:24:20+08:002009-05-03T09:24:20+08:00

    每个进程的内存记帐很棘手,原因有很多,我将在一分钟内讨论。对于简单的监控,gkrellmd 或 nagios 脚本可能就足够了。如果您想要更高的准确性,则需要更加努力。

    smem引入了Proportional Set Size的概念:

    由于大部分物理内存通常在多个应用程序之间共享,因此称为常驻集大小 (RSS) 的内存使用标准度量将大大高估内存使用。PSS 而是测量每个应用程序在每个共享区域中的“公平份额”,以给出一个现实的衡量标准。

    示例:您启动 GNOME,导致启动多个进程,每个小程序和程序一个。它们都链接到 libglib。Linux 将 libglib 加载到一个内存块中,并将其映射到需要 libglib 的每个进程。朴素的内存记帐针对链接到它的每个进程计算完整的 libglib 大小。

    smem 将 libglib 的成本分配给使用它的进程,以更接近现实。它还有许多选项来显示内存使用情况(来自网站):

    1. 显示基本进程信息 smem
    2. 显示系统视图 smem -R 4G -K /path/to/vmlinux -w
    3. 显示总数和百分比 smem -t -p
    4. 显示不同的列 smem -c "name user pss"
    5. 显示通过映射 smem -M libxml 过滤的进程
    6. 显示由进程 smem -m -P [e]volution 过滤的映射
    7. 从捕获 tarball smem --source capture.tar.gz 读取数据
    8. 显示由 pid smem --bar pid -c "p​​ss uss" 标记的条形图
    9. 显示以名称 smem --pie name -s rss 标记的 RSS 饼图

    但是,您将需要一个最新的内核 (> 2.6.27)。

    • 13
  2. Mark Regensberg
    2009-05-03T06:22:30+08:002009-05-03T06:22:30+08:00

    想不出现成的东西

    然而,一个 PHP 脚本的组合 exec'ing ps -AH v | awk '{ print $8,$9,$10}'并将其与pChart一起使用可以为您提供一个可以满足您需求的网页?(以 Kb 为单位的使用量,占总数的百分比和进程名称)

    • 5
  3. Xerxes
    2009-05-29T08:33:17+08:002009-05-29T08:33:17+08:00

    看看sarface - 它取决于 sar 数据,您可以实时监控内存使用情况(以及所有其他 sar/sysstat 数据)。

    • 2
  4. jnrg
    2009-06-03T10:01:41+08:002009-06-03T10:01:41+08:00

    那么collectd呢?

    • 1
  5. ahes
    2009-06-03T10:06:26+08:002009-06-03T10:06:26+08:00

    自己做。制作一个简单的 shell 脚本来更新 RRD 数据库。然后使用 rrdtool 绘制图形。

    • 1
  6. Mark Seger
    2009-06-12T14:10:56+08:002009-06-12T14:10:56+08:00

    如果您真的很喜欢较低级别的细节,请不要忘记收集。以下是它可以报告的每个进程内存利用率类型的示例:

    记录 1 cag-dl585-02 (1244758290.002)(2009 年 6 月 11 日星期四 18:11:30)
    
    进程摘要(计数器为 /sec)
    # PID 用户 S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinF 命令
     9089 根 S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 发送邮件:
     9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5904K 0 0 发送邮件:
     9108 根 S 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm
     9120 根 S 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond
     9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs
    

    如果您对特定进程感兴趣,您可以指定适当的过滤器(包括显示线程的开关)。

    如果你对内存感兴趣,它还可以显示平板细节,甚至还有 vmstat 格式的输出。当现有工具已经这样做了,为什么还要以 vmstat 格式显示数据?这很容易 - 使用 collectly,您可以将统计信息记录到文件中,并在以后以多种格式播放。

    试试看,你会喜欢的

    • 1
  7. Manu
    2009-06-12T14:39:53+08:002009-06-12T14:39:53+08:00
    1. Grep 进程。
    2. 解析输出并以逗号分隔的格式保存在文本文件中。
    3. 在excel中打开逗号分隔的文件。
    4. 使用 excel 的图表实用程序为该数据绘制图表。

    如果您想以不同的时间间隔进行内存快照...将 cron 作业设置为所需的时间间隔并运行脚本。

    希望有帮助....

    • 1
  8. Ivan
    2009-05-03T06:23:02+08:002009-05-03T06:23:02+08:00

    这并不完全是您正在寻找的内容,但也许您可以使用此参考来调整它以满足您的需求(查找“每进程内存使用情况”)。

    • 0
  9. Philip Durbin
    2009-05-03T15:05:43+08:002009-05-03T15:05:43+08:00

    嗯,gnuplot常见问题解答说它不支持 pie chart,但他们建议 Bernhard Reiter 的piechart。

    • 0
  10. Rajat
    2009-06-13T00:18:28+08:002009-06-13T00:18:28+08:00

    您可以使用 #top 或 #sysstat

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve