]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lua: fix stats gathering
authorDwight Engen <dwight.engen@oracle.com>
Thu, 5 Sep 2013 19:20:44 +0000 (15:20 -0400)
committerStéphane Graber <stgraber@ubuntu.com>
Thu, 5 Sep 2013 23:58:55 +0000 (19:58 -0400)
- remove lxc subdir in cgroup paths (done in commit b98f7d6e)
- remove extraneous debug printfs
- remove extra call to stats_clear

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lua-lxc/lxc.lua
src/lxc/lxc-top

index 3f41d6a8a29c6cc854c760817ea81fda4ebfb5b5..aa80a95c99df752c596d9f487fa74f40854b3242 100755 (executable)
@@ -254,7 +254,7 @@ end
 -- methods for stats collection from various cgroup files
 -- read integers at given coordinates from a cgroup file
 function container:stat_get_ints(controller, item, coords)
-    local f = io.open(cgroup_path.."/"..controller.."/lxc/"..self.ctname.."/"..item, "r")
+    local f = io.open(cgroup_path.."/"..controller.."/"..self.ctname.."/"..item, "r")
     local lines = {}
     local result = {}
 
@@ -280,7 +280,7 @@ end
 
 -- read an integer from a cgroup file
 function container:stat_get_int(controller, item)
-    local f = io.open(cgroup_path.."/"..controller.."/lxc/"..self.ctname.."/"..item, "r")
+    local f = io.open(cgroup_path.."/"..controller.."/"..self.ctname.."/"..item, "r")
     if (not f) then
        return 0
     end
@@ -294,19 +294,17 @@ end
 
 function container:stat_match_get_int(controller, item, match, column)
     local val
-    local f = io.open(cgroup_path.."/"..controller.."/lxc/"..self.ctname.."/"..item, "r")
+    local f = io.open(cgroup_path.."/"..controller.."/"..self.ctname.."/"..item, "r")
     if (not f) then
        return 0
     end
 
     for line in f:lines() do
-       printf("matching line:%s with match:%s\n", line, match)
        if (string.find(line, match)) then
            local col
 
            col = line:split(" ", 80)
            val = tonumber(col[column]) or 0
-           printf("found line!! val:%d\n", val)
        end
     end
     f:close()
@@ -350,6 +348,17 @@ function M.stats_clear(stat)
     stat.blkio         = 0
 end
 
+function M.stats_clear(stat)
+    stat.mem_used      = 0
+    stat.mem_limit     = 0
+    stat.memsw_used    = 0
+    stat.memsw_limit   = 0
+    stat.cpu_use_nanos = 0
+    stat.cpu_use_user  = 0
+    stat.cpu_use_sys   = 0
+    stat.blkio         = 0
+end
+
 -- return configured containers found in LXC_PATH directory
 function M.containers_configured(names_only)
     local containers = {}
@@ -381,34 +390,22 @@ end
 -- return running containers found in cgroup fs
 function M.containers_running(names_only)
     local containers = {}
-    local attr
-
-    -- the lxc directory won't exist if no containers has ever been started
-    attr = lfs.attributes(cgroup_path .. "/cpu/lxc")
-    if (not attr) then
-       return containers
-    end
-
-    for file in lfs.dir(cgroup_path .. "/cpu/lxc") do
-       if (file ~= "." and file ~= "..")
-       then
-           local pathfile = cgroup_path .. "/cpu/lxc/" .. file
-           local attr = lfs.attributes(pathfile)
+    local names = M.containers_configured(true)
 
-           if (attr.mode == "directory") then
+    for _,name in ipairs(names) do
+       local ct = container:new(name)
+       if ct:running() then
+               -- note, this is a "mixed" table, ie both dictionary and list
+               table.insert(containers, name)
                if (names_only) then
-                   -- note, this is a "mixed" table, ie both dictionary and list
-                   containers[file] = true
-                   table.insert(containers, file)
+                   containers[name] = true
+                   ct = nil
                else
-                   local ct = container:new(file)
-                   -- note, this is a "mixed" table, ie both dictionary and list
-                   containers[file] = ct
-                   table.insert(containers, file)
+                   containers[name] = ct
                end
-           end
        end
     end
+
     table.sort(containers, function (a,b) return (a < b) end)
     return containers
 end
index 8e8bafbe804d72d3c50cfe198ddebb64ffe9cb69..35d7e02ac3a506670eeb811900a3bb5ebebd4ca4 100755 (executable)
@@ -130,7 +130,6 @@ end
 function container_list_update()
     local now_running
 
-    lxc.stats_clear(stats_total)
     now_running = lxc.containers_running(true)
 
     -- check for newly started containers