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

标签 c++ performance shell memory-management cpu-usage

我正在运行一个 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/

相关文章:

c++ - 在 C++ 中处理文件映射

sql - 无需索引即可提高 oracle 查询性能

c++ - 根据时钟滴答测量算法运行时间

linux - 如何在从文件读取的配置单元查询中传递变量作为表名

c++ - 如何将构造函数参数转发给 boost::optional

c++ - SURF 和 SIFT 的旋转变化性能

c++ - 只使用互斥锁实现读/写锁?

c - 如果在 Intel Skylake CPU 上作为函数调用,为什么我的空循环运行速度快两倍?

linux - 使用 grep 查找/剪切功能而不是源代码在 bash 中加载配置文件

bash - 使用空格将参数传递给 Bash 脚本中的命令