A manager gépre kell belépni, majd:
workon circle
cd circle/circle
python manage.py shell
Statisztikák lekérdezése a VM életciklusával kapcsolatban:
from vm.models.instance import Instance
insts = Instance.objects.all()
def uptime(vm):
deploy_date = None
destroy_date = None
for a in vm.get_activities():
if a.activity_code == "vm.Instance.deploy":
deploy_date = a.started
if a.activity_code == "vm.Instance.destroy":
destroy_date = a.started
if deploy_date and destroy_date:
return (destroy_date - deploy_date).total_seconds() / 3600
return 0
runtime_h = []
for i in insts:
if i.status == "DESTROYED":
h = uptime(i)
if h != 0:
runtime_h.append(h)
Hányszor kellett a lejáratot meghosszabbítani:
def renew_stat(vm):
renew_cnt = 0
for a in vm.get_activities():
# activity neve
if a.activity_code == "vm.Instance.renew":
renew_cnt += 1
return renew_cnt
renews = []
for i in insts:
h = renew_stat(i)
renews.append(h)
Egy activity időtartama:
def act_time(act):
return (act.finished - act.started).total_seconds()
Hisztogram készítése:
import matplotlib.pyplot as plt
def avg(list):
return sum(list) / len(list)
file = open("lin2_deploy.txt", "r")
data1 = []
for i in file:
if float(i) <= 400:
data1.append(float(i))
data1 = sorted(data1, reverse=True)
data1 = data1[:3000]
file.close()
file = open("win_deploy.txt", "r")
data2 = []
for i in file:
if float(i) <= 400:
data2.append(float(i))
data2 = sorted(data2, reverse=True)
data2 = data2[:3000]
plt.hist([data1, data2], label=["Linux", "Windows"], color=["red", "blue"],
bins=50)
plt.axvline(avg(data1), color='red', linestyle='dashed', linewidth=1)
plt.axvline(avg(data2), color='blue', linestyle='dashed', linewidth=1)
plt.title("Distribution of deploytime")
#plt.yscale("log")
plt.ylabel("Piece (log scale)")
plt.xlabel("Full VM's deploytime (sec)")
plt.legend()
plt.show()
Datastore lemezek exportálása json-ba:
#export_json.sh
for var in "$@"
do
if [[ ${var} != *"dump"* ]];then
qemu-img info --output json ${var}
fi
echo ","
done
echo "]"
Majd: bash export_json.sh /datastore/* > disks.txt
Diszk hisztogram:
import matplotlib.pyplot as plt
import json
import numpy as np
x = np.linspace(0, 10, 1000)
def avg(list):
return sum(list) / len(list)
with open("disks.txt", "r") as jdisk:
disks = json.load(jdisk)
template_map = {}
overlay_map = {}
for i in disks:
if "backing-filename" in i:
overlay_map[i["filename"]] = i
else:
template_map[i["filename"]] = i
ov_sizes = []
te_sizes = []
for i in overlay_map.values():
template_name = i["backing-filename"]
template = template_map[template_name]
template_size = template["actual-size"] / 1048576
overlay_size = i["actual-size"] / 1048576
ov_sizes.append(overlay_size)
te_sizes.append(template_size)
plt.scatter(te_sizes, ov_sizes, c="blue", marker="+")
plt.plot([-200, 60000], [-200, 60000], color = 'red', label = 'x=y')
plt.axvline(avg(te_sizes), color='gray', linestyle='dashed', linewidth=1)
plt.axhline(avg(ov_sizes), color='gray', linestyle='dashed', linewidth=1)
#plt.text(avg(te_sizes)*1.1, avg(ov_sizes)*1.8, "AVG")
#plt.yscale("log")
plt.legend(["data", "y=x", "AVG"])
plt.ylabel("Overlay image size (MB)")
plt.xlabel("Backing file size (MB)")
plt.show()
exit()
with open("overlayimg.txt", "w") as out:
for i in overlay_map.values():
template_name = i["backing-filename"]
template = template_map[template_name]
template_size = template["actual-size"] / 1048576
overlay_size = i["actual-size"] / 1048576
if overlay_size > 200000:
print(i["filename"])
ov_sizes.append(overlay_size)
te_sizes.append(template_size)
out.write(f"{template_size},{overlay_size}\n")