Overall, Occlum has better performance over Gramine/Graphene-SGX on process creation and IPC.
run_*.sh
are for runing Occlum/Graphene instances, respectively.
sgx_driver_conf.sh
is to set the softlink of SGX in-kernel driver in /dev/sgx
. This is only for Linux kernel 5.11.
You don't have to do this on kernel 5.13+.
Refer to Steps.md
for detailed testing commands.
Expected results on SGX NUC machine.
As for spawn,
fork 100 children: throughput = 30.492704 procs/second, latency = 32794.730000 microseconds 0.032795 seconds
For pipe,
Starting...
initiating...
preparing...
writing...
mallocing...
looping...
counting...
WARNING: run long enough to get meaningful results
Throughput of pipe is 10.67 MB/s
Starting...
initiating...
preparing...
writing...
mallocing...
looping...
counting...
WARNING: run long enough to get meaningful results
Throughput of pipe is 10.82 MB/s
Starting...
initiating...
preparing...
writing...
mallocing...
looping...
counting...
WARNING: run long enough to get meaningful results
Throughput of pipe is 10.93 MB/s
As for spawn,
fork 10 children: throughput = 0.022119 procs/second, latency = 45210203.500000 microseconds 45.210203 seconds
For pipe,
graphene-sgx ./pipe 16
error: Using insecure argv source. Graphene will continue application execution, but this configuration must not be used in production!
Starting...
initiating...
preparing...
writing...
mallocing...
looping...
counting...
Throughput of pipe is 0.37 MB/s
graphene-sgx ./pipe 32
error: Using insecure argv source. Graphene will continue application execution, but this configuration must not be used in production!
Starting...
initiating...
preparing...
writing...
mallocing...
looping...
counting...
Throughput of pipe is 0.75 MB/s
graphene-sgx ./pipe 64
error: Using insecure argv source. Graphene will continue application execution, but this configuration must not be used in production!
Starting...
initiating...
preparing...
writing...
mallocing...
looping...
counting...
Throughput of pipe is 1.45 MB/s