Exemple #1
0
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)
Exemple #3
0
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)
Exemple #5
0
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
Exemple #6
0
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)
Exemple #7
0
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)
Exemple #8
0
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)
Exemple #9
0
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)
Exemple #10
0
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)
Exemple #11
0
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)
Exemple #12
0
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
Exemple #13
0
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)