Skip to content

lind-perf: baseline changes. add lind-perf crates, include basic feature plumbing.#846

Open
stupendoussuperpowers wants to merge 14 commits intomainfrom
lind-perf-init
Open

lind-perf: baseline changes. add lind-perf crates, include basic feature plumbing.#846
stupendoussuperpowers wants to merge 14 commits intomainfrom
lind-perf-init

Conversation

@stupendoussuperpowers
Copy link
Copy Markdown
Contributor

@stupendoussuperpowers stupendoussuperpowers commented Feb 27, 2026

lind-perf [base PR]

Before merge: PRs #847 and #848 have this PR as their base, so merge those into lind-perf-init before merging this branch to main.


  • lind-perf implementation.
  • Initial plumbing for lind-boot. (--features lind_perf + --perf flag)
  • Initial benchmarking sites within lind-boot.

Changes:

lind-perf contains the crate responsible for timing and reporting micro-benchmarks. This crate only performs timing related operations when built with the enabled feature, otherwise every operation is a no-op. The dependency thus gets included regardless avoiding the excessive need for cfg flags in downstream crates.

The enabled feature is wired to lind-boot's lind_perf feature.

The logic and design decisions behind lind-perf are explained in more detail in the README.md and int the comments.

File Changes
lind-perf/disabled.rs contains the No-Op counters.
lind-perf/timers.rs contains the CLOCK_MONOTONIC_RAW and the RDTSC timers. (Only invoked when enabled)
lind-perf/enabled/ contains the actual timing Counter and helpers for printing results to console.

The following changes were made to ensure these features are visible to lind-boot:

File Changes
lind-boot/src/perf.rs accumulates, enables, and reports on counter defined within lind-boot and its dependencies.
lind-boot/src/cli.rs adds the --perf flag to enable performance runs.
lind-boot/src/main.rs update the execution logic to enable --perf runs.
lind-boot/src/lind_wasmtime/trampoline.rs adding lind-perf based benchmark timers on a few hot paths.
Dockerfile.e2e ensure lind-perf is included in the build.

Example output from a performance run:

--------------------------------------------LIND-BOOT--------------------------------------------
name                                                              calls        total          avg
-------------------------------------------------------------------------------------------------
lind_boot::grate_callback_trampoline                            1000000    295.412ms    295.000ns
lind_boot::typed_func_call                                      1000000     49.907ms     49.000ns


---------------------------------------------THREE-I---------------------------------------------
name                                                              calls        total          avg
-------------------------------------------------------------------------------------------------
threei::_call_grate_func                                        1000000    308.366ms    308.000ns
threei::make_syscall                                            1000000    362.457ms    362.000ns

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total4
Success4
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage|interpose-register] In cage 2, about to register handler for geteuid
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 0 with fn ptr addr: 7021753225191620609
[Grate|interpose-register] Handling function ptr: 2 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Cage|interpose-register] PASS: geteuid ret = 10
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 2 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|geteuid] Handling function ptr: 2 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases183
Number of Successes183
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.051305s4.300123s
Success
chdir_getcwd.cSuccessNone0.050544s4.286695s
Success
chmod.cSuccessNone0.055693s4.314466s
Success
clock_gettime_highlevel.cSuccessNone0.120801s4.465912s
Success
clock_gettime_simple.cSuccessNone0.044882s4.324990s
Success
cloexec.cSuccessNone0.054622s3.890362s
Success
close.cSuccessNone0.063356s4.323011s
Success
creat_access.cSuccessNone0.056773s4.390763s
Success
doubleclose.cSuccessNone0.048880s3.972088s
Success
dup.cSuccessNone0.049365s4.469528s
Success
dup2.cSuccessNone0.051878s3.890805s
Success
dup3.cSuccessNone0.050034s4.261599s
Success
dupwrite.cSuccessNone0.054137s3.994316s
Success
etc_conf.cSuccessNone0.049981s4.242959s
Success
fchdir.cSuccessNone0.056923s4.317942s
Success
fchmod.cSuccessNone0.061891s4.281380s
Success
fcntl.cSuccessNone0.053440s4.308066s
Success
fdatasync.cSuccessNone0.052582s4.263125s
Success
filetest.cSuccessNone0.056595s4.003443s
Success
filetest1000.cSuccessNone0.063885s3.901405s
Success
flock.cSuccessNone0.063326s4.493241s
Success
fstat.cSuccessNone0.055742s4.266801s
Success
fstatfs.cSuccessNone0.049058s4.333731s
Success
fsync.cSuccessNone0.054937s4.454900s
Success
ftruncate.cSuccessNone0.059887s4.426195s
Success
getcwd.cSuccessNone0.049157s4.273584s
Success
getrandom.cSuccessNone0.054012s4.299652s
Success
ioctl.cSuccessNone0.056815s4.284646s
Success
link.cSuccessNone0.061077s4.431211s
Success
locale_test.cSuccessNone0.067118s6.116668s
Success
lseek.cSuccessNone0.058233s4.337874s
Success
mkdir_rmdir.cSuccessNone0.053879s4.268509s
Success
nocancel_io.cSuccessNone0.058139s5.636965s
Success
open.cSuccessNone0.047203s4.276711s
Success
path_conversion_safety.cSuccessNone0.058489s4.368042s
Success
pread_pwrite.cSuccessNone0.049995s4.268834s
Success
printf.cSuccessNone0.047453s4.032813s
Success
read.cSuccessNone0.055292s4.316186s
Success
readbytes.cSuccessNone0.049177s3.870430s
Success
readlink.cSuccessNone0.056326s4.446812s
Success
readlinkat.cSuccessNone0.057612s4.349813s
Success
readv_writev_test.cSuccessNone0.055199s4.295486s
Success
rename.cSuccessNone0.055872s4.318685s
Success
sc-writev.cSuccessNone0.053566s4.264446s
Success
stat.cSuccessNone0.058055s4.426089s
Success
statfs.cSuccessNone0.047600s4.274986s
Success
sync_file_range.cSuccessNone0.050819s4.279008s
Success
truncate.cSuccessNone0.054137s4.294262s
Success
unlink.cSuccessNone0.056213s4.360485s
Success
unlinkat.cSuccessNone0.059160s4.381622s
Success
write.cSuccessNone0.047067s3.895081s
Success
writeloop.cSuccessNone0.058845s3.902675s
Success
writepartial.cSuccessNone0.057197s3.925838s
Success
writev.cSuccessNone0.054638s4.268312s
Success
Math Tests
math_link_smoke.cSuccessNone0.057262s3.915194s
Success
math_tests.cSuccessNone0.060618s4.066811s
Success
Memory Tests
brk.cSuccessNone0.053573s4.259057s
Success
fork_large_memory.cSuccessNone0.095019s4.649353s
Success
malloc.cSuccessNone0.051454s3.874043s
Success
malloc_large.cSuccessNone0.049534s4.244658s
Success
memcpy.cSuccessNone0.048978s3.903310s
Success
memory_error_test.cSuccessNone0.057065s4.300799s
Success
mmap.cSuccessNone0.048069s4.243390s
Success
mmap_aligned.cSuccessNone0.047699s4.288766s
Success
mmap_complicated.cSuccessNone0.053477s4.312118s
Success
mmap_file.cSuccessNone0.054048s4.301778s
Success
mmap_shared.cSuccessNone0.052970s4.329705s
Success
mmaptest.cSuccessNone0.049301s4.294925s
Success
mprotect.cSuccessNone0.047395s4.269603s
Success
mprotect_boundary.cSuccessNone0.047330s4.256098s
Success
mprotect_end_region.cSuccessNone0.046844s4.260386s
Success
mprotect_middle_region.cSuccessNone0.047592s4.264111s
Success
mprotect_multiple_times.cSuccessNone0.047047s4.277864s
Success
mprotect_same_value.cSuccessNone0.049844s4.276332s
Success
mprotect_spanning_regions.cSuccessNone0.048220s4.277021s
Success
sbrk.cSuccessNone0.048693s4.272757s
Success
segfault.cSuccessNone0.056027s4.383586s
Success
shm.cSuccessNone0.053168s4.310666s
Success
shmtest.cSuccessNone0.048504s4.288415s
Success
tcache_test.cSuccessNone0.057487s4.452455s
Success
vtable.cSuccessNone0.062898s3.892215s
Success
Networking Tests
dnstest.cSuccessNone0.053190s4.272013s
Success
epollcreate1.cSuccessNone0.055300s4.286161s
Success
error_handling_net.cSuccessNone0.062127s4.335314s
Success
getaddrinfo_test.cSuccessNone0.061908s6.025054s
Success
gethostname.cSuccessNone0.046983s3.867733s
Success
getifaddrs.cSuccessNone0.054775s4.332820s
Success
getsockname.cSuccessNone0.055760s4.295867s
Success
getsockopt.cSuccessNone0.057438s4.282458s
Success
makepipe.cSuccessNone0.046482s3.838989s
Success
nonblocking_eagain.cSuccessNone0.058947s4.315587s
Success
pipe.cSuccessNone0.055937s4.307072s
Success
pipe2.cSuccessNone0.055534s4.262949s
Success
pipeinput.cSuccessNone0.056732s4.335196s
Success
pipeinput2.cSuccessNone0.056807s4.316145s
Success
pipeonestring.cSuccessNone0.056724s4.320311s
Success
pipepong.cSuccessNone0.055801s4.318228s
Success
pipewrite.cSuccessNone0.052883s4.251435s
Success
poll.cSuccessNone0.054187s4.260096s
Success
recvfrom-sendto.cSuccessNone0.056699s4.344699s
Success
sendmsg_recvmsg_test.cSuccessNone0.054755s4.301519s
Success
serverclient.cSuccessNone0.054315s3.898826s
Success
shutdown.cSuccessNone0.056409s3.901819s
Success
shutdown_fork.cSuccessNone0.054557s4.348979s
Success
simple-select.cSuccessNone0.056852s4.321431s
Success
simple_epoll.cSuccessNone0.054219s4.270285s
Success
socket.cSuccessNone0.052180s3.874868s
Success
socket_cloexec.cSuccessNone0.052574s4.246786s
Success
socket_options_advanced.cSuccessNone0.059304s4.302154s
Success
socketepoll.cSuccessNone0.052804s3.882498s
Success
socketpair.cSuccessNone0.052241s4.297866s
Success
socketselect.cSuccessNone0.053226s4.258349s
Success
tcp_connect_single.cSuccessNone0.054311s4.305694s
Success
uds-getsockname.cSuccessNone0.054976s4.275454s
Success
uds-nb-select.cSuccessNone2.062067s6.498408s
Success
uds-serverclient.cSuccessNone0.057895s4.358184s
Success
uds-socketselect.cSuccessNone0.054624s3.914524s
Success
writev_socket.cSuccessNone0.057297s4.288792s
Success
Process Tests
barrier_test.cSuccessNone0.052443s4.408702s
Success
chain_thread.cSuccessNone1.056943s5.423123s
Success
cxa_atexit_test.cSuccessNone0.049931s3.873972s
Success
exit.cSuccessNone0.050875s3.874495s
Success
flockfile_test.cSuccessNone0.053570s4.446905s
Success
fork2malloc.cSuccessNone0.054593s4.307616s
Success
fork_select.cSuccessNone0.053488s4.323413s
Success
fork_simple.cSuccessNone0.051213s4.291123s
Success
fork_syscall.cSuccessNone0.058041s4.344232s
Success
fork_tls_ctype.cSuccessNone0.056380s4.318805s
Success
forkandopen.cSuccessNone0.054880s4.329758s
Success
forkdup.cSuccessNone0.057971s3.967293s
Success
forkexecuid.cSuccessNone0.052044s4.350043s
Success
forkexecv-arg.cSuccessNone0.052371s4.296308s
Success
forkexecv.cSuccessNone0.050517s4.292842s
Success
forkfiles.cSuccessNone0.054453s4.294715s
Success
forkmalloc.cSuccessNone0.067977s4.290059s
Success
forknodup.cSuccessNone0.056836s4.328466s
Success
function-ptr.cSuccessNone0.050205s4.232319s
Success
getegid_syscall.cSuccessNone0.054260s4.316535s
Success
getgid_syscall.cSuccessNone0.054951s4.327668s
Success
getpid.cSuccessNone0.049050s4.230964s
Success
getpid_syscall.cSuccessNone0.056180s4.349692s
Success
getppid.cSuccessNone0.054273s4.283390s
Success
getppid_syscall.cSuccessNone0.058203s4.347875s
Success
getuid.cSuccessNone0.054264s4.239870s
Success
getuid_syscall.cSuccessNone0.052644s4.296741s
Success
hello-arg.cSuccessNone0.044620s3.872242s
Success
hello.cSuccessNone0.045402s3.852038s
Success
longjmp.cSuccessNone0.045100s3.891321s
Success
mutex.cSuccessNone2.058516s6.538749s
Success
printf_deadlock_smoke.cSuccessNone0.062348s4.586882s
Success
printf_thread_test.cSuccessNone0.052291s4.432585s
Success
sem_forks.cSuccessNone0.057347s4.346641s
Success
setsid.cSuccessNone0.046074s3.875836s
Success
template.cSuccessNone0.057299s4.322624s
Success
test_exec_nofork.cSuccessNone0.052218s4.242703s
Success
test_unlink_open_file.cSuccessNone0.048693s3.852490s
Success
thread-test.cSuccessNone0.048454s4.446198s
Success
thread.cSuccessNone0.048187s4.405502s
Success
thread_cageid_race.cSuccessNone0.049596s4.408277s
Success
tls_test.cSuccessNone0.052078s4.423437s
Success
uname.cSuccessNone0.046885s4.234778s
Success
wait.cSuccessNone2.052209s5.921697s
Success
waitpid_anychild.cSuccessNone0.053423s4.283463s
Success
waitpid_syscall.cSuccessNone1.055041s5.364701s
Success
waitpid_wnohang.cSuccessNone0.054249s3.926461s
Success
Signal Tests
alarm.cSuccessNone7.054390s10.923029s
Success
setitimer.cSuccessNone7.053819s10.920367s
Success
sigalrm.cSuccessNone2.054472s5.937937s
Success
sigchld.cSuccessNone1.059489s5.036317s
Success
signal-fork.cSuccessNone4.056113s7.961942s
Success
signal-simple.cSuccessNone0.055707s4.024439s
Success
signal.cSuccessNone0.050146s3.881611s
Success
signal_SIGCHLD.cSuccessNone0.053337s4.312272s
Success
signal_fork.cSuccessNone0.050945s4.349470s
Success
signal_int_ignored.cSuccessNone2.054712s6.327139s
Success
signal_int_thread.cSuccessNone0.051626s4.424313s
Success
signal_longjmp.cSuccessNone0.051039s3.906248s
Success
signal_nodefer.cSuccessNone0.055112s3.965560s
Success
signal_procmask.cSuccessNone0.048426s4.269404s
Success
signal_recursive.cSuccessNone0.048494s3.882549s
Success
signal_sa_mask.cSuccessNone0.048224s3.879388s
Success
sigpipe.cSuccessNone1.055689s5.349274s
Success
sigprocmask.cSuccessNone1.054568s4.914737s
Success
Fail Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
mmap-negative1.cSuccessNone0.111082s4.310500s
Success
mmap-negative2.cSuccessNone0.212991s4.137973s
Success
Signal Tests
signal_resethand.cSuccessNone1.053307s3.939694s
Success

Comment thread src/lind-perf/src/enabled/report.rs
Comment thread src/lind-boot/src/perf.rs
Comment thread src/lind-perf/src/timers.rs
Copy link
Copy Markdown
Contributor

@rennergade rennergade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a few questions, looks really good generally. very impressed!

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 9, 2026

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total9
Success9
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|interpose-exec] Handling function ptr: 2 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 2 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 2
Exiting...

[Grate|interpose-exit] Handling function ptr: 2 from cage: 1
[Grate|interpose-exit] In exit_grate 1 handler for cage: 1
[Grate|interpose-exit] PASS

STDERR:

interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|interpose-fork] Handling function ptr: 2 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage|interpose-register] In cage 2, about to register handler for geteuid
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 0 with fn ptr addr: 7021753225191620609
[Grate|interpose-register] Handling function ptr: 2 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Cage|interpose-register] PASS: geteuid ret = 10
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 2 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|geteuid] Handling function ptr: 2 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases186
Number of Successes186
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.049852s4.282760s
Success
chdir_getcwd.cSuccessNone0.052258s4.303092s
Success
chmod.cSuccessNone0.055875s4.302906s
Success
clock_gettime_highlevel.cSuccessNone0.123231s4.561537s
Success
clock_gettime_simple.cSuccessNone0.045489s4.272053s
Success
cloexec.cSuccessNone0.055063s4.032243s
Success
close.cSuccessNone0.063702s4.350453s
Success
creat_access.cSuccessNone0.054785s4.295409s
Success
doubleclose.cSuccessNone0.045538s3.918373s
Success
dup.cSuccessNone0.049845s4.308507s
Success
dup2.cSuccessNone0.052579s3.934702s
Success
dup3.cSuccessNone0.051631s4.363169s
Success
dupwrite.cSuccessNone0.053359s3.905462s
Success
etc_conf.cSuccessNone0.049906s4.281761s
Success
fchdir.cSuccessNone0.059496s4.305882s
Success
fchmod.cSuccessNone0.059348s4.287258s
Success
fcntl.cSuccessNone0.055289s4.303458s
Success
fdatasync.cSuccessNone0.053624s4.295311s
Success
filetest.cSuccessNone0.052995s3.873238s
Success
filetest1000.cSuccessNone0.062437s3.903978s
Success
flock.cSuccessNone0.060095s4.386387s
Success
fstat.cSuccessNone0.057584s4.272558s
Success
fstatfs.cSuccessNone0.050818s4.339828s
Success
fsync.cSuccessNone0.053059s4.254062s
Success
ftruncate.cSuccessNone0.059414s4.450843s
Success
getcwd.cSuccessNone0.049567s4.294133s
Success
getrandom.cSuccessNone0.057022s4.265715s
Success
ioctl.cSuccessNone0.060692s4.319522s
Success
link.cSuccessNone0.057136s4.338432s
Success
locale_test.cSuccessNone0.068451s6.082970s
Success
lseek.cSuccessNone0.057427s4.381833s
Success
mkdir_rmdir.cSuccessNone0.054553s4.283453s
Success
mkfifo_test.cSuccessNone0.061438s4.357733s
Success
mknod.cSuccessNone0.054869s4.287179s
Success
nocancel_io.cSuccessNone0.056738s5.649932s
Success
open.cSuccessNone0.047680s4.276091s
Success
path_conversion_safety.cSuccessNone0.057114s4.307281s
Success
pread_pwrite.cSuccessNone0.051918s4.331922s
Success
printf.cSuccessNone0.046819s3.879785s
Success
read.cSuccessNone0.056800s4.260459s
Success
readbytes.cSuccessNone0.050592s3.888091s
Success
readlink.cSuccessNone0.054188s4.312412s
Success
readlinkat.cSuccessNone0.055615s4.298968s
Success
readv_writev_test.cSuccessNone0.056013s4.328280s
Success
rename.cSuccessNone0.059103s4.356156s
Success
sc-writev.cSuccessNone0.051525s4.273180s
Success
stat.cSuccessNone0.054248s4.277718s
Success
statfs.cSuccessNone0.048914s4.282510s
Success
sync_file_range.cSuccessNone0.051408s4.298562s
Success
truncate.cSuccessNone0.055787s4.290996s
Success
unlink.cSuccessNone0.055489s4.329961s
Success
unlinkat.cSuccessNone0.056589s4.332947s
Success
write.cSuccessNone0.046846s3.894661s
Success
writeloop.cSuccessNone0.055375s3.872893s
Success
writepartial.cSuccessNone0.054762s3.889421s
Success
writev.cSuccessNone0.055281s4.274110s
Success
Math Tests
math_link_smoke.cSuccessNone0.057381s3.910366s
Success
math_tests.cSuccessNone0.061322s4.080620s
Success
Memory Tests
brk.cSuccessNone0.051555s4.350840s
Success
fork_large_memory.cSuccessNone0.093731s4.505309s
Success
malloc.cSuccessNone0.049723s3.882370s
Success
malloc_large.cSuccessNone0.050200s4.263590s
Success
memcpy.cSuccessNone0.049219s3.863003s
Success
memory_error_test.cSuccessNone0.055678s4.287939s
Success
mmap.cSuccessNone0.046075s4.264126s
Success
mmap_aligned.cSuccessNone0.048674s4.339138s
Success
mmap_complicated.cSuccessNone0.055419s4.318673s
Success
mmap_file.cSuccessNone0.054784s4.279963s
Success
mmap_shared.cSuccessNone0.052382s4.339913s
Success
mmaptest.cSuccessNone0.049800s4.258764s
Success
mprotect.cSuccessNone0.049432s4.265466s
Success
mprotect_boundary.cSuccessNone0.047546s4.259249s
Success
mprotect_end_region.cSuccessNone0.046985s4.344979s
Success
mprotect_middle_region.cSuccessNone0.047748s4.261737s
Success
mprotect_multiple_times.cSuccessNone0.047281s4.297867s
Success
mprotect_same_value.cSuccessNone0.047315s4.260564s
Success
mprotect_spanning_regions.cSuccessNone0.048196s4.267874s
Success
sbrk.cSuccessNone0.049072s4.297159s
Success
segfault.cSuccessNone0.058857s4.389917s
Success
shm.cSuccessNone0.055026s4.485337s
Success
shmtest.cSuccessNone0.048585s4.283860s
Success
tcache_test.cSuccessNone0.057577s4.460203s
Success
thread_malloc_sequential.cSuccessNone0.056719s4.448648s
Success
vtable.cSuccessNone0.064540s3.997031s
Success
Networking Tests
dnstest.cSuccessNone0.053937s4.302242s
Success
epoll_edge_triggered.cSuccessNone0.211763s4.491072s
Success
epollcreate1.cSuccessNone0.056965s4.300891s
Success
error_handling_net.cSuccessNone0.062123s4.385371s
Success
getaddrinfo_test.cSuccessNone0.060184s6.079339s
Success
gethostname.cSuccessNone0.048133s3.893608s
Success
getifaddrs.cSuccessNone0.055788s4.392700s
Success
getsockname.cSuccessNone0.055687s4.322088s
Success
getsockopt.cSuccessNone0.058250s4.293318s
Success
ipv6_basic.cSuccessNone0.058675s4.322368s
Success
makepipe.cSuccessNone0.046966s3.858703s
Success
nonblocking_eagain.cSuccessNone0.058953s4.324643s
Success
pipe.cSuccessNone0.057355s4.335524s
Success
pipe2.cSuccessNone0.056283s4.280093s
Success
pipeinput.cSuccessNone0.057042s4.318963s
Success
pipeinput2.cSuccessNone0.057173s4.349654s
Success
pipeonestring.cSuccessNone0.058501s4.337655s
Success
pipepong.cSuccessNone0.057856s4.404797s
Success
pipewrite.cSuccessNone0.050483s4.269705s
Success
poll.cSuccessNone0.054806s4.307601s
Success
recvfrom-sendto.cSuccessNone0.055810s4.320998s
Success
sendmsg_recvmsg_test.cSuccessNone0.055237s4.290014s
Success
serverclient.cSuccessNone0.055322s3.911986s
Success
shutdown.cSuccessNone0.060076s3.904859s
Success
shutdown_fork.cSuccessNone0.055791s4.318736s
Success
simple-select.cSuccessNone0.057925s4.364823s
Success
simple_epoll.cSuccessNone0.057982s4.304769s
Success
socket.cSuccessNone0.053911s3.897359s
Success
socket_cloexec.cSuccessNone0.053326s4.266008s
Success
socket_options_advanced.cSuccessNone0.060869s4.324796s
Success
socketepoll.cSuccessNone0.055120s3.889769s
Success
socketpair.cSuccessNone0.053703s4.326252s
Success
socketselect.cSuccessNone0.053565s4.291860s
Success
tcp_connect_single.cSuccessNone0.058014s4.342940s
Success
udp_send_recv.cSuccessNone0.161753s4.463393s
Success
uds-getsockname.cSuccessNone0.055709s4.275950s
Success
uds-nb-select.cSuccessNone2.063071s6.509106s
Success
uds-serverclient.cSuccessNone0.059851s4.387870s
Success
uds-socketselect.cSuccessNone0.055332s3.919578s
Success
writev_socket.cSuccessNone0.057752s4.304725s
Success
Process Tests
barrier_test.cSuccessNone0.053203s4.440330s
Success
chain_thread.cSuccessNone1.057120s5.478335s
Success
ctor_syscall_test.cSuccessNone0.046918s4.247373s
Success
cxa_atexit_test.cSuccessNone0.055135s3.914010s
Success
exit.cSuccessNone0.051653s3.865596s
Success
flockfile_test.cSuccessNone0.053814s4.482822s
Success
fork2malloc.cSuccessNone0.055833s4.334690s
Success
fork_select.cSuccessNone0.052988s4.343763s
Success
fork_simple.cSuccessNone0.052143s4.336207s
Success
fork_syscall.cSuccessNone0.061877s4.418547s
Success
fork_tls_ctype.cSuccessNone0.057311s4.326820s
Success
forkandopen.cSuccessNone0.056152s4.309326s
Success
forkdup.cSuccessNone0.058141s4.001831s
Success
forkexecuid.cSuccessNone0.052722s4.359905s
Success
forkexecv-arg.cSuccessNone0.053699s4.330420s
Success
forkexecv.cSuccessNone0.052374s4.407054s
Success
forkfiles.cSuccessNone0.054315s4.321261s
Success
forkmalloc.cSuccessNone0.069392s4.303679s
Success
forknodup.cSuccessNone0.058038s4.336527s
Success
function-ptr.cSuccessNone0.051305s4.349076s
Success
getegid_syscall.cSuccessNone0.055986s4.384808s
Success
getgid_syscall.cSuccessNone0.054931s4.329213s
Success
getpid.cSuccessNone0.048272s4.256255s
Success
getpid_syscall.cSuccessNone0.056727s4.385275s
Success
getppid.cSuccessNone0.054941s4.317781s
Success
getppid_syscall.cSuccessNone0.059943s4.366876s
Success
getuid.cSuccessNone0.056475s4.275696s
Success
getuid_syscall.cSuccessNone0.053777s4.330541s
Success
hello-arg.cSuccessNone0.044564s3.866626s
Success
hello.cSuccessNone0.048044s3.896879s
Success
longjmp.cSuccessNone0.048398s3.954711s
Success
mutex.cSuccessNone2.059063s6.561452s
Success
printf_deadlock_smoke.cSuccessNone0.063175s4.599289s
Success
printf_thread_test.cSuccessNone0.054476s4.476532s
Success
sem_forks.cSuccessNone0.058614s4.348854s
Success
setsid.cSuccessNone0.048439s3.924593s
Success
template.cSuccessNone0.054491s4.315759s
Success
test_exec_nofork.cSuccessNone0.054226s4.300716s
Success
test_unlink_open_file.cSuccessNone0.049254s3.886826s
Success
thread-test.cSuccessNone0.049220s4.435130s
Success
thread.cSuccessNone0.050254s4.418999s
Success
thread_cageid_race.cSuccessNone0.050493s4.425708s
Success
tls_test.cSuccessNone0.052620s4.447869s
Success
uname.cSuccessNone0.047948s4.258423s
Success
wait.cSuccessNone2.051160s5.939535s
Success
waitpid_anychild.cSuccessNone0.054279s4.329564s
Success
waitpid_syscall.cSuccessNone1.057776s5.340668s
Success
waitpid_wnohang.cSuccessNone0.057318s3.961529s
Success
Signal Tests
alarm.cSuccessNone7.053840s10.914099s
Success
setitimer.cSuccessNone7.055132s10.918804s
Success
sigalrm.cSuccessNone2.054019s5.932723s
Success
sigchld.cSuccessNone1.057056s4.970797s
Success
signal-fork.cSuccessNone4.056618s7.946773s
Success
signal-simple.cSuccessNone0.055733s3.904429s
Success
signal_SIGCHLD.cSuccessNone0.054404s4.321875s
Success
signal_fork.cSuccessNone0.051308s4.342311s
Success
signal_int_ignored.cSuccessNone2.054882s6.368915s
Success
signal_procmask.cSuccessNone0.049066s4.288889s
Success
signal_recursive.cSuccessNone0.050148s3.911090s
Success
signal_sa_mask.cSuccessNone0.048661s3.897166s
Success
sigpipe.cSuccessNone1.058939s5.361616s
Success
sigprocmask.cSuccessNone1.054918s4.926640s
Success
Fail Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
mmap-negative1.cSuccessNone0.117955s4.440546s
Success
mmap-negative2.cSuccessNone0.166575s4.125120s
Success
Signal Tests
signal_resethand.cSuccessNone1.054151s3.966948s
Success

Comment thread src/lind-boot/src/main.rs
// Each sample run gets a fresh RawPOSIX lifecycle boundary to imitate actual
// behaviour.
rawposix_start(0);
let _ = execute_wasmtime(lindboot_cli.clone());
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It shouldn't remove the exit handling

Comment thread src/lind-boot/src/main.rs

let counters = perf::all_counter_names();

// Iterate over all counters:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the counter here mean how many loops we want to iterate? I'm a bit confused by this counter and the one in src/lind-perf/src/enabled/counter.rs

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even no-op still introduces overhead... I don't prefer we do in this way

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants