From 32f5390b61654d994f9378deefc835aa85123a91 Mon Sep 17 00:00:00 2001 From: Hailong Liu Date: Mon, 17 Apr 2023 09:13:59 +0000 Subject: [PATCH 1/2] podFilter: Do not rebuild all perf events when cgroup changed When cgroup changed, it's enough to only focus on these groups. Signed-off-by: Hailong Liu --- .../unity/collector/podMan/podFilter.lua | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/source/tools/monitor/unity/collector/podMan/podFilter.lua b/source/tools/monitor/unity/collector/podMan/podFilter.lua index f6446651..9bf005f5 100644 --- a/source/tools/monitor/unity/collector/podMan/podFilter.lua +++ b/source/tools/monitor/unity/collector/podMan/podFilter.lua @@ -41,11 +41,12 @@ local function addDirs(dirs, path) end end -local function setupPlugins(res, proto, pffi, mnt, dirs) +function CpodFilter:setupPlugins(res, proto, pffi, mnt, dirs, old_dirs) local c = 0 local plugins = {} for _, dir in ipairs(dirs) do + if not system:valueIsIn(old_dirs, dir) then local ls = { { name = "path", @@ -56,13 +57,15 @@ local function setupPlugins(res, proto, pffi, mnt, dirs) local CProcs = require("collector.container." .. plugin) local plug = CProcs.new(proto, pffi, mnt, dir, ls) if plug.pFile and unistd.access(plug.pFile) then - c = c + 1 - plugins[c] = plug + table.insert(self._plugins, plug) + --c = c + 1 + --plugins[c] = plug end end + end end - return plugins + return self._plugins end function CpodFilter:_init_(resYaml, proto, pffi, mnt) @@ -80,7 +83,9 @@ function CpodFilter:_init_(resYaml, proto, pffi, mnt) self._ino = Cinotifies.new() self._dirs = self:walkTops1(self._resYaml.container) - self._plugins = setupPlugins(self._resYaml, self._proto, self._pffi, self._mnt, self._dirs) + local olddirs = {} + self._plugins = {} + self:setupPlugins(self._resYaml, self._proto, self._pffi, self._mnt, self._dirs, olddirs) print("add " .. #self._plugins) end @@ -99,7 +104,7 @@ function CpodFilter:enum1LDirs(root, format, parent, dirs) end function CpodFilter:walkTops1(resYaml) - local cgroups = {"cpuacct", "memory", "blkio", "perf_event"} + local cgroups = {"perf_event"} local dirs = system:deepcopy(resYaml.directCgPath) for i,cg in ipairs(cgroups) do @@ -155,18 +160,25 @@ function CpodFilter:proc(elapsed, lines) local rec = {} if self._ino:isChange() then print("cgroup changed.") - local start = lua_local_clock() self._ino = Cinotifies.new() - self._dirs = self:walkTops1(self._resYaml.container) - for _, plugin in ipairs(self._plugins) do - pcall(plugin.releaseEvents, plugin) - end - self._plugins = setupPlugins(self._resYaml, self._proto, self._pffi, self._mnt, self._dirs) + local newdirs = self:walkTops1(self._resYaml.container) + --remove unacess able path + for i, plugin in ipairs(self._plugins) do + if (nil == plugin.pFile) or (not unistd.access(plugin.pFile)) then + --local stat, res = pcall(plugin.releaseEvents, plugin) + self._plugins[i] = nil + end + end + + self:setupPlugins(self._resYaml, self._proto, self._pffi, self._mnt, newdirs, self._dirs) + self._dirs = newdirs + collectgarbage("collect") - local stop = lua_local_clock() - ret, delta = 1, stop - start - return ret,delta + ret = 1 + print("add ".. #self._plugins) + return ret, delta end + for i, plugin in ipairs(self._plugins) do --local res = plugin:proc(elapsed, lines) local stat, res = pcall(plugin.proc, plugin, elapsed, lines) @@ -174,7 +186,6 @@ function CpodFilter:proc(elapsed, lines) table.insert(rec, i) end end - for _, i in ipairs(rec) do -- del bad plugin self._plugins[i] = nil end -- Gitee From c714a16ab2fc8c0a43e245fb9cadcb632a35bd20 Mon Sep 17 00:00:00 2001 From: Hailong Liu Date: Mon, 17 Apr 2023 09:32:47 +0000 Subject: [PATCH 2/2] podMan: Remove unused codes Signed-off-by: Hailong Liu --- .../unity/collector/podMan/podFilter.lua | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/source/tools/monitor/unity/collector/podMan/podFilter.lua b/source/tools/monitor/unity/collector/podMan/podFilter.lua index 9bf005f5..a1138215 100644 --- a/source/tools/monitor/unity/collector/podMan/podFilter.lua +++ b/source/tools/monitor/unity/collector/podMan/podFilter.lua @@ -47,22 +47,20 @@ function CpodFilter:setupPlugins(res, proto, pffi, mnt, dirs, old_dirs) for _, dir in ipairs(dirs) do if not system:valueIsIn(old_dirs, dir) then - local ls = { - { - name = "path", - index = dir, + local ls = { + { + name = "path", + index = dir, + } } - } - for _, plugin in ipairs(res.container.luaPlugin) do - local CProcs = require("collector.container." .. plugin) - local plug = CProcs.new(proto, pffi, mnt, dir, ls) - if plug.pFile and unistd.access(plug.pFile) then - table.insert(self._plugins, plug) - --c = c + 1 - --plugins[c] = plug + for _, plugin in ipairs(res.container.luaPlugin) do + local CProcs = require("collector.container." .. plugin) + local plug = CProcs.new(proto, pffi, mnt, dir, ls) + if plug.pFile and unistd.access(plug.pFile) then + table.insert(self._plugins, plug) + end end end - end end return self._plugins -- Gitee