
By replacing grpc with ttrpc, we can reduce total memory runtime requirements and binary size. With minimal code changes, the shim can now be controlled by the much lightweight protocol, reducing the total memory required per container. When reviewing this change, take particular notice of the generated shim code. Signed-off-by: Stephen J Day <stephen.day@docker.com>
28 lines
629 B
Go
28 lines
629 B
Go
// +build !linux,!windows
|
|
|
|
package main
|
|
|
|
import (
|
|
"os"
|
|
"os/signal"
|
|
|
|
"github.com/containerd/containerd/reaper"
|
|
runc "github.com/containerd/go-runc"
|
|
"github.com/stevvooe/ttrpc"
|
|
)
|
|
|
|
// setupSignals creates a new signal handler for all signals and sets the shim as a
|
|
// sub-reaper so that the container processes are reparented
|
|
func setupSignals() (chan os.Signal, error) {
|
|
signals := make(chan os.Signal, 2048)
|
|
signal.Notify(signals)
|
|
// make sure runc is setup to use the monitor
|
|
// for waiting on processes
|
|
runc.Monitor = reaper.Default
|
|
return signals, nil
|
|
}
|
|
|
|
func newServer() *ttrpc.Server {
|
|
return ttrpc.NewServer()
|
|
}
|