动态捕获CPU和内存使用情况
-
03-07-2019 - |
题
我正在运行一个shell脚本来执行一个c ++应用程序,它测量api的性能。我可以捕获api的延迟(返回给定参数集的值所花费的时间),但我也希望以5-10秒的间隔捕获cpu和内存使用情况。
有没有办法在不影响系统性能的情况下执行此操作,并且在同一个脚本中也是如此?我找到了许多例子,可以在外面(独立地)执行我们正在运行的脚本;但不是我们可以在同一个剧本中做的事情。
解决方案
我建议使用' 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
其他提示
如果您正在寻找动态捕获整个Linux机箱的CPU和内存使用率,那么以下命令也可以帮助您:
<强> CPU 强>
vmstat -n 15 10| awk '{now=strftime("%Y-%m-%d %T "); print now free -m -s 10 10 | awk '{now=strftime("%Y-%m-%d %T "); print now <*>}'> DataDumpMemoryfile.csv &
}'> CPUDataDump.csv &
vmstat
用于收集CPU计数器
-n
表示延迟值,在这种情况下是15,这意味着每15秒后,将收集统计数据。
然后 10
是间隔的数量,在这个例子中将有10次迭代
awk'{now = strftime(&quot;%Y-%m-%d%T&quot;);现在打印$ 0}'
这将转储每次迭代的时间戳
最后,带有&amp;
的转储文件用于继续
<强>内存强>
<*> free
用于mem stats collection
-m
这是针对mem的单位(你可以使用 -b
表示字节, -k
表示千字节, - g
(千兆字节)
然后 10
是间隔的数量(在这个例子中会有10次迭代)
awk'{now = strftime(&quot;%Y-%m-%d%T&quot;);现在打印$ 0}'
这将转储每次迭代的时间戳
最后,转储&amp;
继续
不隶属于 StackOverflow