5 个版本 (3 个破坏性更新)
0.5.1 | 2023年8月10日 |
---|---|
0.5.0 | 2023年7月23日 |
0.4.0 | 2023年7月23日 |
0.3.0 | 2023年7月14日 |
0.1.0 | 2023年7月8日 |
在 机器学习 类别中排名 163
每月下载量 32 次
57KB
1K SLoC
系统信息收集器
这是一个简单的应用程序,用于收集系统 CPU 和内存使用情况随时间变化的数据。
将结果收集到 csv 文件后,可以使用绘图创建 html 文件。
为什么?
我需要一个简单快速的应用程序来收集有关慢速(4x1Ghz)32 位 ARM 计算机上的 RAM 使用量和 CPU 消耗量等基本信息,该计算机使用基于 Yocto 定制的 Linux OS 构建。
我查看了一些像 grafana 这样的应用程序,但它们太重了,或者工作在客户端/服务器架构中,在这种情况下,我更愿意避免。
如何使用它?
这是一个控制台应用程序,这意味着您需要使用终端来使用它。
./system_info_collector -l debug -a collect-and-convert -o
每秒打印一次关于刷新的 CPU 和内存使用的调试信息。
过了一会儿,您可以点击 Ctrl+C
一次来停止收集数据,并等待自动准备和打开准备好的 html 图表数据。
https://github.com/qarmin/system-info-collector/assets/41945903/7ac510b5-babf-4d04-9624-34d83b8f1866
性能和内存使用
在 i7-4770 上进行测试时,应用程序使用了稳定的 15-20MB 内存,大多数时间 CPU 使用率低于 0.1%。
我使用的 sys-info 库在查找进程的 CPU/ram 使用率时具有相当大的开销(通常为几个毫秒),因为它打开了不必要的文件。因此,我计划手动进行一些计算。所以如果您想尽可能少地使用资源,您应该只收集基本操作系统信息,而不包括任何进程(这是默认模式)。
在收集模式下,应用程序只需要读取 CPU/ram 使用情况,然后将其保存到文件中,这就是为什么它使用如此少的资源。
将 csv 文件转换为 html 文件需要更多的资源,因此应该在更强大的计算机上完成。
在i7-4770上测试的内存、CPU总使用率和每个核心使用率结果 - 以1秒间隔,收集这么多样本应该需要大约3天(我使用了更小的间隔来模拟实际使用)
csv文件的前几行示例
INTERVAL_SECONDS=1,CPU_CORE_COUNT=8,MEMORY_TOTAL=23943.89,SWAP_TOTAL=2048.00,UNIX_TIMESTAMP_START_TIME=1690142980.2999594,APP_VERSION=0.4.0,CUSTOM_0=FIREFOX
SECONDS_SINCE_START,MEMORY_USED,SWAP_USED,CPU_USAGE_TOTAL,CUSTOM_0_CPU,CUSTOM_0_MEMORY
0.24,11031.20,0.00,49.66,0.00,1111.25
1.24,11037.60,0.00,16.75,2.11,1111.25
2.24,11039.49,0.00,19.14,3.55,1110.93
3.24,11040.23,0.00,13.27,2.17,1110.93
4.24,11047.52,0.00,16.32,4.65,1111.61
- CSV文件大小:19.55 MiB
- 加载和解析CSV文件:407 ms
- HTML文件大小:129 MiB(新版本使用简单的正则表达式最小化器,所以大小应该小约30%)
- 创建HTML文件:1.68 s
示例命令
以1秒间隔收集使用内存和CPU使用率,并将其保存到system_data.csv文件中
./system_info_collector
收集并转换CSV数据,自动在浏览器中打开HTML文件,此外还将显示更多详细的日志
./system_info_collector -l debug -a collect-and-convert -o
将CSV数据文件转换为HTML文档(包含图表)并在浏览器中打开
./system_info_collector -a convert -d /home/user/data.csv -p /home/user/plot.html -o
以0.2秒的间隔收集所有基本数据
./system_info_collector -l debug -a collect-and-convert -o -m memory-used -m memory-free -m memory-available -m cpu-usage-total -m cpu-usage-per-core -c 0.2
收集所选进程的内存和CPU使用率 - 将尝试找到命令名称中包含firefox
的进程 - FIREFOX
名称将在后续的图表中使用。
应用程序一次只能跟踪具有特定名称的1个进程,所以如果有两个或更多进程名称中包含firefox
,则只会收集第一个的信息
./system_info_collector -e "FIREFOX|firefox" -e "Event Handler|/usr/bin/event_handler --timeout"
显示有关可用参数的帮助信息
./system_info_collector --help
在操作系统启动时运行应用程序(Linux)
从启动开始收集操作系统数据的一种简单方法是创建简单的systemd服务。
为此,将应用程序复制到/usr/bin
文件夹中,并创建用于收集数据的文件夹
sudo cp system_info_collector /usr/bin/system_info_collector
sudo mkdir -p /opt/system_info_collector/ # To collect reports
创建服务内容
sudo touch /etc/systemd/system/system-info-collector.service
sudo gedit /etc/systemd/system/system-info-collector.service # open it with any text editor - I used gedit
粘贴此代码并修改参数
[Unit]
Description=System Data Collector
[Service]
ExecStart=/usr/bin/system_info_collector -d /opt/system_info_collector/data.csv
[Install]
WantedBy=default.target
现在启动服务
sudo systemctl daemon-reload
sudo systemctl start system-info-collector
sudo systemctl status system-info-collector # This should print "active (running)" if everything works fine, if there is failure, check log to see what happened
sudo systemctl enable system-info-collector # To enable running service when OS starts
现在您可以使用简单命令转换收集的数据
system_info_collector -a convert -d /opt/system_info_collector/data.csv -p /tmp/plot.html -o
CPU/内存/交换结果
CPU使用率显示在0到100%的范围内,如果计算机有多个核心,则CPU使用率将除以核心数,以获得适当的值。
内存和交换使用率以MiB显示,范围为0到总内存/交换大小。
当检查进程时,如果找不到搜索的进程,则在CPU/内存图中都可见-1。
数据文件兼容性
应用程序不同版本之间的兼容性无法保证,因此如果您想从CSV文件创建图表,请确保使用相同版本的应用程序(CSV文件包含应用程序使用的版本信息)。
通常,可以通过手动添加/删除CSV文件中的记录来轻松解决不兼容性问题。
操作系统支持
目前,完全支持的是Linux,因为使用手动读取/proc
文件(性能原因)。
应用程序也应该在Mac上完全工作,但在Windows上捕获进程的CPU/内存使用率不受支持(除了这一点,一切应该工作正常)。
许可
MIT许可
版权(c)2023 Rafał Mikrut及贡献者
依赖项
~18-29MB
~375K SLoC