背景:真实场景下的资源使用信息会被记录并整理成trace,根据有影响力的公司公布出来的trace还原该场景下的资源特征可帮助学术届进一步研究优化.首先,目标是还原目标trace中的资源使用特征,就得对平台的资源进行监控,本文实验环境:Ubuntu16.04,使用sar进行所需资源的监控.
sar -u 1 10
这个指令是对cpu资源使用特征进行监控,每隔1s输出监控信息,共10次结束.对于监控信息的存储,也可用-o选项.
sar -u 1 10 -o /home/xxx
这样会直接在-o目录生成一个二进制文件,查看的话,直接点开是乱码,用以下代码能够在终端查看:
sar -f sa14
但是我们在提取有效信息的时候往往需要直接记录在txt文件中,这样方便些,这时可以用以下代码:
sar -u 1 10 > /home/odin/Documents/CloudArch/cpudata.txt
直接将终端信息输出重定向到制定txt文件中.
(loading)
CPU %user %nice %system %iowait %steal %idle
输出参数如上所示,代表CPU资源占用的几个指标:
%user:表示用户空间程序的cpu使用率
%nice:表示用户空间且通过nice调度过的程序的cpu使用率
%system:表示系统空间的cpu使用率,主要是内核程序
%iowait:cpu运行时在等待io的时间
%steal:被虚拟机偷走的cpu资源
%idle:空闲的cpu资源率
对于输出得到的文件,我们下一步需要提取出我们需要的信息,在这里以用户资源占用为例:针对所需资源的提取,可以用python写个小脚本实现.
file = open('/Users/purixingtei/Desktop/cpudata.txt','r') result = list() for c in file.readlines(): c_array = c.split() result.append(c_array[3]) result.pop()
为了直观观察小程序的资源使用特征,我们可以用折线图表示:
x = range(1000) plt.plot(x, result, mec = 'r', mfc = 'w') plt.margins(0) plt.subplots_adjust(bottom=0.15) plt.show()
得到下图的资源使用特征图:
附测试负载为shell脚本实现的浮点数运算:
#!/bin/bash a=59 b=60 while true do echo "scale=4; $a / $b"|bc done