Is lxc-cgroup expected to be working?

I’m seeing that lxc-cgroup is not able to get any real data. I’m using un-privileged containers. The containers are up and working, but lxccgroup, and lxctop are not finding any cgroup data. Is it something like cgroups only apply to privileged containers?

I’m on a recent version of lxc, and working in an ubuntu vm:

Linux ubuntu-bionic 4.15.0-51-generic #55-Ubuntu SMP Wed May 15 14:27:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

vagrant@ubuntu-bionic:~/go/src/gopkg.in/lxc/go-lxc.v2/examples/start$ lxc-cgroup --version
3.0.3

vagrant@ubuntu-bionic:~/go/src/gopkg.in/lxc/go-lxc.v2/examples/start$ lxc-ls -f
NAME                                         STATE   AUTOSTART GROUPS IPV4      IPV6 UNPRIVILEGED
dd                                           RUNNING 0         -      -         -    true
example-1f31a040-ff98-4c74-f7e6-ccfc1c81e28b STOPPED 0         -      -         -    true
example-92c15800-cd15-4c14-fea6-f2a3adc20058 STOPPED 0         -      -         -    true
go1                                          RUNNING 0         -      10.0.3.61 -    true
rubik                                        STOPPED 0         -      -         -    true

vagrant@ubuntu-bionic:~/go/src/gopkg.in/lxc/go-lxc.v2/examples/start$ lxc-cgroup go1 memory.usage_in_bytes -l TRACE -o /dev/stdout
lxc-cgroup go1 20190703143449.560 INFO     confile - confile.c:set_config_idmaps:1555 - Read uid map: type u nsid 0 hostid 165536 range 65536
lxc-cgroup go1 20190703143449.560 INFO     confile - confile.c:set_config_idmaps:1555 - Read uid map: type g nsid 0 hostid 165536 range 65536
lxc-cgroup go1 20190703143449.561 TRACE    commands - commands.c:lxc_cmd_rsp_recv:139 - Command "get_init_pid" received response
lxc-cgroup go1 20190703143449.561 DEBUG    commands - commands.c:lxc_cmd_rsp_recv:165 - Response data length for command "get_init_pid" is 0
lxc-cgroup go1 20190703143449.561 TRACE    commands - commands.c:lxc_cmd_rsp_recv:139 - Command "get_state" received response
lxc-cgroup go1 20190703143449.561 DEBUG    commands - commands.c:lxc_cmd_rsp_recv:165 - Response data length for command "get_state" is 0
lxc-cgroup go1 20190703143449.562 DEBUG    commands - commands.c:lxc_cmd_get_state:585 - Container "go1" is in "RUNNING" state
lxc-cgroup go1 20190703143449.562 TRACE    commands - commands.c:lxc_cmd_rsp_recv:139 - Command "get_state" received response
lxc-cgroup go1 20190703143449.562 DEBUG    commands - commands.c:lxc_cmd_rsp_recv:165 - Response data length for command "get_state" is 0
lxc-cgroup go1 20190703143449.562 DEBUG    commands - commands.c:lxc_cmd_get_state:585 - Container "go1" is in "RUNNING" state
lxc-cgroup go1 20190703143449.562 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1031 - basecginfo is:
lxc-cgroup go1 20190703143449.562 TRACE    cgfsng -         cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1032 - 12:memory:/user.slice
11:perf_event:/
10:rdma:/
9:hugetlb:/
8:pids:/user.slice/user-1000.slice/session-1.scope
7:cpuset:/
6:blkio:/user.slice
5:devices:/user.slice
4:cpu,cpuacct:/user.slice
3:net_cls,net_prio:/
2:freezer:/user/vagrant/0
1:name=systemd:/user.slice/user-1000.slice/session-1.scope
0::/user.slice/user-1000.slice/session-1.scope

lxc-cgroup go1 20190703132843.698 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 0: memory
lxc-cgroup go1 20190703132843.698 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 1: perf_event
lxc-cgroup go1 20190703132843.698 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 2: rdma
lxc-cgroup go1 20190703132843.698 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 3: hugetlb
lxc-cgroup go1 20190703132843.698 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 4: pids
lxc-cgroup go1 20190703132843.698 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 5: cpuset
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 6: blkio
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 7: devices
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 8: cpu
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 9: cpuacct
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 10: net_cls
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 11: net_prio
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 12: freezer
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1035 - kernel subsystem 13: cgroup2
lxc-cgroup go1 20190703132843.699 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_basecg_debuginfo:1038 - named subsystem 0: name=systemd
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:cg_hybrid_init:2459 - Writable cgroup hierarchies:
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1012 -   Hierarchies:
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1017 -   0: base_cgroup: /user.slice/user-1000.slice/session-1.scope
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1018 -       mountpoint:  /sys/fs/cgroup/systemd
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1019 -       controllers:
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1021 -       0: name=systemd
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1017 -   1: base_cgroup: /user/vagrant/0
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1018 -       mountpoint:  /sys/fs/cgroup/freezer
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1019 -       controllers:
lxc-cgroup go1 20190703132843.700 TRACE    cgfsng - cgroups/cgfsng.c:lxc_cgfsng_print_hierarchies:1021 -       0: freezer
lxc-cgroup go1 20190703132843.700 TRACE    cgroup - cgroups/cgroup.c:cgroup_init:56 - Initialized cgroup driver cgfsng
lxc-cgroup go1 20190703132843.700 TRACE    cgroup - cgroups/cgroup.c:cgroup_init:61 - Running with hybrid cgroup layout
lxc-cgroup go1 20190703132843.700 TRACE    commands - commands.c:lxc_cmd_rsp_recv:139 - Command "get_cgroup" received response
lxc-cgroup go1 20190703132843.701 DEBUG    commands - commands.c:lxc_cmd_rsp_recv:165 - Response data length for command "get_cgroup" is 0
lxc-cgroup go1 20190703132843.701 ERROR    lxc_cgroup - tools/lxc_cgroup.c:main:146 - Failed to retrieve value of 'memory.usage_in_bytes' for '/home/vagrant/.local/share/lxc:go1'
lxc-cgroup: go1: tools/lxc_cgroup.c: main: 146 Failed to retrieve value of 'memory.usage_in_bytes' for '/home/vagrant/.local/share/lxc:go1'
vagrant@ubuntu-bionic:~/go/src/gopkg.in/lxc/go-lxc.v2/examples/start$`

Do I need to enable some controllers or something? I guess I never specified any system constraints when I created the container, so maybe I have to specify them via lxc-cgroup, but it seems that would mean I can’t get resource usage info from an unprivileged container unless I put them into cgroups manually. What am I missing here?

Looks like your container is only part of the freezer and systemd hierarchies.

@brauner