@@ -702,7 +702,7 @@ def get_diff_l3(metric_name, dataset, metrics_start, metrics_end):
702702 # src -> extent-type -> effort-type -> blocks
703703 get_diff_l3 ("committed_disk_efforts_4KB" , dataset , metrics_start , metrics_end )
704704
705- def wash_dataset (dataset , writes_4KB , times_sec ):
705+ def wash_dataset (dataset , writes_4KB , times_sec , absolute ):
706706 def merge_lists (lists ):
707707 assert (len (lists ))
708708 length = 0
@@ -929,7 +929,10 @@ def filter_out_empty_l2_from_l3(l3_items):
929929 fresh_invalid_4KB = {}
930930 mutate_delta_4KB = {}
931931 for src , committed_disk_efforts in dataset ["committed_disk_efforts_4KB" ].items ():
932- data_name = "write_amplification_by_extent---" + src
932+ if absolute :
933+ data_name = "write_4KB_by_extent---" + src
934+ else :
935+ data_name = "write_amplification_by_extent---" + src
933936
934937 inplace_merge_l2_from_l3 ("LADDR" , "LADDR_LEAF" , "LADDR_INTERNAL" , committed_disk_efforts )
935938 inplace_merge_l2_from_l3 ("OMAP" , "OMAP_LEAF" , "OMAP_INNER" , committed_disk_efforts )
@@ -943,7 +946,7 @@ def filter_out_empty_l2_from_l3(l3_items):
943946 fresh_inline = []
944947 fresh_invalid = []
945948 mutate_delta = []
946- total_committed_disk_efforts = {}
949+ output = {}
947950 for ext_name , items_by_effort in non_empty_committed_disk_efforts .items ():
948951 assert (len (items_by_effort ) == 4 )
949952
@@ -955,23 +958,30 @@ def filter_out_empty_l2_from_l3(l3_items):
955958 total_disk_writes = merge_lists ([items_by_effort ["FRESH_INLINE" ],
956959 items_by_effort ["FRESH_OOL" ],
957960 items_by_effort ["MUTATE_DELTA" ]])
958- total_committed_disk_efforts [ext_name ] = total_disk_writes
961+ output [ext_name ] = total_disk_writes
959962
960963 commit_srcs .append (src )
961964 fresh_ool_4KB [src ] = merge_lists (fresh_ool )
962965 fresh_inline_4KB [src ] = merge_lists (fresh_inline )
963966 fresh_invalid_4KB [src ] = merge_lists (fresh_invalid )
964967 mutate_delta_4KB [src ] = merge_lists (mutate_delta )
965- data = get_ratio_l2_by_l1 (total_committed_disk_efforts , writes_4KB )
966- washed_dataset [data_name ] = data
968+ if absolute :
969+ output ["writes_4KB" ] = writes_4KB
970+ else :
971+ output = get_ratio_l2_by_l1 (output , writes_4KB )
972+ washed_dataset [data_name ] = output
967973
968974 # 9.x write_amplification_detail
969975 valid_data_4K = {}
970976 valid_metadata_4K = {}
971977 valid_ool_padding_4K = {}
972978 invalid_write_4K = {}
973979 for src in commit_srcs :
974- data_name = "write_amplification_detail---" + src
980+ if absolute :
981+ data_name = "write_4KB_detail---" + src
982+ else :
983+ data_name = "write_amplification_detail---" + src
984+
975985 invalid_ool = dataset ["invalidated_ool_record_4KB" ][src ]
976986 valid_ool_data = dataset ["committed_ool_record_data_4KB" ][src ]
977987 assert (fresh_ool_4KB [src ] == valid_ool_data )
@@ -982,7 +992,7 @@ def filter_out_empty_l2_from_l3(l3_items):
982992 inline_retired_data = fresh_invalid_4KB [src ]
983993 inline_delta_data = mutate_delta_4KB [src ]
984994 inline_metadata = dataset ["committed_inline_record_metadata_4KB" ][src ]
985- output_4KB = {
995+ output = {
986996 "INVALID_OOL" : invalid_ool ,
987997 "VALID_OOL_DATA" : valid_ool_data ,
988998 "VALID_OOL_METADATA" : valid_ool_metadata ,
@@ -992,8 +1002,11 @@ def filter_out_empty_l2_from_l3(l3_items):
9921002 "INLINE_DELTA_DATA" : inline_delta_data ,
9931003 "INLINE_METADATA" : inline_metadata ,
9941004 }
995- output_ratio = get_ratio_l2_by_l1 (output_4KB , writes_4KB )
996- washed_dataset [data_name ] = output_ratio
1005+ if absolute :
1006+ output ["writes_4KB" ] = writes_4KB
1007+ else :
1008+ output = get_ratio_l2_by_l1 (output , writes_4KB )
1009+ washed_dataset [data_name ] = output
9971010
9981011 valid_data = merge_lists ([valid_ool_data ,
9991012 inline_fresh_data ,
@@ -1008,7 +1021,10 @@ def filter_out_empty_l2_from_l3(l3_items):
10081021 invalid_write_4K [src ] = invalid_write
10091022
10101023 # 10. write_amplification_by_src
1011- data_name = "write_amplification_by_src"
1024+ if absolute :
1025+ data_name = "write_4KB_by_src"
1026+ else :
1027+ data_name = "write_amplification_by_src"
10121028 data_10 = {}
10131029 mutate_trans_data_write = []
10141030 for src in commit_srcs :
@@ -1023,15 +1039,21 @@ def filter_out_empty_l2_from_l3(l3_items):
10231039 if src == "MUTATE" :
10241040 mutate_trans_data_write = valid_data_4K [src ]
10251041 if commit_srcs :
1026- data_10_ratio = get_ratio_l2_by_l1 (data_10 , writes_4KB )
1027- washed_dataset [data_name ] = data_10_ratio
1042+ if absolute :
1043+ data_10 ["writes_4KB" ] = writes_4KB
1044+ else :
1045+ data_10 = get_ratio_l2_by_l1 (data_10 , writes_4KB )
1046+ washed_dataset [data_name ] = data_10
10281047
10291048 # 11. write_amplification_overall
10301049 segmented_read = dataset ["segment_read_4KB" ]
10311050 segmented_write = merge_lists ([dataset ["segment_write_4KB" ],
10321051 dataset ["segment_write_meta_4KB" ]])
10331052 if commit_srcs :
1034- data_name = "write_amplification_overall"
1053+ if absolute :
1054+ data_name = "write_4KB_overall"
1055+ else :
1056+ data_name = "write_amplification_overall"
10351057
10361058 account1 = merge_lists (dataset ["invalidated_ool_record_4KB" ].values ())
10371059 account2 = merge_lists (dataset ["committed_ool_record_padding_4KB" ].values ())
@@ -1078,8 +1100,11 @@ def filter_out_empty_l2_from_l3(l3_items):
10781100 "AW_ELSE" : aw_else ,
10791101 "MUTATE_TRANS_DATA_WRITE" : mutate_trans_data_write ,
10801102 }
1081- data_11_ratio = get_ratio_l2_by_l1 (data_11 , writes_4KB )
1082- washed_dataset [data_name ] = data_11_ratio
1103+ if absolute :
1104+ data_11 ["writes_4KB" ] = writes_4KB
1105+ else :
1106+ data_11 = get_ratio_l2_by_l1 (data_11 , writes_4KB )
1107+ washed_dataset [data_name ] = data_11
10831108
10841109 # 12. record_fullness
10851110 data_name = "record_fullness"
@@ -1309,6 +1334,9 @@ def relplot_data(directory, bench_type, name, data, indexes, ylim):
13091334 parser .add_argument (
13101335 "-d" , "--directory" , type = str ,
13111336 help = "result directory to evaluate" , default = "results" )
1337+ parser .add_argument (
1338+ "--absolute" , action = 'store_true' ,
1339+ help = "no write amplification" )
13121340 args = parser .parse_args ()
13131341
13141342 print ("loading dir %s ..." % (args .directory ))
@@ -1360,8 +1388,9 @@ def relplot_data(directory, bench_type, name, data, indexes, ylim):
13601388 print ("parse results done" )
13611389 print ()
13621390
1363- print ("wash results ..." )
1364- dataset , indexes = wash_dataset (raw_dataset , writes_4KB , times )
1391+ print ("wash results (absolute=%s) ..." % (args .absolute ))
1392+ dataset , indexes = wash_dataset (
1393+ raw_dataset , writes_4KB , times , args .absolute )
13651394 print ("wash results done" )
13661395 print ()
13671396
0 commit comments