Skip to content

Commit

Permalink
check in
Browse files Browse the repository at this point in the history
  • Loading branch information
1a1a11a committed May 17, 2024
1 parent fda7692 commit 638e186
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 19 deletions.
61 changes: 59 additions & 2 deletions scripts/plot/load_miss_ratio.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def _find_cache_size(datapath, metric):
)

if len(cache_sizes) < N_CACHE_SIZE:
# the working sets of some traces are not large enough, when running with some cache sizes,
# the working sets of some traces are not large enough, when running with some cache sizes,
# e.g., 0.0001, there are too few objects to run, so we will have fewer cache sizes
return []

Expand Down Expand Up @@ -113,7 +113,9 @@ def load_miss_ratio_reduction_from_dir(data_dir_path, algos, metric="miss_ratio"
for f in sorted(glob.glob(data_dir_path + "/*")):
# a list of miss ratio dict (algo -> miss ratio) at different cache sizes
miss_ratio_dict_list = load_data(f, metric)
assert len(miss_ratio_dict_list) == N_CACHE_SIZE, f"{f} {len(miss_ratio_dict_list)}"
assert (
len(miss_ratio_dict_list) == N_CACHE_SIZE
), f"{f} {len(miss_ratio_dict_list)}"
# print(f, sorted(miss_ratio_dict_list[0].keys()))

if len(mr_reduction_dict_list) == 0:
Expand Down Expand Up @@ -157,6 +159,61 @@ def load_miss_ratio_reduction_from_dir(data_dir_path, algos, metric="miss_ratio"
return mr_reduction_dict_list


def load_miss_ratio_and_miss_ratio_reduction_from_dir(
data_dir_path, algos, metric="miss_ratio"
):
data_dirname = os.path.basename(data_dir_path)

mr_reduction_dict_list = []
for f in sorted(glob.glob(data_dir_path + "/*")):
# a list of miss ratio dict (algo -> miss ratio) at different cache sizes
miss_ratio_dict_list = load_data(f, metric)
assert (
len(miss_ratio_dict_list) == N_CACHE_SIZE
), f"{f} {len(miss_ratio_dict_list)}"
# print(f, sorted(miss_ratio_dict_list[0].keys()))

if len(mr_reduction_dict_list) == 0:
mr_reduction_dict_list = [
defaultdict(list) for _ in range(len(miss_ratio_dict_list))
]
for size_idx, miss_ratio_dict in enumerate(miss_ratio_dict_list):
if len(miss_ratio_dict) == 0:
continue

mr_fifo = miss_ratio_dict["FIFO"]
if mr_fifo == 0 or 1 - mr_fifo == 0:
continue

miss_ratio_dict = {k.lower(): v for k, v in miss_ratio_dict.items()}

mr_reduction_dict = {}
for algo in algos:
if algo.lower() not in miss_ratio_dict:
logger.warning("no data for {} in {}".format(algo.lower(), f))
break
miss_ratio = miss_ratio_dict[algo.lower()]
mr_reduction = (mr_fifo - miss_ratio) / mr_fifo
if mr_reduction < 0:
mr_reduction = -(miss_ratio - mr_fifo) / miss_ratio

mr_reduction_dict[algo] = mr_reduction

if len(mr_reduction_dict) < len(algos):
# some algorithm does not have data
logger.info(
"skip {} because of missing algorithm result {}".format(
f, set(algos) - set(miss_ratio_dict.keys())
)
)
continue

for algo, mr_reduction in mr_reduction_dict.items():
mr_reduction_dict_list[size_idx][algo].append((mr_fifo, mr_reduction))

return mr_reduction_dict_list


if __name__ == "__main__":
r = load_data(
"/disk/result/libCacheSim/result//all/meta_kvcache_traces_1.oracleGeneral.bin.zst"
Expand Down
1 change: 1 addition & 0 deletions scripts/plot/plot_miss_ratio2.py
33 changes: 16 additions & 17 deletions scripts/plot/plot_mr_red_box.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def update_algo_name(algo_name):
name_dict = {
"WTinyLFU-w0.01-SLRU": "TinyLFU",
"S3FIFO-0.1000-2": "S3FIFO",
"Cloud2QPlus-0.1000-2-0.50": "Cloud2QPlus",
"Cloud2QPlus-0.1000-2-0.50": "Cloud2Q+",
}

return name_dict.get(algo_name, algo_name)
Expand Down Expand Up @@ -74,7 +74,6 @@ def plot_box_algo(datapath, size_idx=0, metric="miss_ratio"):
algo_list = [
"S3FIFO-0.1000-2",
"Cloud2QPlus-0.1000-2-0.50",
# "Cloud2QPlus-0.1000-2-1.00",
"LIRS",
"TwoQ",
"ARC",
Expand Down Expand Up @@ -108,7 +107,7 @@ def plot_box_algo(datapath, size_idx=0, metric="miss_ratio"):
plt.clf()


def plot_box_ignore_frac(datapath, size_idx=0, metric="miss_ratio"):
def plot_box_corr(datapath, size_idx=0, metric="miss_ratio"):
"""
plot the miss ratio reduction box
Expand Down Expand Up @@ -151,12 +150,13 @@ def plot_box_ignore_frac(datapath, size_idx=0, metric="miss_ratio"):
medianprops=dict(color="black", linewidth=1.6),
)

plt.xticks(range(1, len(algo_list) + 1), name_list, rotation=0)
plt.xlabel("Correlation window size (fraction of small FIFO size)")
plt.ylabel("Miss ratio reduction from FIFO")
plt.xticks(range(1, len(algo_list) + 1), name_list, rotation=0)
plt.grid(linestyle="--")
plt.savefig("{}_corr_box_{}.png".format(metric, size_idx))
plt.savefig("{}_corr_box_{}.pdf".format(metric, size_idx))
plt.subplots_adjust(bottom=-0.2)
plt.savefig("{}_corr_box_{}.png".format(metric, size_idx), bbox_inches="tight")
plt.savefig("{}_corr_box_{}.pdf".format(metric, size_idx), bbox_inches="tight")
plt.clf()


Expand All @@ -167,17 +167,16 @@ def plot_box_ignore_frac(datapath, size_idx=0, metric="miss_ratio"):
parser.add_argument("--datapath", type=str, help="path to the cachesim result")
ap = parser.parse_args()

# plot_percentiles("{}/all".format(ap.datapath), size_idx=0, metric="miss_ratio")
# plot_percentiles("{}/all".format(ap.datapath), size_idx=2, metric="miss_ratio")

plot_box_algo("/disk/libCacheSim/_build/result2/", size_idx=0, metric="miss_ratio")
# plot_box_algo("/disk/libCacheSim/_build/result2/", size_idx=2, metric="miss_ratio")
plot_box_algo("/disk/libCacheSim/_build/result2/", size_idx=4, metric="miss_ratio")
plot_box_algo(
"/disk/libCacheSim/_build/result_data/", size_idx=0, metric="miss_ratio"
)
plot_box_algo(
"/disk/libCacheSim/_build/result_data/", size_idx=4, metric="miss_ratio"
)

plot_box_ignore_frac(
"/disk/libCacheSim/_build/result2/", size_idx=0, metric="miss_ratio"
plot_box_corr(
"/disk/libCacheSim/_build/result_data/", size_idx=0, metric="miss_ratio"
)
# plot_box_ignore_frac("/disk/libCacheSim/_build/result2/", size_idx=2, metric="miss_ratio")
plot_box_ignore_frac(
"/disk/libCacheSim/_build/result2/", size_idx=4, metric="miss_ratio"
plot_box_corr(
"/disk/libCacheSim/_build/result_data/", size_idx=4, metric="miss_ratio"
)

0 comments on commit 638e186

Please sign in to comment.