Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libct/int: add exec benchmark #4432

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Commits on Oct 10, 2024

  1. libct/int: use testing.TB for utils

    ...so that they can be used for benchmarks, too.
    
    Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
    kolyshkin committed Oct 10, 2024
    Configuration menu
    Copy the full SHA
    3c01b9a View commit details
    Browse the repository at this point in the history
  2. libct/int: add exec benchmark

    This is a benchmark which checks how fast we can execute /bin/true
    inside a container.
    
    Results from my machine are below. As you can see, in default setup
    about 70% of exec time is spent for CVE-2019-5736 (copying runc binary),
    and using either RUNC_DMZ=true or memfd-bind helps a lot.
    
    This can also be used for profiling (using -test.cpuprofile option).
    
    === Default setup ===
    
    [kir@kir-tp1 integration]$ sudo ./integration.test -test.run xxx -test.v -test.benchtime 5s -test.count 5 -test.bench . .
    goos: linux
    goarch: amd64
    pkg: github.com/opencontainers/runc/libcontainer/integration
    cpu: 12th Gen Intel(R) Core(TM) i7-12800H
    BenchmarkExecTrue
    BenchmarkExecTrue-20    	     327	  24475677 ns/op
    BenchmarkExecTrue-20    	     244	  25242718 ns/op
    BenchmarkExecTrue-20    	     232	  26187174 ns/op
    BenchmarkExecTrue-20    	     237	  26780030 ns/op
    BenchmarkExecTrue-20    	     318	  18487219 ns/op
    PASS
    
    === With DMZ enabled ===
    
    [kir@kir-tp1 integration]$ sudo -E RUNC_DMZ=true ./integration.test -test.run xxx -test.v -test.benchtime 5s -test.count 5 -test.bench . .
    goos: linux
    goarch: amd64
    pkg: github.com/opencontainers/runc/libcontainer/integration
    cpu: 12th Gen Intel(R) Core(TM) i7-12800H
    BenchmarkExecTrue
    BenchmarkExecTrue-20    	     694	   8263744 ns/op
    BenchmarkExecTrue-20    	     778	   8483228 ns/op
    BenchmarkExecTrue-20    	     784	   8456018 ns/op
    BenchmarkExecTrue-20    	     732	   8160239 ns/op
    BenchmarkExecTrue-20    	     769	   8236972 ns/op
    PASS
    
    === With memfd-bind ===
    
    [kir@kir-tp1 integration]$ sudo systemctl start  memfd-bind@$(systemd-escape -p $PWD/integration.test)
    [kir@kir-tp1 integration]$ sudo ./integration.test -test.run xxx -test.v -test.benchtime 5s -test.count 5 -test.bench . .
    goos: linux
    goarch: amd64
    pkg: github.com/opencontainers/runc/libcontainer/integration
    cpu: 12th Gen Intel(R) Core(TM) i7-12800H
    BenchmarkExecTrue
    BenchmarkExecTrue-20    	     800	   7538839 ns/op
    BenchmarkExecTrue-20    	     717	   7424755 ns/op
    BenchmarkExecTrue-20    	     848	   7747787 ns/op
    BenchmarkExecTrue-20    	     800	   7668740 ns/op
    BenchmarkExecTrue-20    	     751	   7304373 ns/op
    PASS
    
    Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
    kolyshkin committed Oct 10, 2024
    Configuration menu
    Copy the full SHA
    9feffcc View commit details
    Browse the repository at this point in the history