cgroups icon indicating copy to clipboard operation
cgroups copied to clipboard

Example usage in container

Open pavolloffay opened this issue 5 years ago • 3 comments

Hi,

sorry for creating an issue but I didn't know where to ask a quesiton.

Can this library be used in a running container to get cgroups memory limits? I would like to get value of /sys/fs/cgroup/memory/memory.limit_in_bytes. Probably it's not safe to read that file directly hence I would like to use this lib to get the memory_limit_in_bytes.

How should be the cgroups created?

control, err := cgroups.Load(cgroups.V1, cgroups.NestedPath("")) //always error

Creating it by PID does not work either as the os.Getpid() returns 1 in the container.

pavolloffay avatar Aug 21 '20 14:08 pavolloffay

The reason I am looking into this is to get total memory inside a running container.

func SysTotalMemory() uint64 {
	in := &syscall.Sysinfo_t{}
	err := syscall.Sysinfo(in)
	if err != nil {
		return 0
	}

	// If this is a 32-bit system, then these fields are
	// uint32 instead of uint64.
	// So we always convert to uint64 to match signature.
	return uint64(in.Totalram) * uint64(in.Unit)
}

returns the total host memory

pavolloffay avatar Aug 21 '20 14:08 pavolloffay

cc) @estesp @crosbymichael @Zyqsempai @AkihiroSuda

pavolloffay avatar Aug 26 '20 12:08 pavolloffay

I would like to get value of /sys/fs/cgroup/memory/memory.limit_in_bytes.

You should just use cgroups.RootPath instead of cgroups.NestedPath("") then.

edigaryev avatar Aug 24 '21 16:08 edigaryev