update_linux.go 1001 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package daemon
  2. import (
  3. "time"
  4. "github.com/docker/docker/api/types/container"
  5. "github.com/docker/docker/libcontainerd"
  6. specs "github.com/opencontainers/runtime-spec/specs-go"
  7. )
  8. func toContainerdResources(resources container.Resources) *libcontainerd.Resources {
  9. var r libcontainerd.Resources
  10. r.BlockIO = &specs.LinuxBlockIO{
  11. Weight: &resources.BlkioWeight,
  12. }
  13. shares := uint64(resources.CPUShares)
  14. r.CPU = &specs.LinuxCPU{
  15. Shares: &shares,
  16. Cpus: resources.CpusetCpus,
  17. Mems: resources.CpusetMems,
  18. }
  19. var (
  20. period uint64
  21. quota int64
  22. )
  23. if resources.NanoCPUs != 0 {
  24. period = uint64(100 * time.Millisecond / time.Microsecond)
  25. quota = resources.NanoCPUs * int64(period) / 1e9
  26. }
  27. r.CPU.Period = &period
  28. r.CPU.Quota = &quota
  29. r.Memory = &specs.LinuxMemory{
  30. Limit: &resources.Memory,
  31. Reservation: &resources.MemoryReservation,
  32. Kernel: &resources.KernelMemory,
  33. }
  34. if resources.MemorySwap > 0 {
  35. r.Memory.Swap = &resources.MemorySwap
  36. }
  37. return &r
  38. }