aboutsummaryrefslogtreecommitdiff
path: root/tests/bench/rss
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-15 16:22:50 +0330
committerGravatar zinc <zinc@downsta.ir> 2026-10-15 16:22:50 +0330
commitaf6e910abedd6fe3091b41910bd289c338b24612 (patch)
tree21a474d9c2633bbb47b70aba2dd4125b14e57ece /tests/bench/rss
parentseed: regenerate for the hold sources (image d792bd4f) (diff)
bench: actor peak-rss probe (N=0/10/100 on zy, zyi, zym)
Diffstat (limited to 'tests/bench/rss')
-rw-r--r--tests/bench/rss/a0.zc11
-rw-r--r--tests/bench/rss/a10.zc11
-rw-r--r--tests/bench/rss/a100.zc11
-rw-r--r--tests/bench/rss/measure.py13
4 files changed, 46 insertions, 0 deletions
diff --git a/tests/bench/rss/a0.zc b/tests/bench/rss/a0.zc
new file mode 100644
index 0000000..b8555d0
--- /dev/null
+++ b/tests/bench/rss/a0.zc
@@ -0,0 +1,11 @@
+namespace;
+include rt, actor;
+typecheck on;
+int work(int n) { rt.syscall(48, 500, 0, 0); return n + 1; }
+fn main() {
+ let n = 0, i = 0, sum = 0;
+ actor.Actor<int, int>*[101] as;
+ while (i < n) { as[i] = rt.new(actor.Actor<int, int>); as[i].spawn(work); as[i].recv(fn(int v) { sum = sum + v; return 0; }); as[i].send(i); i++; }
+ i = 0; while (i < n) { as[i].await(); as[i].close(); i++; }
+ rt.put_n(sum); rt.put_c(10); return 0;
+}
diff --git a/tests/bench/rss/a10.zc b/tests/bench/rss/a10.zc
new file mode 100644
index 0000000..aa09ce1
--- /dev/null
+++ b/tests/bench/rss/a10.zc
@@ -0,0 +1,11 @@
+namespace;
+include rt, actor;
+typecheck on;
+int work(int n) { rt.syscall(48, 500, 0, 0); return n + 1; }
+fn main() {
+ let n = 10, i = 0, sum = 0;
+ actor.Actor<int, int>*[101] as;
+ while (i < n) { as[i] = rt.new(actor.Actor<int, int>); as[i].spawn(work); as[i].recv(fn(int v) { sum = sum + v; return 0; }); as[i].send(i); i++; }
+ i = 0; while (i < n) { as[i].await(); as[i].close(); i++; }
+ rt.put_n(sum); rt.put_c(10); return 0;
+}
diff --git a/tests/bench/rss/a100.zc b/tests/bench/rss/a100.zc
new file mode 100644
index 0000000..f869026
--- /dev/null
+++ b/tests/bench/rss/a100.zc
@@ -0,0 +1,11 @@
+namespace;
+include rt, actor;
+typecheck on;
+int work(int n) { rt.syscall(48, 500, 0, 0); return n + 1; }
+fn main() {
+ let n = 100, i = 0, sum = 0;
+ actor.Actor<int, int>*[101] as;
+ while (i < n) { as[i] = rt.new(actor.Actor<int, int>); as[i].spawn(work); as[i].recv(fn(int v) { sum = sum + v; return 0; }); as[i].send(i); i++; }
+ i = 0; while (i < n) { as[i].await(); as[i].close(); i++; }
+ rt.put_n(sum); rt.put_c(10); return 0;
+}
diff --git a/tests/bench/rss/measure.py b/tests/bench/rss/measure.py
new file mode 100644
index 0000000..070db1e
--- /dev/null
+++ b/tests/bench/rss/measure.py
@@ -0,0 +1,13 @@
+import sys,subprocess,resource,os
+repo=sys.argv[1]
+for b in ['zy','zyi','zym']:
+ row=[b]
+ for n in [0,10,100]:
+ pid=os.fork()
+ if pid==0:
+ fd=os.open(f''+os.path.dirname(os.path.abspath(__file__))+'/a{n}.zc',os.O_RDONLY); os.dup2(fd,0)
+ nul=os.open('/dev/null',os.O_WRONLY); os.dup2(nul,1)
+ os.chdir(repo); os.execv(f'{repo}/build/bin/{b}',[b])
+ _,st,ru=os.wait4(pid,0)
+ row.append(f'{ru.ru_maxrss/1024:.1f}' + ('' if st==0 else f'(st{st})'))
+ print(' '.join(row))