From ec9449187bc752ef728727bd479e547d66fade44 Mon Sep 17 00:00:00 2001 From: Qiang Huang Date: Wed, 1 Mar 2017 09:10:43 +0800 Subject: [PATCH] Set specs value the same as kernel API input This partially revert #648 , after a second thought, I think we should use specs value the same as kernel API input, see: https://github.com/opencontainers/runtime-spec/issues/692#issuecomment-281889852 For memory and hugetlb limits *.limit_in_bytes, cgroup APIs take the values as string, but the parsed values are unsigned long, see: https://github.com/torvalds/linux/blob/v4.10/mm/page_counter.c#L175-L193 For `cpu.cfs_quota_us` and `cpu.rt_runtime_us`, cgroup APIs take the input value as signed long long, while `cpu.cfs_period_us` and `cpu.rt_periof_us` take the input value as unsigned long long. Signed-off-by: Qiang Huang --- config-linux.md | 12 ++++++------ schema/config-linux.json | 12 ++++++------ specs-go/config.go | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/config-linux.md b/config-linux.md index 1a8fa2108..b02741c73 100644 --- a/config-linux.md +++ b/config-linux.md @@ -285,15 +285,15 @@ For more information, see [the memory cgroup man page][cgroup-v1-memory]. The following parameters can be specified to setup the controller: -* **`limit`** *(int64, OPTIONAL)* - sets limit of memory usage in bytes +* **`limit`** *(uint64, OPTIONAL)* - sets limit of memory usage in bytes -* **`reservation`** *(int64, OPTIONAL)* - sets soft limit of memory usage in bytes +* **`reservation`** *(uint64, OPTIONAL)* - sets soft limit of memory usage in bytes -* **`swap`** *(int64, OPTIONAL)* - sets limit of memory+Swap usage +* **`swap`** *(uint64, OPTIONAL)* - sets limit of memory+Swap usage -* **`kernel`** *(int64, OPTIONAL)* - sets hard limit for kernel memory +* **`kernel`** *(uint64, OPTIONAL)* - sets hard limit for kernel memory -* **`kernelTCP`** *(int64, OPTIONAL)* - sets hard limit in bytes for kernel TCP buffer memory +* **`kernelTCP`** *(uint64, OPTIONAL)* - sets hard limit in bytes for kernel TCP buffer memory * **`swappiness`** *(uint64, OPTIONAL)* - sets swappiness parameter of vmscan (See sysctl's vm.swappiness) @@ -414,7 +414,7 @@ Each entry has the following structure: * **`pageSize`** *(string, REQUIRED)* - hugepage size -* **`limit`** *(int64, REQUIRED)* - limit in bytes of *hugepagesize* HugeTLB usage +* **`limit`** *(uint64, REQUIRED)* - limit in bytes of *hugepagesize* HugeTLB usage ###### Example diff --git a/schema/config-linux.json b/schema/config-linux.json index f74f243e5..d51e5b5dd 100644 --- a/schema/config-linux.json +++ b/schema/config-linux.json @@ -163,7 +163,7 @@ "type": "string" }, "limit": { - "$ref": "defs.json#/definitions/int64" + "$ref": "defs.json#/definitions/uint64" } }, "required": [ @@ -178,23 +178,23 @@ "properties": { "kernel": { "id": "https://opencontainers.org/schema/bundle/linux/resources/memory/kernel", - "$ref": "defs.json#/definitions/int64" + "$ref": "defs.json#/definitions/uint64" }, "kernelTCP": { "id": "https://opencontainers.org/schema/bundle/linux/resources/memory/kernelTCP", - "$ref": "defs.json#/definitions/int64" + "$ref": "defs.json#/definitions/uint64" }, "limit": { "id": "https://opencontainers.org/schema/bundle/linux/resources/memory/limit", - "$ref": "defs.json#/definitions/int64" + "$ref": "defs.json#/definitions/uint64" }, "reservation": { "id": "https://opencontainers.org/schema/bundle/linux/resources/memory/reservation", - "$ref": "defs.json#/definitions/int64" + "$ref": "defs.json#/definitions/uint64" }, "swap": { "id": "https://opencontainers.org/schema/bundle/linux/resources/memory/swap", - "$ref": "defs.json#/definitions/int64" + "$ref": "defs.json#/definitions/uint64" }, "swappiness": { "id": "https://opencontainers.org/schema/bundle/linux/resources/memory/swappiness", diff --git a/specs-go/config.go b/specs-go/config.go index 7919579db..85d04e9d7 100644 --- a/specs-go/config.go +++ b/specs-go/config.go @@ -225,7 +225,7 @@ type LinuxHugepageLimit struct { // Pagesize is the hugepage size Pagesize string `json:"pageSize"` // Limit is the limit of "hugepagesize" hugetlb usage - Limit int64 `json:"limit"` + Limit uint64 `json:"limit"` } // LinuxInterfacePriority for network interfaces @@ -281,15 +281,15 @@ type LinuxBlockIO struct { // LinuxMemory for Linux cgroup 'memory' resource management type LinuxMemory struct { // Memory limit (in bytes). - Limit *int64 `json:"limit,omitempty"` + Limit *uint64 `json:"limit,omitempty"` // Memory reservation or soft_limit (in bytes). - Reservation *int64 `json:"reservation,omitempty"` + Reservation *uint64 `json:"reservation,omitempty"` // Total memory limit (memory + swap). - Swap *int64 `json:"swap,omitempty"` + Swap *uint64 `json:"swap,omitempty"` // Kernel memory limit (in bytes). - Kernel *int64 `json:"kernel,omitempty"` + Kernel *uint64 `json:"kernel,omitempty"` // Kernel memory limit for tcp (in bytes) - KernelTCP *int64 `json:"kernelTCP,omitempty"` + KernelTCP *uint64 `json:"kernelTCP,omitempty"` // How aggressive the kernel will swap memory pages. Range from 0 to 100. Swappiness *uint64 `json:"swappiness,omitempty"` }