  Trusted execution environments (TEEs) such as \intelsgx facilitate the secure
execution of an application on untrusted machines. Sadly, such environments
suffer from serious limitations and performance overheads in terms of writing
back data to the main memory, their interaction with the OS, and the ability to
issue I/O instructions. There is thus a plethora of work that focuses on
improving the performance of such environments -- this necessitates the need
for a standard, widely accepted benchmark suite (something similar to SPEC and
PARSEC). To the best of our knowledge, such a suite does not exist.
  Our suite, SGXGauge, contains a diverse set of workloads such as blockchain
codes, secure machine learning algorithms, lightweight web servers, secure
key-value stores, etc. We thoroughly characterizes the behavior of the
benchmark suite on a native platform and on a platform that uses a library
OS-based shimming layer (GrapheneSGX). We observe that the most important
metrics of interest are performance counters related to paging, memory, and TLB
accesses. There is an abrupt change in performance when the memory footprint
starts to exceed the size of the EPC size in Intel SGX, and the library OS does
not add a significant overhead (~ +- 10%).
