Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

CIRCLE3 / balancer

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Members
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Statisztikák

Statisztikák

Last edited by Karsa Zoltán István Jan 16, 2024
Page history

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")
  Clone repository
  • Statisztikák
  • Telepítés
  • Home
More Pages
×

New Wiki Page

Tip: You can specify the full path for the new file. We will automatically create any missing directories.