Skip to content

Instantly share code, notes, and snippets.

@jessfraz
Created July 24, 2018 22:23

Revisions

  1. jessfraz created this gist Jul 24, 2018.
    41 changes: 41 additions & 0 deletions freeze.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,41 @@
    ## [Freezer cgroup FTW](https://www.kernel.org/doc/Documentation/cgroup-v1/freezer-subsystem.txt)

    In a terminal start a server.

    ```console
    $ python -m SimpleHTTPServer 8000
    ```

    In another terminal set up the cgroups freezer.

    ```console
    $ mkdir /sys/fs/cgroup/freezer
    $ mount -t cgroup -ofreezer freezer /sys/fs/cgroup/freezer
    $ mkdir /sys/fs/cgroup/freezer/0
    # Add our server to our tasks.
    $ echo $(pidof python) > /sys/fs/cgroup/freezer/0/tasks
    # get status of the freezer subsystem
    $ cat /sys/fs/cgroup/freezer/0/freezer.state
    THAWED

    # freeze all tasks in the cgroup
    $ echo FROZEN > /sys/fs/cgroup/freezer/0/freezer.state

    # get the status
    $ cat /sys/fs/cgroup/freezer/0/freezer.state
    FREEZING
    $ cat /sys/fs/cgroup/freezer/0/freezer.state
    FROZEN

    # send a request.... it will block
    $ curl localhost:8000

    # unfreeze all tasks in the cgroup
    $ echo THAWED > /sys/fs/cgroup/freezer/0/freezer.state
    $ cat /sys/fs/cgroup/freezer/0/freezer.state
    THAWED

    # our request from above will unblock
    ```