An open and reliable container runtime https://github.com/containerd/containerd
Find a file
Anusha Ragunathan 24144682a0 Micro benchmarks for containerd. (#244)
This is the first in a series of micro benchmarks for containerd.
Performance measurement will use containerd objects and methods
that are not dependent on the grpc API and dont require the daemon
to the running. Test will require containerd-shim and runc.

The motivation is to understand the baseline performance at the lowest
containerd layer. A natural extension to this effort would be to write
macro benchmarks which would include API and daemon.

Note:
- Currently measures only one workload (busybox sh) start times. Will
add other bundles and args soon.
- Can use integration-test utils for bundle processing. However, json
marshal/unmarshal is currently timing out standard benchmark times. So
going with default spec for now.

Sample run:
BenchmarkBusyboxSh-4    / # / # / #        2     576013841 ns/op
ok      github.com/docker/containerd/runtime    1.800s

Signed-off-by: Anusha Ragunathan <anusha@docker.com>
2016-05-27 10:35:42 -07:00
api Regen proto for checkpoint pr (#249) 2016-05-25 17:52:46 -07:00
archutils Correct build flag for arm64 2016-04-29 11:42:41 +00:00
containerd containerd build clean on Solaris (#203) 2016-05-19 10:12:50 -07:00
containerd-shim Add support for specifying a checkpoint directory. (#245) 2016-05-25 17:42:37 -07:00
ctr Add support for specifying a checkpoint directory. (#245) 2016-05-25 17:42:37 -07:00
docs Move docs in readme to separate pages 2016-04-06 14:14:51 -07:00
hack containerd build clean on Solaris (#203) 2016-05-19 10:12:50 -07:00
integration-test Micro benchmarks for containerd. (#244) 2016-05-27 10:35:42 -07:00
osutils containerd build clean on Solaris (#203) 2016-05-19 10:12:50 -07:00
runtime Micro benchmarks for containerd. (#244) 2016-05-27 10:35:42 -07:00
specs containerd build clean on Solaris (#203) 2016-05-19 10:12:50 -07:00
supervisor Add support for specifying a checkpoint directory. (#245) 2016-05-25 17:42:37 -07:00
testutils Micro benchmarks for containerd. (#244) 2016-05-27 10:35:42 -07:00
vendor/src containerd build clean on Solaris (#203) 2016-05-19 10:12:50 -07:00
.gitignore Add integration-test/test-artifacts to .gitignore 2016-03-28 10:09:16 -07:00
CONTRIBUTING.md Move sign off instructions to CONTRIBUTING.md 2016-04-06 14:14:51 -07:00
Dockerfile Install containerd binaries into built docker image 2016-05-13 11:44:01 -07:00
LICENSE.code Update readme and version to 0.1.0 2016-03-21 13:01:28 -07:00
LICENSE.docs Update copyright and license 2015-12-18 00:08:16 +01:00
MAINTAINERS Add tonis and mickael as maintainers 2016-03-21 13:16:12 -07:00
Makefile Micro benchmarks for containerd. (#244) 2016-05-27 10:35:42 -07:00
NOTICE Update readme and documentation for release 2015-12-16 12:15:22 -08:00
README.md Provide more useful help information for ctr 2016-04-18 15:32:46 +08:00
version.go Add new GetServerVersion rpc method 2016-05-09 11:38:28 -07:00

containerd

containerd is a daemon to control runC, built for performance and density. containerd leverages runC's advanced features such as seccomp and user namespace support as well as checkpoint and restore for cloning and live migration of containers.

Getting started

The easiest way to start using containerd is to download binaries from the releases page.

The included ctr command-line tool allows you interact with the containerd daemon:

$ sudo ctr containers start redis /containers/redis
$ sudo ctr containers list
ID                  PATH                STATUS              PROCESSES
redis               /containers/redis   running             14063

/containers/redis is the path to an OCI bundle. See the docs for more information.

Docs

All documentation is contained in the /docs directory in this repository.

Building

You will need to make sure that you have Go installed on your system and the containerd repository is cloned in your $GOPATH. You will also need to make sure that you have all the dependencies cloned as well. Currently, contributing to containerd is not for the first time devs as many dependencies are not vendored and work is being completed at a high rate.

After that just run make and the binaries for the daemon and client will be localed in the bin/ directory.

Performance

Starting 1000 containers concurrently runs at 126-140 containers per second.

Overall start times:

[containerd] 2015/12/04 15:00:54   count:        1000
[containerd] 2015/12/04 14:59:54   min:          23ms
[containerd] 2015/12/04 14:59:54   max:         355ms
[containerd] 2015/12/04 14:59:54   mean:         78ms
[containerd] 2015/12/04 14:59:54   stddev:       34ms
[containerd] 2015/12/04 14:59:54   median:       73ms
[containerd] 2015/12/04 14:59:54   75%:          91ms
[containerd] 2015/12/04 14:59:54   95%:         123ms
[containerd] 2015/12/04 14:59:54   99%:         287ms
[containerd] 2015/12/04 14:59:54   99.9%:       355ms

Roadmap

The current roadmap and milestones for alpha and beta completion are in the github issues on this repository. Please refer to these issues for what is being worked on and completed for the various stages of development.

Copyright © 2016 Docker, Inc. All rights reserved, except as follows. Code is released under the Apache 2.0 license. The README.md file, and files in the "docs" folder are licensed under the Creative Commons Attribution 4.0 International License under the terms and conditions set forth in the file "LICENSE.docs". You may obtain a duplicate copy of the same license, titled CC-BY-SA-4.0, at http://creativecommons.org/licenses/by/4.0/.