[lxc-devel] [PATCH] lxc-ls: Fix memory reporting

Stéphane Graber stgraber at ubuntu.com
Sat Mar 22 23:18:13 UTC 2014


This resolves the memory math when memsw is enabled and fixes reporting
of nested containers memory when using cgmanager.

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 src/lxc/lxc-ls.in | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/lxc/lxc-ls.in b/src/lxc/lxc-ls.in
index 7e35ab2..19fbfb8 100755
--- a/src/lxc/lxc-ls.in
+++ b/src/lxc/lxc-ls.in
@@ -272,20 +272,22 @@ def get_containers(fd=None, base="/", root=False):
 
                 if container.running:
                     try:
-                        memory_total = int(container.get_cgroup_item(
+                        memory_ram = int(container.get_cgroup_item(
                             "memory.usage_in_bytes"))
                     except:
-                        memory_total = 0
+                        memory_ram = 0
 
                     try:
                         memory_swap = int(container.get_cgroup_item(
-                            "memory.memsw.usage_in_bytes"))
+                            "memory.memsw.usage_in_bytes")) - memory_ram
                     except:
                         memory_swap = 0
                 else:
-                    memory_total = 0
+                    memory_ram = 0
                     memory_swap = 0
 
+                memory_total = memory_ram + memory_swap
+
             if 'memory' in args.fancy_format:
                 if container.running:
                     entry['memory'] = "%sMB" % round(memory_total / 1048576, 2)
@@ -294,8 +296,7 @@ def get_containers(fd=None, base="/", root=False):
 
             if 'ram' in args.fancy_format:
                 if container.running:
-                    entry['ram'] = "%sMB" % round(
-                        (memory_total - memory_swap) / 1048576, 2)
+                    entry['ram'] = "%sMB" % round(memory_ram / 1048576, 2)
                 else:
                     entry['ram'] = "-"
 
@@ -330,8 +331,7 @@ def get_containers(fd=None, base="/", root=False):
                     temp_fd, temp_file = tempfile.mkstemp()
                     os.remove(temp_file)
 
-                    container.attach_wait(get_containers, temp_fd,
-                                          attach_flags=0)
+                    container.attach_wait(get_containers, temp_fd)
 
                     json_file = os.fdopen(temp_fd, "r")
                     json_file.seek(0)
-- 
1.9.1



More information about the lxc-devel mailing list