bia*_*lix 38 linux logging memory-consumption
是否有任何现成的解决方案来记录系统启动时的内存消耗?我想将数据记录到简单的文本文件或某个数据库中,以便稍后进行分析.
我正在研究基于Linux 2.4的嵌入式系统.我需要调试与内存消耗相关的问题.我的应用程序会自动启动每个系统启动.我需要从定期间隔(尽可能经常)获取带时间戳的数据的方法,这样我就可以追踪问题.
我的问题的症状:当系统启动时,它启动了我的主应用程序和GUI,以可视化系统的主要参数.GUI基于GTK +(X服务器).如果我禁用GUI和X服务器,那么我的应用程序工作正常.如果我启用GUI和X服务器,当我在主板上安装256 MiB或512 MiB的物理内存时,它不起作用.如果我安装了1 GiB内存,那么一切正常.
Gun*_*iez 32
像一个小脚本
rm memory.log
while true; do free >> memory.log; sleep 1; done
Run Code Online (Sandbox Code Playgroud)
kla*_* se 27
以下脚本打印时间戳和标题.
#!/bin/bash -e
echo " date time $(free -m | grep total | sed -E 's/^ (.*)/\1/g')"
while true; do
echo "$(date '+%Y-%m-%d %H:%M:%S') $(free -m | grep Mem: | sed 's/Mem://g')"
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样(在Ubuntu 15.04,64位上测试).
date time total used free shared buffers cached
2015-08-01 13:57:27 24002 13283 10718 522 693 2308
2015-08-01 13:57:28 24002 13321 10680 522 693 2308
2015-08-01 13:57:29 24002 13355 10646 522 693 2308
2015-08-01 13:57:30 24002 13353 10648 522 693 2308
Run Code Online (Sandbox Code Playgroud)
你可以把类似的东西
vmstat X >> mylogfile
Run Code Online (Sandbox Code Playgroud)
进入启动脚本。由于您的应用程序已经在启动中,因此您只需将此行添加到您的应用程序已使用的初始化脚本的末尾即可。(其中 X 是日志消息之间的秒数)
有一个程序叫做
sar
Run Code Online (Sandbox Code Playgroud)
在* nix系统上。您可以尝试使用它来监视内存使用情况。它会定期进行测量。做一个
man sar
Run Code Online (Sandbox Code Playgroud)
更多细节。我认为该选项是-r进行内存测量,-i指定您想要的间隔。
小智 5
我认为添加一个 crontab 条目就足够了
*/5 * * * * free -m >> some_output_file
Run Code Online (Sandbox Code Playgroud)
还有其他工具,如SeaLion、New Relic、Server Density等,它们几乎可以做同样的事情,但更容易安装和配置。我最喜欢的是 SeaLion,因为它是免费的,而且它提供了一个很棒的常见 linux 命令原始输出的时间线视图。
小智 5
我非常喜欢记录所有内容,我发现了解哪些进程正在使用内存以及每个进程使用了多少(以及汇总统计信息)很有用。以下命令每 0.5 秒记录一次按内存消耗排序的顶部打印输出:
top -bd0.5 -o +%MEM > memory.log
Run Code Online (Sandbox Code Playgroud)
请注意,与仅存储总内存利用率统计信息相比,日志文件的增长速度会快得多,因此请确保不会耗尽磁盘空间。
| 归档时间: |
|
| 查看次数: |
36058 次 |
| 最近记录: |