Skip to content
Snippets Groups Projects

Enable head-based sampling and add some scripts for large scale deployment

Merged Zhiqiang Xie requested to merge zxie into main
4 files
+ 1
180
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 0
103
import json
import os
import shutil
import argparse
import numpy as np
#parser = argparse.ArgumentParser(description='Generate hindsight config files')
call_map = {}
visited_service = {}
def dfs(root):
if len(call_map[root]) < 11:
return
if root in visited_service:
return
visited_service[root] = 1
for child in call_map[root]:
dfs(child)
return
if __name__ == '__main__':
# args = parser.parse_args()
# Load topology file
f = open("alibaba_topology.json")
data = json.load(f)
data = data["services"]
for i in range(len(data)):
item = data[i]
service_name = item["name"]
call_map[service_name] = {}
apis = item["apis"]
for api in apis:
api_name = api["name"]
children = api["children"]
for child in children:
child_name = child["service"]
if child["service"] not in call_map[service_name]:
call_map[service_name][child_name] = 1
# _max = 0
# for root in call_map:
# visited_service = {}
# dfs(root)
# if (len(visited_service) > _max):
# _max = len(visited_service)
# print(root, len(visited_service))
root = "BlossomSociety"
dfs(root)
print(len(visited_service))
not_found_child = {}
new_topo = []
for i in range(len(data)):
item = data[i]
if item["name"] not in visited_service:
continue
new_item = {}
new_item["alibaba_id"] = item["alibaba_id"]
apis = item["apis"]
new_apis = []
for api in apis:
new_api = {}
new_api["alibaba_calls"] = api["alibaba_calls"]
new_api["albaba_id"] = api["alibaba_id"]
new_children = []
for child in api["children"]:
if child["service"] in visited_service:
new_child = {}
new_child["api"] = child["api"]
new_child["probability"] = child["probability"]
new_child["service"] = child["service"]
new_children.append(new_child)
else:
#print("child not found:", child["service"])
not_found_child[child["service"]] = 1
new_api["children"] = new_children
new_api["exec"] = api["exec"]
new_api["name"] = api["name"]
new_apis.append(new_api)
new_item["apis"] = new_apis
new_item["name"] = item["name"]
new_topo.append(new_item)
print(len(not_found_child))
with open("new_alibaba_topology.json", "w") as f:
json.dump({"services": new_topo}, f, indent=2)
Loading