[lxc-devel] [PATCH] lxc-ls: Add a few new columns
Dwight Engen
dwight.engen at oracle.com
Thu Feb 13 18:38:47 UTC 2014
On Thu, 13 Feb 2014 12:54:29 -0500
Stéphane Graber <stgraber at ubuntu.com> wrote:
> On Thu, Feb 13, 2014 at 12:20:20PM -0500, Michael H. Warfield wrote:
> > On Thu, 2014-02-13 at 11:56 -0500, Stéphane Graber wrote:
> > > This adds support for:
> > > - memory (total memory)
> > > - ram
> > > - swap
> >
> > Any chance of getting the number of processes running in the
> > container (it's something I've used in the past to detect a
> > container stuck or hung on init with 1 process).
> >
> > Just a thought.
> >
> > Regards,
> > Mike
>
> I can't seem to find an easy way to grab that information from the
> API.
>
> The easiest way that comes to mind is using the tasks file from one of
> the cgroups but get_cgroup_item doesn't let me access it.
Yeah, having just been in this area, I think you want cgroup_nrtasks(), but
unfortunately it is not exposed by the API.
> >
> > > Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
> > > ---
> > > src/lxc/lxc-ls | 43 +++++++++++++++++++++++++++++++++++++++++--
> > > 1 file changed, 41 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/src/lxc/lxc-ls b/src/lxc/lxc-ls
> > > index fa53fac..c65ae81 100755
> > > --- a/src/lxc/lxc-ls
> > > +++ b/src/lxc/lxc-ls
> > > @@ -111,7 +111,8 @@ def getSubContainers(container):
> > > return None
> > >
> > > # Constants
> > > -FIELDS = ("name", "state", "ipv4", "ipv6", "autostart", "pid")
> > > +FIELDS = ("name", "state", "ipv4", "ipv6", "autostart", "pid",
> > > + "memory", "ram", "swap")
> > >
> > > # Begin parsing the command line
> > > parser = argparse.ArgumentParser(description=_("LXC: List
> > > containers"), @@ -254,6 +255,45 @@ for container_name in
> > > lxc.list_containers(config_path=nest_lxcpath): except KeyError:
> > > pass
> > >
> > > + if 'memory' in args.fancy_format or \
> > > + 'ram' in args.fancy_format or \
> > > + 'swap' in args.fancy_format:
> > > +
> > > + if container.running:
> > > + try:
> > > + memory_total = int(container.get_cgroup_item(
> > > + "memory.usage_in_bytes"))
> > > + except:
> > > + memory_total = 0
> > > +
> > > + try:
> > > + memory_swap = int(container.get_cgroup_item(
> > > + "memory.memsw.usage_in_bytes"))
> > > + except:
> > > + memory_swap = 0
> > > + else:
> > > + memory_total = 0
> > > + memory_swap = 0
> > > +
> > > + if 'memory' in args.fancy_format:
> > > + if container.running:
> > > + entry['memory'] = "%sMB" % round(memory_total /
> > > 1048576, 2)
> > > + else:
> > > + entry['memory'] = "-"
> > > +
> > > + if 'ram' in args.fancy_format:
> > > + if container.running:
> > > + entry['ram'] = "%sMB" % round(
> > > + (memory_total - memory_swap) / 1048576, 2)
> > > + else:
> > > + entry['ram'] = "-"
> > > +
> > > + if 'swap' in args.fancy_format:
> > > + if container.running:
> > > + entry['swap'] = "%sMB" % round(memory_swap /
> > > 1048576, 2)
> > > + else:
> > > + entry['swap'] = "-"
> > > +
> > > # Get the IPs
> > > for family, protocol in {'inet': 'ipv4', 'inet6':
> > > 'ipv6'}.items(): if protocol in args.fancy_format or args.nesting:
> > > @@ -263,7 +303,6 @@ for container_name in
> > > lxc.list_containers(config_path=nest_lxcpath): entry[protocol] =
> > > state continue
> > >
> > > - # FIXME: We should get get_ips working as non-root
> > > if container.running:
> > > if not SUPPORT_SETNS_NET:
> > > entry[protocol] = 'UNKNOWN'
> > > --
> > > 1.9.rc1
> > >
> > > _______________________________________________
> > > lxc-devel mailing list
> > > lxc-devel at lists.linuxcontainers.org
> > > http://lists.linuxcontainers.org/listinfo/lxc-devel
> > >
> >
> > --
> > Michael H. Warfield (AI4NB) | (770) 978-7061 | mhw at WittsEnd.com
> > /\/\|=mhw=|\/\/ | (678) 463-0932 |
> > http://www.wittsend.com/mhw/ NIC whois: MHW9 | An optimist
> > believes we live in the best of all PGP Key: 0x674627FF |
> > possible worlds. A pessimist is sure of it!
> >
>
>
>
> > _______________________________________________
> > lxc-devel mailing list
> > lxc-devel at lists.linuxcontainers.org
> > http://lists.linuxcontainers.org/listinfo/lxc-devel
>
>
More information about the lxc-devel
mailing list