我正在运行一个 shell 脚本来执行一个 c++ 应用程序,它测量一个 api 的性能。我可以捕获 api 的延迟(返回一组给定参数的值所花费的时间),但我也希望以 5-10 秒的间隔捕获 cpu 和内存使用情况。
有没有一种方法可以做到这一点,而不会过多地影响系统的性能,并且在同一个脚本中也是如此?我发现了很多例子,其中可以在我们正在运行的脚本之外(独立地)做;但不是我们可以在同一个脚本中完成的。
最佳答案
如果您正在寻找动态捕获整个 linux 机器的 CPU 和内存利用率,那么以下命令也可以帮助您:
中央处理器
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 &
免费
用于内存统计收集
-m
这是针对 mem 的单位(您可以使用 -b
表示字节,-k
表示千字节,- g
表示千兆字节)
然后 10
是间隔数(本例中将有 10 次迭代)
awk'{now=strftime("%Y-%m-%d %T "); print now $0}'
这将转储每次迭代的时间戳
最后,转储 &
继续
关于c++ - 动态捕获 CPU 和内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806830/