rust-extensions/crates/runc/src
zhang yu 10307750 3a7b9ce173 feat: set THP_DISABLE=true in shim, and restore it before starting runc
If /sys/kernel/mm/transparent_hugepage/enabled=always, the shim process
will use huge pages, which will consume a lot of memory.

Just like this:
ps -efo pid,rss,comm | grep shim
    PID   RSS COMMAND
   2614  7464 containerd-shim

I don't think shim needs to use huge pages, and if we turn off the huge
pages option, we can save a lot of memory resources.

After we set THP_DISABLE=true:
ps -efo pid,comm,rss
    PID COMMAND           RSS
1629841 containerd-shim  5648

containerd
    |
    |--shim1   --start
        |
        |--shim2    (this shim will on host)
            |
            |--runc create (when containerd send create request by ttrpc)
                |
                |--runc init (this is the pid 1 in container)

    we should set thp_disabled=1 in shim1 --start, because if we set this
    in shim 2, the huge page has been setted while func main() running,
    we set thp_disabled cannot change the setted huge pages.
    So We need to set thp_disabled=1 in shim1 so that shim2 inherits the
    settings of the parent process shim1, and shim2 has closed the
    hugepage when it starts.

    For runc processes, we need to set thp_disabled='before' in shim2 after
    fork() and before execve(). So we use cmd.pre_exec to do this.
2024-02-20 02:43:24 +00:00
..
container.rs Run fmt 2022-09-29 11:55:31 -07:00
error.rs Run fmt 2022-09-29 11:55:31 -07:00
events.rs renamed crate and applied recommended changes 2022-02-04 00:39:39 +00:00
io.rs Run fmt 2022-09-29 11:55:31 -07:00
lib.rs feat: set THP_DISABLE=true in shim, and restore it before starting runc 2024-02-20 02:43:24 +00:00
monitor.rs Run fmt 2022-09-29 11:55:31 -07:00
options.rs Run fmt 2022-09-29 11:55:31 -07:00
utils.rs Run fmt 2022-09-29 11:55:31 -07:00