Fix cgroup hugetlb size prefix for kB

The hugetlb cgroup control files (introduced here in 2012:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=abb8206cb0773)
use "KB" and not "kB"
(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/mm/hugetlb_cgroup.c?h=v5.0#n349).

The behavior in the kernel has not changed since the introduction, and
the current code using "kB" will therefore fail on devices with small
amounts of ram (see
https://github.com/kubernetes/kubernetes/issues/77169) running a kernel
with config flag CONFIG_HUGETLBFS=y

As seen from the code in "mem_fmt" inside hugetlb_cgroup.c, only "KB",
"MB" and "GB" are used, so the others may be removed as well.

Here is a real world example of the files inside the
"/sys/kernel/mm/hugepages/" directory:
- "hugepages-64kB"
- "hugepages-2048kB"
- "hugepages-32768kB"
- "hugepages-1048576kB"

And the corresponding cgroup files:
- "hugetlb.64KB._____"
- "hugetlb.2MB._____"
- "hugetlb.32MB._____"
- "hugetlb.1GB._____"

Signed-off-by: Odin Ugedal <odin@ugedal.com>
This commit is contained in:
Odin Ugedal 2019-05-29 21:36:36 +02:00
parent 5ef781c2e7
commit 273e7b74a7
No known key found for this signature in database
GPG Key ID: AFF9C8242CF7A7AF
1 changed files with 1 additions and 1 deletions

View File

@ -410,7 +410,7 @@ func RemovePaths(paths map[string]string) (err error) {
func GetHugePageSize() ([]string, error) { func GetHugePageSize() ([]string, error) {
var pageSizes []string var pageSizes []string
sizeList := []string{"B", "kB", "MB", "GB", "TB", "PB"} sizeList := []string{"B", "KB", "MB", "GB", "TB", "PB"}
files, err := ioutil.ReadDir("/sys/kernel/mm/hugepages") files, err := ioutil.ReadDir("/sys/kernel/mm/hugepages")
if err != nil { if err != nil {
return pageSizes, err return pageSizes, err