Skip to content

Commit e966bf9

Browse files
committed
run.sh: add image size to result
Signed-off-by: Bin Tang <[email protected]>
1 parent 17a4eb2 commit e966bf9

File tree

1 file changed

+62
-13
lines changed

1 file changed

+62
-13
lines changed

hello.py

Lines changed: 62 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,17 @@ def timer(cmd):
132132

133133
class RunArgs:
134134
def __init__(
135-
self, env={}, arg="", stdin="", stdin_sh="sh", waitline="", mount=[], waitURL="", runtime="", shmSize="", workDir=""
135+
self,
136+
env={},
137+
arg="",
138+
stdin="",
139+
stdin_sh="sh",
140+
waitline="",
141+
mount=[],
142+
waitURL="",
143+
runtime="",
144+
shmSize="",
145+
workDir="",
136146
):
137147
self.env = env
138148
self.arg = arg
@@ -235,6 +245,14 @@ def set_tag(self, tag):
235245
self.name = f"{self.name}:{tag}"
236246

237247

248+
class BenchResult:
249+
def __init__(self, pull_elapsed, create_elapsed, run_elapsed, size):
250+
self.pull_elapsed = pull_elapsed
251+
self.create_elapsed = create_elapsed
252+
self.run_elapsed = run_elapsed
253+
self.size = size
254+
255+
238256
class BenchRunner:
239257
def __init__(
240258
self,
@@ -284,7 +302,9 @@ def load_bench_config(self):
284302
args = line["bench_args"]
285303
print(f"CMD_ARG_WAIT image: {name}, args: {args}")
286304
cmd_arg_wait_runner[name] = RunArgs(
287-
env=dict([(item["key"], item["value"]) for item in args["envs"]]) if "envs" in args else {},
305+
env=dict([(item["key"], item["value"]) for item in args["envs"]])
306+
if "envs" in args
307+
else {},
288308
waitline=args["wait_line"] if "wait_line" in args else "",
289309
mount=[(m["host_path"], m["container_path"]) for m in args["mount"]]
290310
if "mount" in args
@@ -306,7 +326,9 @@ def load_bench_config(self):
306326
args = line["bench_args"]
307327
print(f"CMD_STDIN image: {name}, args: {args}")
308328
cmd_stdin_runner[name] = RunArgs(
309-
env=dict([(item["key"], item["value"]) for item in args["envs"]]) if "envs" in args else {},
329+
env=dict([(item["key"], item["value"]) for item in args["envs"]])
330+
if "envs" in args
331+
else {},
310332
mount=[(m["host_path"], m["container_path"]) for m in args["mount"]]
311333
if "mount" in args
312334
else [],
@@ -327,7 +349,9 @@ def load_bench_config(self):
327349
args = line["bench_args"]
328350
print(f"CMD_ARG image: {name}, args: {args}")
329351
cmd_arg_runner[name] = RunArgs(
330-
env=dict([(item["key"], item["value"]) for item in args["envs"]]) if "envs" in args else {},
352+
env=dict([(item["key"], item["value"]) for item in args["envs"]])
353+
if "envs" in args
354+
else {},
331355
mount=[(m["host_path"], m["container_path"]) for m in args["mount"]]
332356
if "mount" in args
333357
else [],
@@ -348,7 +372,9 @@ def load_bench_config(self):
348372
args = line["bench_args"]
349373
print(f"CMD_URL_WAIT image: {name}, args: {args}")
350374
cmd_url_wait_runner[name] = RunArgs(
351-
env=dict([(item["key"], item["value"]) for item in args["envs"]]) if "envs" in args else {},
375+
env=dict([(item["key"], item["value"]) for item in args["envs"]])
376+
if "envs" in args
377+
else {},
352378
waitURL=args["wait_url"] if "wait_url" in args else "",
353379
mount=[(m["host_path"], m["container_path"]) for m in args["mount"]]
354380
if "mount" in args
@@ -387,6 +413,8 @@ def run_echo_hello(self, repo: str):
387413
with timer(pull_cmd) as t:
388414
pull_elapsed = t
389415

416+
size = self.image_size(image_ref)
417+
390418
create_cmd = self.create_echo_hello_cmd(image_ref, container_name)
391419
print(create_cmd)
392420

@@ -403,7 +431,7 @@ def run_echo_hello(self, repo: str):
403431
if self.cleanup:
404432
self.clean_up(image_ref, container_name)
405433

406-
return pull_elapsed, create_elapsed, run_elapsed
434+
return BenchResult(pull_elapsed, create_elapsed, run_elapsed, size)
407435

408436
def run_cmd_arg(self, repo, runargs):
409437
image_ref = self.image_ref(repo)
@@ -416,6 +444,8 @@ def run_cmd_arg(self, repo, runargs):
416444
with timer(pull_cmd) as t:
417445
pull_elapsed = t
418446

447+
size = self.image_size(image_ref)
448+
419449
create_cmd = self.create_cmd_arg_cmd(image_ref, container_name, runargs)
420450
print(create_cmd)
421451

@@ -432,7 +462,7 @@ def run_cmd_arg(self, repo, runargs):
432462
if self.cleanup:
433463
self.clean_up(image_ref, container_name)
434464

435-
return pull_elapsed, create_elapsed, run_elapsed
465+
return BenchResult(pull_elapsed, create_elapsed, run_elapsed, size)
436466

437467
def run_cmd_arg_wait(self, repo, runargs):
438468
image_ref = self.image_ref(repo)
@@ -445,6 +475,8 @@ def run_cmd_arg_wait(self, repo, runargs):
445475
with timer(pull_cmd) as t:
446476
pull_elapsed = t
447477

478+
size = self.image_size(image_ref)
479+
448480
create_cmd = self.create_cmd_arg_wait_cmd(image_ref, container_name, runargs)
449481
print(create_cmd)
450482

@@ -482,7 +514,7 @@ def run_cmd_arg_wait(self, repo, runargs):
482514
if self.cleanup:
483515
self.clean_up(image_ref, container_name)
484516

485-
return pull_elapsed, create_elapsed, run_elapsed
517+
return BenchResult(pull_elapsed, create_elapsed, run_elapsed, size)
486518

487519
def run_cmd_stdin(self, repo, runargs):
488520
image_ref = self.image_ref(repo)
@@ -495,6 +527,8 @@ def run_cmd_stdin(self, repo, runargs):
495527
with timer(pull_cmd) as t:
496528
pull_elapsed = t
497529

530+
size = self.image_size(image_ref)
531+
498532
create_cmd = self.create_cmd_stdin_cmd(image_ref, container_name, runargs)
499533
print(create_cmd)
500534

@@ -530,7 +564,7 @@ def run_cmd_stdin(self, repo, runargs):
530564
if self.cleanup:
531565
self.clean_up(image_ref, container_name)
532566

533-
return pull_elapsed, create_elapsed, run_elapsed
567+
return BenchResult(pull_elapsed, create_elapsed, run_elapsed, size)
534568

535569
def run_cmd_url_wait(self, repo, runargs):
536570
image_ref = self.image_ref(repo)
@@ -543,6 +577,8 @@ def run_cmd_url_wait(self, repo, runargs):
543577
with timer(pull_cmd) as t:
544578
pull_elapsed = t
545579

580+
size = self.image_size(image_ref)
581+
546582
create_cmd = self.create_cmd_url_wait_cmd(image_ref, container_id, runargs)
547583
print(create_cmd)
548584

@@ -574,7 +610,7 @@ def run_cmd_url_wait(self, repo, runargs):
574610
if self.cleanup:
575611
self.clean_up(image_ref, container_id)
576612

577-
return pull_elapsed, create_elapsed, run_elapsed
613+
return BenchResult(pull_elapsed, create_elapsed, run_elapsed, size)
578614

579615
def run(self, bench):
580616
repo = image_repo(bench.name)
@@ -602,6 +638,12 @@ def pull_cmd(self, image_ref):
602638
f"nerdctl --snapshotter {self.snapshotter} pull {insecure_flag} {image_ref}"
603639
)
604640

641+
def image_size(self, image_ref):
642+
cmd = f"nerdctl images {str(image_ref)}"
643+
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
644+
out = p.communicate()[0].decode("utf-8")
645+
return " ".join(out.split()[-2:])
646+
605647
def create_echo_hello_cmd(self, image_ref, container_id):
606648
return f"nerdctl --snapshotter {self.snapshotter} create --net=host --name={container_id} {image_ref} -- echo hello"
607649

@@ -886,13 +928,19 @@ def main():
886928
f = open(outpath + "." + output_format, "w")
887929

888930
if output_format == "csv":
889-
csv_headers = "timestamp,repo,bench,pull_elapsed(s),create_elapsed(s),run_elapsed(s),total_elapsed(s)"
931+
csv_headers = "timestamp,repo,bench,pull_elapsed(s),create_elapsed(s),run_elapsed(s),total_elapsed(s),image_size"
890932
f.writelines(csv_headers + "\n")
891933
f.flush()
892934

893935
for bench in benches:
894936
for _ in range(bench_times):
895-
pull_elapsed, create_elapsed, run_elapsed = runner.operation(op, bench)
937+
bench_result = runner.operation(op, bench)
938+
pull_elapsed, create_elapsed, run_elapsed, size = (
939+
bench_result.pull_elapsed,
940+
bench_result.create_elapsed,
941+
bench_result.run_elapsed,
942+
bench_result.size,
943+
)
896944

897945
total_elapsed = f"{pull_elapsed + create_elapsed + run_elapsed: .6f}"
898946
timetamp = int(time.time() * 1000)
@@ -909,10 +957,11 @@ def main():
909957
"create_elapsed": create_elapsed,
910958
"run_elapsed": run_elapsed,
911959
"total_elapsed": total_elapsed,
960+
"image_size": size,
912961
}
913962
line = json.dumps(row)
914963
elif output_format == "csv":
915-
line = f"{timetamp},{bench.repo},{bench.name},{pull_elapsed},{create_elapsed},{run_elapsed},{total_elapsed}"
964+
line = f"{timetamp},{bench.repo},{bench.name},{pull_elapsed},{create_elapsed},{run_elapsed},{total_elapsed},{size}"
916965

917966
print(line)
918967
f.writelines(line + "\n")

0 commit comments

Comments
 (0)