捕获CPU和内存使用情况动态

问题描述 投票:6回答:2

我运行一个shell脚本来执行一个C ++应用程序,是衡量一个API的性能。我可以捕捉潜伏的API(时间为一组给定的参数返回一个值取),但我也希望在说5-10秒的时间间隔一起捕捉CPU和内存使用率。

有没有办法做到这一点,而不影响系统的太多了,太中相同的脚本的性能?我发现有很多的例子,其中一个能做到,我们正在运行的脚本之外(独立);但没有一个在这里我们可以在同一个脚本内完成。

c++ performance shell memory-management cpu-usage
2个回答
1
投票

我建议使用“time”命令,也“vmstat”命令。第一会给可执行执行和第二的CPU使用率 - 周期CPU /存储器系统/ IO(即每秒一次)转储。

例:

time dd if=/dev/zero bs=1K of=/dev/null count=1024000
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s
0.218u 0.519s 0:00.73 98.6%     0+0k 0+0io 0pf+0w <== that's time result

2
投票

如果你正在寻找捕捉CPU和纪念品利用动态的整个Linux框,然后下面的命令也可以帮助你:

中央处理器

vmstat -n 15 10| awk '{now=strftime("%Y-%m-%d %T "); print now $0}'> CPUDataDump.csv &

vmstat用于CPU计数器的收集

-n的延迟值,在这种情况下,它是15,每15秒后,这意味着,统计数据将被收集。

然后10是间隔的数目,就在这个例子中10次迭代

awk '{now=strftime("%Y-%m-%d %T "); print now $0}'这将转储每次迭代的时间戳

最终,转储与&的延续文件

记忆

free -m -s 10 10 | awk '{now=strftime("%Y-%m-%d %T "); print now $0}'> DataDumpMemoryfile.csv &

free是MEM统计信息收集

-m这是MEM的单位(可以使用-b为字节,-k千字节,-g千兆字节)

然后10是间隔的数目(会有在这个例子中10次迭代)

awk'{now=strftime("%Y-%m-%d %T "); print now $0}'这将转储每次迭代的时间戳

最终,转储&的延续

© www.soinside.com 2019 - 2024. All rights reserved.