summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/workload.py32
1 files changed, 29 insertions, 3 deletions
diff --git a/bin/workload.py b/bin/workload.py
index d4dff10..efd191b 100755
--- a/bin/workload.py
+++ b/bin/workload.py
@@ -13,11 +13,13 @@ def main():
formatter_class=argparse.RawDescriptionHelpFormatter, description=__doc__
)
parser.add_argument("--aggregate", choices=["sum"], default="sum")
+ parser.add_argument("--aggregate-unit", choices=["s", "B/s"], default="s")
parser.add_argument(
"--aggregate-init",
default=0,
type=float,
)
+ parser.add_argument("--normalize-output", type=str)
parser.add_argument(
"--info",
action="store_true",
@@ -46,6 +48,19 @@ def main():
aggregate = args.aggregate_init
for event in args.event:
+
+ event_normalizer = lambda p: p
+ if "/" in event:
+ v1, v2 = event.split("/")
+ if dfatool.utils.is_numeric(v1):
+ event = v2.strip()
+ event_normalizer = lambda p: dfatool.utils.soft_cast_float(v1) / p
+ elif dfatool.utils.is_numeric(v2):
+ event = v1.strip()
+ event_normalizer = lambda p: p / dfatool.utils.soft_cast_float(v2)
+ else:
+ raise RuntimeError(f"Cannot parse '{event}'")
+
nn, param = event.split("(")
name, action = nn.split(".")
param_model = None
@@ -61,14 +76,25 @@ def main():
param = dict()
else:
param = dfatool.utils.parse_conf_str(param)
- if args.aggregate == "sum":
- aggregate += param_model(
+
+ event_output = event_normalizer(
+ param_model(
name,
action,
param=dfatool.utils.param_dict_to_list(param, ref_model.parameters),
)
+ )
+
+ if args.aggregate == "sum":
+ aggregate += event_output
- print(aggregate)
+ if args.normalize_output:
+ sf = dfatool.cli.parse_shift_function(
+ "--normalize-output", args.normalize_output
+ )
+ print(dfatool.utils.human_readable(sf(aggregate), args.aggregate_unit))
+ else:
+ print(dfatool.utils.human_readable(aggregate, args.aggregate_unit))
if __name__ == "__main__":