Docker容器资源限制:// Resources contains container's resources (cgroups config, ulimits...)

Resources 结构体定义了 Docker 容器可使用的资源限制,涵盖 CPU、内存、IO 等方面。

type Resources struct {
	// 适用于所有平台
	CPUShares int64 `json:'CpuShares'` // CPU 份额(相对于其他容器的权重)
	Memory    int64 // 内存限制(以字节为单位)
	NanoCPUs  int64 `json:'NanoCpus'` // CPU 配额,单位为 10^-9 个 CPU。

	// 适用于 UNIX 平台
	CgroupParent         string // 父 cgroup
	BlkioWeight          uint16 // 块 IO 权重(相对于其他容器的权重)
	BlkioWeightDevice    []*blkiodev.WeightDevice
	BlkioDeviceReadBps   []*blkiodev.ThrottleDevice
	BlkioDeviceWriteBps  []*blkiodev.ThrottleDevice
	BlkioDeviceReadIOps  []*blkiodev.ThrottleDevice
	BlkioDeviceWriteIOps []*blkiodev.ThrottleDevice
	CPUPeriod            int64           `json:'CpuPeriod'`          // CPU CFS(完全公平调度器)周期
	CPUQuota             int64           `json:'CpuQuota'`           // CPU CFS(完全公平调度器)配额
	CPURealtimePeriod    int64           `json:'CpuRealtimePeriod'`  // CPU 实时周期
	CPURealtimeRuntime   int64           `json:'CpuRealtimeRuntime'` // CPU 实时运行时
	CpusetCpus           string          // CpusetCpus 0-2, 0,1
	CpusetMems           string          // CpusetMems 0-2, 0,1
	Devices              []DeviceMapping // 要映射到容器内的设备列表
	DeviceCgroupRules    []string        // 要添加到设备 cgroup 的规则列表
	DeviceRequests       []DeviceRequest // 设备驱动程序的设备请求列表

	// KernelMemory 指定容器的内核内存限制(以字节为单位)。
	// 已弃用:内核 5.4 弃用了 kmem.limit_in_bytes。
	KernelMemory      int64           `json:',omitempty'`
	KernelMemoryTCP   int64           `json:',omitempty'` // 内核 TCP 缓冲区内存的硬限制(以字节为单位)
	MemoryReservation int64           // 内存软限制(以字节为单位)
	MemorySwap        int64           // 总内存使用量(内存 + 交换);设置为 `-1` 以启用无限交换
	MemorySwappiness  *int64          // 调整容器内存交换行为
	OomKillDisable    *bool           // 是否禁用 OOM Killer
	PidsLimit         *int64          // 设置容器的 PID 限制;设置为 `0` 或 `-1` 表示无限制,或设置为 `null` 表示不更改。
	Ulimits           []*units.Ulimit // 要在容器中设置的 ulimits 列表

	// 适用于 Windows
	CPUCount           int64  `json:'CpuCount'`   // CPU 数量
	CPUPercent         int64  `json:'CpuPercent'` // CPU 百分比
	IOMaximumIOps      uint64 // 容器系统驱动器的最大 IOps
	IOMaximumBandwidth uint64 // 容器系统驱动器的最大每秒 IO 字节数
}

CPUPercent 字段

CPUPercent 字段用于指定容器可以使用的 CPU 资源的百分比。它并不表示容器可以使用系统 CPU 剩余资源的百分比。

例如,如果将 CPUPercent 设置为 50,则表示无论系统 CPU 使用情况如何,该容器最多可以使用 50% 的 CPU 资源。

通过设置此字段,可以限制容器使用的 CPU 资源,以便在多个容器之间进行资源分配和管理,防止某个容器过度使用 CPU 资源,从而影响其他容器的性能。

Docker容器资源限制:CPU、内存、IO等

原文地址: https://www.cveoy.top/t/topic/fxcD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录