occlum/docs/resource_config_guide.md

46 lines
1.7 KiB
Markdown

# Resource Configuration Guide
Due to SGX hardware limitations, Occlum needs users' assistance to specify some
resource limits or hints in `Occlum.json`. These configuration values must
be tuned on a per-application basis.
If you already know the memory usage of your application, set the memory usage
in the `process` field. Otherwise, use the default configuration file generated
after `occlum init`. During the tuning process, the log of Occlum should be
turned on by setting the `OCCLUM_LOG_LEVEL` environment variable (e.g.,
`OCCLUM_LOG_LEVEL=error`, `OCCLUM_LOG_LEVEL=info`).
To make the tuning process smooth, some troubleshooting instructions are listed
below. They can cover common types of errors resulting from the lack of
resources.
1. Mmap syscall error:
- Error message: `[____Mmap] Error = ENOMEM (#12, Out of memory): not
enough memory`
- Solution: Enlarge `process.default_mmap_size`
2. Brk syscall error:
- Error message: `[_____Brk] Error = EINVAL (#22, Invalid argument): New
brk address is too high`
- Solution: Enlarge `process.default_heap_size`
3. Process creation error:
- Error message: `ENOMEM (#12, Out of memory): run out of reserved memory`
- Solution: Enlarge `resource_limits.user_space_size`
4. Malloc of Rust SDK error:
- Error message: `memory allocation of XXX bytes failed`
- Solution: Enlarge `resource_limits.kernel_space_heap_size`
5. LibOS thread execution error:
- Error message: `[ERROR] occlum-pal: Failed to enter the enclave to
execute a LibOS thread (host tid = XXX): Unknown SGX error`
- Solution: There are many reasons resulting in the above errors. Try to
enlarge `resource_limits.max_num_of_threads` if your application has
threads far more than it.