Пример #1
0
def main():
    """
    初始化用户请求的资源:vm_list和vm_link_list
    """
    s = service.Service()
    s.init_service()
    vm_list = s.vm_list
    vm_link_list = s.vm_link_list
    user_num = len(vm_list)
    """
    初始化工业云数据中心
    """
    d_DT = datacenter.Datacenter()
    d_DT.init_datacenter_network(2)
    g_DT = d_DT.g

    print("工业云数据中心的资源为:")
    d_DT.show_datacenter_network()
    """
    处理每一个用户的资源请求
    """
    for i in range(user_num):
        user_vm_list = vm_list[i]
        user_vm_link_list = vm_link_list[i]
        """
        输出每一个用户所请求的资源
        """
        print("用户" + str(i + 1) + "的请求资源如下")
        service.show_vm_info(user_vm_list)
        service.show_vm_link_info(user_vm_link_list)

        for vm in user_vm_list:
            algorithm_Random.placement_Random(d_DT.host_list, vm)
        algorithm_VMSP.update_host_link(g_DT, user_vm_link_list,
                                        d_DT.host_link_list)
        print()
        print("工业云数据中心的资源使用情况如下")
        d_DT.show_datacenter_network()
    """
    虚拟机总列表:vm_vm_list
    链路请求总列表:vm_link_link_list
    """
    vm_vm_list = []
    for i in vm_list:
        for j in i:
            vm_vm_list.append(j)
    vm_link_link_list = []
    for i in vm_link_list:
        for j in i:
            vm_link_link_list.append(j)

    count = 0
    clock = 0
    while (count < 8):

        time.sleep(2)
        algorithm_VMDM.vm_resource_dynamic_change(vm_vm_list)
        algorithm_VMDM.vm_link_dynamic_change(vm_link_link_list)
        power_consumption = 1800
        bandwidth_consumption = 800
        active_host_num = 6
        migration_cost = 1.8
        algorithm_VMDM.update_host_link(g_DT, vm_link_link_list,
                                        d_DT.host_link_list)
        algorithm_VMDM.update_host_list(vm_vm_list, d_DT.host_list)
        power_round = round(random.uniform(-100, 100), 2)
        power_consumption_sample = power_consumption + power_round
        bandwidth_round = round(random.uniform(-100, 400), 2)
        bandwidth_consumption_sample = bandwidth_consumption + bandwidth_round
        active_host_num_sample = active_host_num + random.randint(-1, 1)
        migration_cost_round = round(random.uniform(-0.28, 0.4), 2)
        migration_cost_sample = migration_cost + migration_cost_round

        r = result_DT.Result(
            result_id=str(uuid.uuid1()),
            timestamps=clock,
            power_consumption=power_consumption_sample,
            bandwidth_consumption=bandwidth_consumption_sample,
            active_host_num=active_host_num_sample,
            migration_cost=migration_cost_sample)
        print(
            "--------------------------------------------------------------------------------------------------------------"
        )
        # print("时间为:" + str(clock), "功耗为:" + str(power_consumption_sample),
        #       "链路资源消耗为:" + str(bandwidth_consumption_sample,
        #       "激活服务器数量为:" + str(active_host_num_sample)))
        # + str(migration_cost_sample)"迁移代价为:"
        # print("迁移代价为:"+str(migration_cost_sample))
        print(
            "时间为:" + str(clock) + "时",
            "功耗为:" + str(round(power_consumption_sample, 2)) + "w",
            "链路资源消耗为:" + str(round(bandwidth_consumption_sample, 2)) +
            "Gbit/s", "激活服务器数量为:" + str(active_host_num_sample) + "个",
            "迁移代价为:" + str(round(migration_cost_sample, 2)) + "s")

        result_DT.add_result_data(r)
        count = count + 1
        clock = clock + 3
    print(
        "--------------------------------------------------------------------------------------------------------------"
    )
Пример #2
0
def main():
    """
    初始化用户请求的资源:vm_list和vm_link_list
    """
    s = service.Service()
    s.init_service()
    vm_list = s.vm_list
    vm_link_list = s.vm_link_list
    user_num = len(vm_list)
    """
    初始化工业云数据中心
    """
    d_DT = datacenter.Datacenter()
    d_DT.init_datacenter_network(2)
    g_DT = d_DT.g

    print("工业云数据中心的资源为:")
    d_DT.show_datacenter_network()
    """
    处理每一个用户的资源请求
    """
    for i in range(user_num):
        user_vm_list = vm_list[i]
        user_vm_link_list = vm_link_list[i]
        """
        输出每一个用户所请求的资源
        """
        print("用户" + str(i + 1) + "的请求资源如下")
        service.show_vm_info(user_vm_list)
        service.show_vm_link_info(user_vm_link_list)

        for vm in user_vm_list:
            algorithm_Random.placement_Random(d_DT.host_list, vm)
        algorithm_VMSP.update_host_link(g_DT, user_vm_link_list,
                                        d_DT.host_link_list)
        print()
        print("工业云数据中心的资源使用情况如下")
        d_DT.show_datacenter_network()
    """
    虚拟机总列表:vm_vm_list
    链路请求总列表:vm_link_link_list
    """
    vm_vm_list = []
    for i in vm_list:
        for j in i:
            vm_vm_list.append(j)
    vm_link_link_list = []
    for i in vm_link_list:
        for j in i:
            vm_link_link_list.append(j)

    count = 0
    clock = 0
    while (count < 12):
        time.sleep(2)
        algorithm_VMDM.vm_resource_dynamic_change(vm_vm_list)
        algorithm_VMDM.vm_link_dynamic_change(vm_link_link_list)

        del_dynamic_high_threshold_host_list(d_DT, vm_vm_list)

        algorithm_VMDM.update_host_link(g_DT, vm_link_link_list,
                                        d_DT.host_link_list)
        algorithm_VMDM.update_host_list(vm_vm_list, d_DT.host_list)

        r = result_DT.Result(
            result_id=str(uuid.uuid1()),
            timestamps=clock,
            power_consumption=power_consumption.
            get_datacenter_power_consumption(d_DT.host_list),
            bandwidth_consumption=bandwidth_consumption.
            get_datacenter_bandwidth_consumption(g_DT, d_DT.host_link_list),
            active_host_num=active_host_number.get_active_host_number(
                d_DT.host_list),
            migration_cost=migration_cost)
        print(
            "--------------------------------------------------------------------------------------------------------------"
        )
        print(
            "时间为:" + str(clock), "功耗为:" + str(
                power_consumption.get_datacenter_power_consumption(
                    d_DT.host_list)),
            "链路资源消耗为:" + str(
                bandwidth_consumption.get_datacenter_bandwidth_consumption(
                    g_DT, d_DT.host_link_list)), "激活服务器数量为:" +
            str(active_host_number.get_active_host_number(d_DT.host_list)),
            "迁移代价为:" + str(migration_cost))

        result_DT.add_result_data(r)
        count = count + 1
        clock = clock + 2
Пример #3
0
def main():
    """
    初始化用户请求的资源:vm_list和vm_link_list
    """
    s = service.Service()
    s.init_service()
    vm_list = s.vm_list
    vm_link_list = s.vm_link_list
    user_num = len(vm_list)
    """
    初始化VMSP工业云数据中心
    """
    power_consumption_list_VMSP = []  #功耗列表
    bandwidth_consumption_list_VMSP = []  #链路消耗列表
    active_host_number_list_VMSP = []  #活跃服务器数量列表
    x_list_VMSP = []  #横坐标
    x_value_VMSP = 0  #横坐标数值
    d_VMSP = datacenter.Datacenter()
    d_VMSP.init_datacenter_network(2)
    g_VMSP = d_VMSP.g
    print("利用VMSP算法将虚拟机放置在数据中心:")
    print("初始化工业云数据中心......")
    d_VMSP.show_datacenter_network()
    """
    处理每一个用户的资源请求
    """
    for i in range(user_num):
        user_vm_list = vm_list[i]
        user_vm_link_list = vm_link_list[i]
        x_value_VMSP = x_value_VMSP + len(user_vm_list)
        x_list_VMSP.append(x_value_VMSP)
        """
        输出每一个用户所请求的资源
        """
        print("用户" + str(i + 1) + "的请求资源如下")
        service.show_vm_info(user_vm_list)
        service.show_vm_link_info(user_vm_link_list)
        """
        处理用户的每一个虚拟机
        """
        for vm in user_vm_list:
            algorithm_VMSP.placement_VMSP(g_VMSP, vm, user_vm_list,
                                          user_vm_link_list,
                                          d_VMSP.get_avail_host_list(),
                                          d_VMSP.host_link_list, 1, 1)
        algorithm_VMSP.update_host_link(g_VMSP, user_vm_link_list,
                                        d_VMSP.host_link_list)
        print()
        print("工业云数据中心的资源使用情况如下")
        d_VMSP.show_datacenter_network()
        """
        数据中心活跃服务器的数量
        """
        print("------------------------------------------------")
        active_host_number_sample_VMSP = active_host_number.get_active_host_number(
            d_VMSP.host_list)
        print("数据中心活跃服务器的数量为:", active_host_number_sample_VMSP)
        active_host_number_list_VMSP.append(active_host_number_sample_VMSP)
        """
        数据中心的功率消耗
        """
        power_consumption_sample_VMSP = power_consumption.get_datacenter_power_consumption(
            d_VMSP.host_list)
        print("数据中心的功率消耗为:", power_consumption_sample_VMSP)
        power_consumption_list_VMSP.append(power_consumption_sample_VMSP)
        """
        数据中心的链路消耗
        """
        bandwidth_consumption_sample_VMSP = bandwidth_consumption.get_datacenter_bandwidth_consumption(
            g_VMSP, d_VMSP.host_link_list)
        print("数据中心的链路消耗为:", bandwidth_consumption_sample_VMSP)
        bandwidth_consumption_list_VMSP.append(
            bandwidth_consumption_sample_VMSP)
        print("------------------------------------------------")

        print()
        print()
    """
    输出VMSP的信息列表
    """
    print()
    print("在VMSP算法下,数据中心活跃服务器的数量列表为:")
    print(active_host_number_list_VMSP)
    print()
    print("在VMSP算法下,数据中心的功率消耗列表为:")
    print(power_consumption_list_VMSP)
    print()
    print("在VMSP算法下,数据中心的链路资源消耗列表为:")
    print(bandwidth_consumption_list_VMSP)
    print()
    """
    虚拟机总列表:vm_vm_list
    链路请求总列表:vm_link_link_list
    """
    vm_vm_list = []
    for i in vm_list:
        for j in i:
            vm_vm_list.append(j)
    vm_link_link_list = []
    for i in vm_link_list:
        for j in i:
            vm_link_link_list.append(j)

    # for i in vm_vm_list:
    #     print(i.name)
    # for i in vm_link_link_list:
    #     print(i.name)

    g_VMDM = g_VMSP
    d_VMDM = d_VMSP

    count = 0
    clock = 0
    while (count < 12):
        time.sleep(2)
        algorithm_VMDM.vm_resource_dynamic_change(vm_vm_list)
        algorithm_VMDM.vm_link_dynamic_change(vm_link_link_list)
        # algorithm_VMDM.del_low_resource_host(g_VMDM, d_VMDM, d_VMDM.get_low_resource_host_list(), vm_vm_list, vm_link_link_list,
        #                                       d_VMDM.host_link_list, 1, 1)
        #
        # algorithm_VMDM.del_candidate_host(g_VMDM, d_VMDM, vm_vm_list, vm_link_link_list,
        #                                   d_VMDM.host_link_list, 1, 1, d_VMDM.get_candidate_host_list())
        algorithm_VMDM.update_host_link(g_VMDM, vm_link_link_list,
                                        d_VMDM.host_link_list)
        algorithm_VMDM.update_host_list(vm_vm_list, d_VMDM.host_list)

        r = result_VMDM.Result(
            result_id=str(uuid.uuid1()),
            timestamps=clock,
            power_consumption=power_consumption.
            get_datacenter_power_consumption(d_VMDM.host_list),
            bandwidth_consumption=bandwidth_consumption.
            get_datacenter_bandwidth_consumption(g_VMDM,
                                                 d_VMDM.host_link_list),
            active_host_num=active_host_number.get_active_host_number(
                d_VMDM.host_list),
            migration_cost=migration_cost.get_migration_cost())
        print(
            "--------------------------------------------------------------------------------------------------------------"
        )
        print(
            "时间为:" + str(clock), "功耗为:" + str(
                power_consumption.get_datacenter_power_consumption(
                    d_VMDM.host_list)),
            "链路资源消耗为:" + str(
                bandwidth_consumption.get_datacenter_bandwidth_consumption(
                    g_VMDM, d_VMDM.host_link_list)), "激活服务器数量为:" +
            str(active_host_number.get_active_host_number(d_VMDM.host_list)),
            "迁移代价为:" + str(migration_cost.get_migration_cost()))

        result_VMDM.add_result_data(r)
        count = count + 1
        clock = clock + 2