def main(): global FANOUT nodeList = [] # first node is load balancer # childs include all nginx instances childs_list = range(1, FANOUT + 1) node = march.make_serv_path_node(servName = "load_balancer", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 0, needSync = False, syncNodeId = None, childs = childs_list) nodeList.append(node) node_cnt = 1 # leaf_service for i in range(0, FANOUT): serv_name = "leaf_service_" + str(i) # child list should be the paired memcached childs_list = [FANOUT + 1] node = march.make_serv_path_node(servName = serv_name, servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = i + 1, needSync = False, syncNodeId = None, childs = childs_list) nodeList.append(node) node_cnt += 1 # client finally node = march.make_serv_path_node(servName = "client", servDomain = "", codePath = -1, startStage = 0, endStage = -1, nodeId = FANOUT + 1, needSync = False, syncNodeId = None, childs = []) nodeList.append(node) path = march.make_serv_path(pathId = 0, entry = 0, prob = 100, nodes = nodeList) paths = [path] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): # path 0: memcached cache hit nodeList = [] node_0 = march.make_serv_path_node(servName="thrift_hw", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[1]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=1, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_1) path = march.make_serv_path(pathId=0, entry=0, prob=100, nodes=nodeList) paths = [path] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): # path 0: memcached cache hit nodeList = [] node_0 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[1]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName="memcached", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=1, needSync=False, syncNodeId=None, childs=[2]) nodeList.append(node_1) # should be a different nginx path node_2 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=2, needSync=False, syncNodeId=None, childs=[3]) nodeList.append(node_2) node_3 = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=3, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_3) path_memc_hit = march.make_serv_path(pathId=0, entry=0, prob=100, nodes=nodeList) paths = [path_memc_hit] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): node_0 = march.make_serv_path_node(servName="memcached", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[1]) node_1 = march.make_serv_path_node(servName = "client", servDomain = "", codePath = -1, startStage = 0, endStage = -1, nodeId = 1, needSync = False, syncNodeId = None, childs = []) nodeList = [node_0, node_1] memc_read_only_path = march.make_serv_path(pathId=0, entry=0, prob=1.0, nodes=nodeList) paths = [memc_read_only_path] with open("/home/zhangyanqi/cornell/SAIL/microSSim/architecture/memcached/path.json", "w+") as f: json.dump(paths, f, indent=2)
def generate_memc_hit_path(service_name, start_node_id, back_node_id, node_list): memc_name = service_name + "_memcached" node_0 = march.make_serv_path_node(servName=service_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id, needSync=False, syncNodeId=None, childs=[start_node_id + 1]) node_1 = march.make_serv_path_node(servName=memc_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id + 1, needSync=False, syncNodeId=None, childs=[start_node_id + 2]) node_2 = march.make_serv_path_node(servName=service_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id + 2, needSync=False, syncNodeId=None, childs=[back_node_id]) node_list += [node_0, node_1, node_2] return start_node_id + 2
def main(): # path 0: memcached cache hit nodeList = [] node_0 = march.make_serv_path_node(servName="load_balancer", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[1]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=1, needSync=False, syncNodeId=None, childs=[2, 3, 4, 5, 6]) nodeList.append(node_1) node_2 = march.make_serv_path_node(servName="media", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=2, needSync=False, syncNodeId=None, childs=[7]) nodeList.append(node_2) node_3 = march.make_serv_path_node(servName="unique_id", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=3, needSync=False, syncNodeId=None, childs=[7]) nodeList.append(node_3) node_4 = march.make_serv_path_node(servName="url_shorten", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=4, needSync=False, syncNodeId=None, childs=[7]) nodeList.append(node_4) node_5 = march.make_serv_path_node(servName="text", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=5, needSync=False, syncNodeId=None, childs=[7]) nodeList.append(node_5) node_6 = march.make_serv_path_node(servName="user", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=6, needSync=False, syncNodeId=None, childs=[7]) nodeList.append(node_6) node_7 = march.make_serv_path_node(servName="compose_post", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=7, needSync=False, syncNodeId=None, childs=[8, 11, 14]) nodeList.append(node_7) node_8 = march.make_serv_path_node(servName="post_storage", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=8, needSync=False, syncNodeId=None, childs=[9, 10]) nodeList.append(node_8) node_9 = march.make_serv_path_node(servName="memcached_1", servDomain="", codePath=1, startStage=0, endStage=-1, nodeId=9, needSync=False, syncNodeId=None, childs=[20]) nodeList.append(node_9) node_10 = march.make_serv_path_node(servName="mongodb_1", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=10, needSync=False, syncNodeId=None, childs=[20]) nodeList.append(node_10) node_11 = march.make_serv_path_node(servName="user_timeline", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=11, needSync=False, syncNodeId=None, childs=[12, 13]) nodeList.append(node_11) node_12 = march.make_serv_path_node(servName="redis_0", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=12, needSync=False, syncNodeId=None, childs=[20]) nodeList.append(node_12) node_13 = march.make_serv_path_node(servName="mongodb_2", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=13, needSync=False, syncNodeId=None, childs=[20]) nodeList.append(node_13) node_14 = march.make_serv_path_node(servName="rabbitmq", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=14, needSync=False, syncNodeId=None, childs=[15]) nodeList.append(node_14) node_15 = march.make_serv_path_node(servName="write_home_timeline", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=15, needSync=False, syncNodeId=None, childs=[16, 17]) nodeList.append(node_15) node_16 = march.make_serv_path_node(servName="redis_1", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=16, needSync=False, syncNodeId=None, childs=[20]) nodeList.append(node_16) node_17 = march.make_serv_path_node(servName="social_graph", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=17, needSync=False, syncNodeId=None, childs=[18, 19]) nodeList.append(node_17) node_18 = march.make_serv_path_node(servName="memcached_2", servDomain="", codePath=1, startStage=0, endStage=-1, nodeId=18, needSync=False, syncNodeId=None, childs=[20]) nodeList.append(node_18) node_19 = march.make_serv_path_node(servName="mongodb_3", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=19, needSync=False, syncNodeId=None, childs=[20]) nodeList.append(node_19) node_20 = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=20, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_20) path_memc_hit = march.make_serv_path(pathId=0, entry=0, prob=100, nodes=nodeList) paths = [path_memc_hit] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): # path 0: memcached cache hit nodeList = [] node_0 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 0, needSync = False, syncNodeId = None, childs = [1]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName = "memcached", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 1, needSync = False, syncNodeId = None, childs = [2]) nodeList.append(node_1) # should be a different nginx path node_2 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 2, needSync = False, syncNodeId = None, childs = [3]) nodeList.append(node_2) node_3 = march.make_serv_path_node(servName = "client", servDomain = "", codePath = -1, startStage = 0, endStage = -1, nodeId = 3, needSync = False, syncNodeId = None, childs = []) nodeList.append(node_3) path_memc_hit = march.make_serv_path(pathId = 0, entry = 0, prob = 86, nodes = nodeList) # path 1: memcached miss mongo hit base_node_id = 4 nodeList = [] node_0 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 0 + base_node_id, needSync = False, syncNodeId = None, childs = [1 + base_node_id]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName = "memcached", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 1 + base_node_id, needSync = False, syncNodeId = None, childs = [2 + base_node_id]) nodeList.append(node_1) # should be a different nginx path node_2 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 2 + base_node_id, needSync = False, syncNodeId = None, childs = [3 + base_node_id]) nodeList.append(node_2) node_3 = march.make_serv_path_node(servName = "mongodb", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 3 + base_node_id, needSync = False, syncNodeId = None, childs = [4 + base_node_id]) nodeList.append(node_3) node_4 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 4 + base_node_id, needSync = False, syncNodeId = None, childs = [5 + base_node_id]) nodeList.append(node_4) node_5 = march.make_serv_path_node(servName = "memcached", servDomain = "", codePath = 1, startStage = 0, endStage = -1, nodeId = 5 + base_node_id, needSync = False, syncNodeId = None, childs = [6 + base_node_id]) nodeList.append(node_5) node_6 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 6 + base_node_id, needSync = False, syncNodeId = None, childs = [7 + base_node_id]) nodeList.append(node_6) node_7 = march.make_serv_path_node(servName = "client", servDomain = "", codePath = -1, startStage = 0, endStage = -1, nodeId = 7 + base_node_id, needSync = False, syncNodeId = None, childs = []) nodeList.append(node_7) path_memc_miss_mongo_hit = march.make_serv_path(pathId = 1, entry = base_node_id, prob = 12, nodes = nodeList) base_node_id = 12 # path 2: memcached miss mongo miss nodeList = [] node_0 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 0 + base_node_id, needSync = False, syncNodeId = None, childs = [1 + base_node_id]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName = "memcached", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 1 + base_node_id, needSync = False, syncNodeId = None, childs = [2 + base_node_id]) nodeList.append(node_1) # should be a different nginx path node_2 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 2 + base_node_id, needSync = False, syncNodeId = None, childs = [3 + base_node_id]) nodeList.append(node_2) node_3 = march.make_serv_path_node(servName = "mongodb", servDomain = "", codePath = 1, startStage = 0, endStage = 1, nodeId = 3 + base_node_id, needSync = True, syncNodeId = 5 + base_node_id, childs = [4 + base_node_id]) nodeList.append(node_3) node_4 = march.make_serv_path_node(servName = "mongo_io", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 4 + base_node_id, needSync = False, syncNodeId = None, childs = [5 + base_node_id]) nodeList.append(node_4) node_5 = march.make_serv_path_node(servName = "mongodb", servDomain = "", codePath = 1, startStage = 2, endStage = -1, nodeId = 5 + base_node_id, needSync = False, syncNodeId = None, childs = [6 + base_node_id]) nodeList.append(node_5) node_6 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 6 + base_node_id, needSync = False, syncNodeId = None, childs = [7 + base_node_id]) nodeList.append(node_6) node_7 = march.make_serv_path_node(servName = "memcached", servDomain = "", codePath = 1, startStage = 0, endStage = -1, nodeId = 7 + base_node_id, needSync = False, syncNodeId = None, childs = [8 + base_node_id]) nodeList.append(node_7) node_8 = march.make_serv_path_node(servName = "nginx", servDomain = "", codePath = 0, startStage = 0, endStage = -1, nodeId = 8 + base_node_id, needSync = False, syncNodeId = None, childs = [9 + base_node_id]) nodeList.append(node_8) node_9 = march.make_serv_path_node(servName = "client", servDomain = "", codePath = -1, startStage = 0, endStage = -1, nodeId = 9 + base_node_id, needSync = False, syncNodeId = None, childs = []) nodeList.append(node_9) path_memc_miss_mongo_miss = march.make_serv_path(pathId = 2, entry = base_node_id, prob = 2, nodes = nodeList) paths = [path_memc_hit, path_memc_miss_mongo_hit, path_memc_miss_mongo_miss] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): # path 0: memcached cache hit nodeList = [] node_0 = march.make_serv_path_node(servName="php", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName="movieID", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=1, needSync=False, syncNodeId=None, childs=[]) node_2 = march.make_serv_path_node(servName="text", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=2, needSync=False, syncNodeId=None, childs=[]) node_3 = march.make_serv_path_node(servName="uniqueID", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=3, needSync=False, syncNodeId=None, childs=[]) node_4 = march.make_serv_path_node(servName="AssignRating", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=4, needSync=False, syncNodeId=None, childs=[]) node_5 = march.make_serv_path_node(servName="ComposeReview", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=5, needSync=False, syncNodeId=None, childs=[]) node_6 = march.make_serv_path_node(servName="MovieReviewDB", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=6, needSync=False, syncNodeId=None, childs=[]) node_7 = march.make_serv_path_node(servName="ReviewStorage", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=7, needSync=False, syncNodeId=None, childs=[]) node_8 = march.make_serv_path_node(servName="UserReviewDB", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=8, needSync=False, syncNodeId=None, childs=[]) ############################ old 2tier starts ########################################### node_0 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[1]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName="memcached", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=1, needSync=False, syncNodeId=None, childs=[2]) nodeList.append(node_1) # should be a different nginx path node_2 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=2, needSync=False, syncNodeId=None, childs=[3]) nodeList.append(node_2) node_3 = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=3, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_3) path_memc_hit = march.make_serv_path(pathId=0, entry=0, prob=1.0, nodes=nodeList) paths = [path_memc_hit] ############################ old 2tier ends ########################################### with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): # path 0: memcached cache hit nodeList = [] node_0 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[1]) nodeList.append(node_0) node_1 = march.make_serv_path_node(servName="memcached", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=1, needSync=False, syncNodeId=None, childs=[2]) nodeList.append(node_1) node_2 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=1, startStage=0, endStage=-1, nodeId=2, needSync=False, syncNodeId=None, childs=[3]) nodeList.append(node_2) node_3 = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=3, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_3) path_memc_hit = march.make_serv_path(pathId=0, entry=0, prob=0.5, nodes=nodeList) # path 1: memcached miss & mongodb hit nodeList = [node_0, node_1, node_2] # php_fcgi_req node_3 = march.make_serv_path_node(servName="php", servDomain="", codePath=0, startStage=0, endStage=0, nodeId=3, needSync=True, syncNodeId=5, childs=[4]) nodeList.append(node_3) node_4 = march.make_serv_path_node(servName="php_io", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=4, needSync=False, syncNodeId=None, childs=[5]) nodeList.append(node_4) # php_fopen node_5 = march.make_serv_path_node(servName="php", servDomain="", codePath=0, startStage=0, endStage=1, nodeId=5, needSync=True, syncNodeId=7, childs=[6]) nodeList.append(node_5) node_6 = march.make_serv_path_node(servName="php_io", servDomain="", codePath=1, startStage=0, endStage=-1, nodeId=6, needSync=False, syncNodeId=None, childs=[7]) nodeList.append(node_6) # php_fput node_7 = march.make_serv_path_node(servName="php", servDomain="", codePath=0, startStage=1, endStage=2, nodeId=7, needSync=True, syncNodeId=9, childs=[8]) nodeList.append(node_7) node_8 = march.make_serv_path_node(servName="mongodb", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=8, needSync=False, syncNodeId=None, childs=[9]) nodeList.append(node_8) # php_find_done node_9 = march.make_serv_path_node(servName="php", servDomain="", codePath=0, startStage=2, endStage=3, nodeId=9, needSync=True, syncNodeId=11, childs=[10]) nodeList.append(node_9) node_10 = march.make_serv_path_node(servName="mongodb", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=10, needSync=False, syncNodeId=None, childs=[11]) nodeList.append(node_10) # php_get_bytes node_11 = march.make_serv_path_node(servName="php", servDomain="", codePath=0, startStage=3, endStage=4, nodeId=11, needSync=True, syncNodeId=13, childs=[12]) nodeList.append(node_11) node_12 = march.make_serv_path_node(servName="memcached", servDomain="", codePath=1, startStage=0, endStage=-1, nodeId=12, needSync=False, syncNodeId=None, childs=[13]) nodeList.append(node_12) # php_mmc_store node_13 = march.make_serv_path_node(servName="php", servDomain="", codePath=0, startStage=4, endStage=-1, nodeId=13, needSync=False, syncNodeId=None, childs=[14]) nodeList.append(node_13) node_14 = march.make_serv_path_node(servName="nginx", servDomain="", codePath=2, startStage=0, endStage=-1, nodeId=14, needSync=False, syncNodeId=None, childs=[15]) nodeList.append(node_14) node_15 = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=15, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_15) path_memc_miss_mongo_hit = march.make_serv_path(pathId=1, entry=0, prob=0.25, nodes=nodeList) # path 2: memcached miss & mongodb miss nodeList = [] # first access to mongo node_8 = march.make_serv_path_node(servName="mongodb", servDomain="", codePath=1, startStage=0, endStage=1, nodeId=8, needSync=True, syncNodeId=19, childs=[18]) node_18 = march.make_serv_path_node(servName="mongo_io", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=18, needSync=False, syncNodeId=None, childs=[19]) node_19 = march.make_serv_path_node(servName="mongodb", servDomain="", codePath=1, startStage=1, endStage=-1, nodeId=19, needSync=False, syncNodeId=None, childs=[9]) # second access to mongo, should also access mongo_io, here just for testing internal chunking node_10 = march.make_serv_path_node(servName="mongodb", servDomain="", codePath=1, startStage=0, endStage=-1, nodeId=10, needSync=False, syncNodeId=None, childs=[11]) nodeList = [ node_0, node_1, node_2, node_3, node_4, node_5, node_6, node_7, node_8, node_9, node_10, node_11, node_12, node_13, node_14, node_15, node_18, node_19 ] path_memc_miss_mongo_miss = march.make_serv_path(pathId=2, entry=0, prob=0.25, nodes=nodeList) paths = [ path_memc_hit, path_memc_miss_mongo_hit, path_memc_miss_mongo_miss ] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): global FANOUT nodeList = [] node_cnt = 0 ngx_1st_start_node = 1 memc_start_node = FANOUT + 1 ngx_2nd_start_node = FANOUT * 2 + 1 client_dst_node = FANOUT * 3 + 1 # first node is load balancer # childs include all nginx instances childs_list = range(1, FANOUT + 1) node = march.make_serv_path_node(servName="load_balancer", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=childs_list) nodeList.append(node) node_cnt = 1 # then nginx for i in range(0, FANOUT): serv_name = "nginx_" + str(i) # child list should be the paired memcached childs_list = [i + memc_start_node] node = march.make_serv_path_node(servName=serv_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=i + ngx_1st_start_node, needSync=False, syncNodeId=None, childs=childs_list) nodeList.append(node) node_cnt += 1 # then memcached for i in range(0, FANOUT): serv_name = "memcached_" + str(i) # child list should be paired nginx childs_list = [i + ngx_2nd_start_node] node = march.make_serv_path_node(servName=serv_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=i + memc_start_node, needSync=False, syncNodeId=None, childs=childs_list) nodeList.append(node) node_cnt += 1 # then nginx for i in range(0, FANOUT): serv_name = "nginx_" + str(i) # child list should be client childs_list = [client_dst_node] node = march.make_serv_path_node(servName=serv_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=i + ngx_2nd_start_node, needSync=False, syncNodeId=None, childs=childs_list) nodeList.append(node) node_cnt += 1 # client finally node = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=client_dst_node, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node) path = march.make_serv_path(pathId=0, entry=0, prob=1.0, nodes=nodeList) paths = [path] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def main(): global FANOUT # path 0: memcached cache hit nodeList = [] node_0 = march.make_serv_path_node(servName="nginx_frontend", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=range(1, FANOUT + 1)) nodeList.append(node_0) for i in range(1, FANOUT + 1): serv_name = "nginx_leaf_" + str(i - 1) node = march.make_serv_path_node(servName=serv_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=i, needSync=False, syncNodeId=None, childs=[FANOUT + 1]) nodeList.append(node) # node_1 = march.make_serv_path_node(servName = "memcached", servDomain = "", codePath = 0, startStage = 0, endStage = -1, # nodeId = 1, needSync = False, syncNodeId = None, childs = [2]) # nodeList.append(node_1) # should be a different nginx path (currently still set to 0 to prevent deadlock issues) node_2 = march.make_serv_path_node(servName="nginx_frontend", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=FANOUT + 1, needSync=False, syncNodeId=None, childs=[FANOUT + 2]) nodeList.append(node_2) # last node returns to client node_3 = march.make_serv_path_node(servName="client", servDomain="", codePath=-1, startStage=0, endStage=-1, nodeId=FANOUT + 2, needSync=False, syncNodeId=None, childs=[]) nodeList.append(node_3) path = march.make_serv_path(pathId=0, entry=0, prob=100, nodes=nodeList) paths = [path] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)
def generate_memc_miss_mongo_hit_path(service_name, start_node_id, back_node_id, node_list): memc_name = service_name + "_memcached" mongo_name = service_name + "_mongodb" node_0 = march.make_serv_path_node(servName=service_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id, needSync=False, syncNodeId=None, childs=[start_node_id + 1]) node_1 = march.make_serv_path_node(servName=memc_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id + 1, needSync=False, syncNodeId=None, childs=[start_node_id + 2]) node_2 = march.make_serv_path_node(servName=service_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id + 2, needSync=False, syncNodeId=None, childs=[start_node_id + 3]) node_3 = march.make_serv_path_node(servName=mongo_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id + 3, needSync=False, syncNodeId=None, childs=[start_node_id + 4]) node_4 = march.make_serv_path_node(servName=service_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id + 4, needSync=False, syncNodeId=None, childs=[start_node_id + 5]) node_5 = march.make_serv_path_node(servName=memc_name, servDomain="", codePath=1, startStage=0, endStage=-1, nodeId=start_node_id + 5, needSync=False, syncNodeId=None, childs=[start_node_id + 6]) node_6 = march.make_serv_path_node(servName=service_name, servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=start_node_id + 6, needSync=False, syncNodeId=None, childs=[back_node_id]) node_list += [node_0, node_1, node_2, node_3, node_4, node_5, node_6] return start_node_id + 6
def main(): user_path = [0] tweet_path = [0] file_path = [0] func = [ generate_memc_hit_path, generate_memc_miss_mongo_hit_path, generate_memc_miss_mongo_miss_path ] user_prob = [1.0] tweet_prob = [1.0] file_prob = [1.0] path_id = 0 paths = [] for user in user_path: for tweet in tweet_path: for file in file_path: back_to_compose_1st_node_id = 30 back_to_compose_2nd_node_id = 50 start_node_id = 0 node_list = [] start_child_0 = func[user]("user", 1, back_to_compose_1st_node_id, node_list) func[tweet]("tweet", start_child_0 + 1, back_to_compose_1st_node_id, node_list) start_node = march.make_serv_path_node( servName="compose", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=0, needSync=False, syncNodeId=None, childs=[1, start_child_0 + 1]) node_list = [start_node] + node_list cur_node_id = back_to_compose_1st_node_id compose_sync_node = march.make_serv_path_node( servName="compose", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=cur_node_id, needSync=False, syncNodeId=None, childs=[cur_node_id + 1]) node_list.append(compose_sync_node) func[file]("file", cur_node_id + 1, back_to_compose_2nd_node_id, node_list) cur_node_id = back_to_compose_2nd_node_id compose_final_node = march.make_serv_path_node( servName="compose", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=cur_node_id, needSync=False, syncNodeId=None, childs=[cur_node_id + 1]) client_node = march.make_serv_path_node(servName="client", servDomain="", codePath=0, startStage=0, endStage=-1, nodeId=cur_node_id + 1, needSync=False, syncNodeId=None, childs=[]) node_list += [compose_final_node, client_node] path_prob = 100.0 * user_prob[user] * tweet_prob[ tweet] * file_prob[file] path = march.make_serv_path(pathId=path_id, entry=0, prob=path_prob, nodes=node_list) for node in node_list: print 'node id ', str( node["node_id"]), ', service: ', node[ "service_name"], ", next node id: ", node["childs"] print "path ", path_id, ", prob ", path_prob, " done\n" path_id += 1 paths += [path] with open("./json/path.json", "w+") as f: json.dump(paths, f, indent=2)