def crawl(self, container_id, avoid_setns=False, **kwargs):
        container = DockerContainer(container_id)

        used = buffered = cached = free = 'unknown'
        with open(container.get_memory_cgroup_path('memory.stat'
                                                   ), 'r') as f:
            for line in f:
                (key, value) = line.strip().split(' ')
                if key == 'total_cache':
                    cached = int(value)
                if key == 'total_active_file':
                    buffered = int(value)

        with open(container.get_memory_cgroup_path(
                'memory.limit_in_bytes'), 'r') as f:
            limit = int(f.readline().strip())

        with open(container.get_memory_cgroup_path(
                'memory.usage_in_bytes'), 'r') as f:
            used = int(f.readline().strip())

        host_free = psutil.virtual_memory().free
        container_total = used + min(host_free, limit - used)
        free = container_total - used

        if 'unknown' not in [used, free] and (free + used) > 0:
            util_percentage = float(used) / (free + used) * 100.0
        else:
            util_percentage = 'unknown'

        return [('memory', MemoryFeature(used, buffered,
                                         cached, free, util_percentage),
                 'memory')]
예제 #2
0
    def crawl(self, container_id, avoid_setns=False, **kwargs):
        container = DockerContainer(container_id)

        used = buffered = cached = free = 'unknown'
        with open(container.get_memory_cgroup_path('memory.stat'), 'r') as f:
            for line in f:
                (key, value) = line.strip().split(' ')
                if key == 'total_cache':
                    cached = int(value)
                if key == 'total_active_file':
                    buffered = int(value)

        with open(container.get_memory_cgroup_path('memory.limit_in_bytes'),
                  'r') as f:
            limit = int(f.readline().strip())

        with open(container.get_memory_cgroup_path('memory.usage_in_bytes'),
                  'r') as f:
            used = int(f.readline().strip())

        host_free = psutil.virtual_memory().free
        container_total = used + min(host_free, limit - used)
        free = container_total - used

        if 'unknown' not in [used, free] and (free + used) > 0:
            util_percentage = float(used) / (free + used) * 100.0
        else:
            util_percentage = 'unknown'

        return [('memory',
                 MemoryFeature(used, buffered, cached, free,
                               util_percentage), 'memory')]
 def _test_non_implemented_methods(self):
     c = DockerContainer("some_id")
     with self.assertRaises(NotImplementedError):
         c.get_memory_cgroup_path()
     with self.assertRaises(NotImplementedError):
         c.get_cpu_cgroup_path()
     with self.assertRaises(NotImplementedError):
         c.link_logfiles()
     with self.assertRaises(NotImplementedError):
         c.unlink_logfiles()
예제 #4
0
 def _test_non_implemented_methods(self):
     c = DockerContainer("some_id")
     with self.assertRaises(NotImplementedError):
         c.get_memory_cgroup_path()
     with self.assertRaises(NotImplementedError):
         c.get_cpu_cgroup_path()
     with self.assertRaises(NotImplementedError):
         c.link_logfiles()
     with self.assertRaises(NotImplementedError):
         c.unlink_logfiles()
 def test_memory_cgroup(
         self,
         mocked_ismount,
         mock_get_rootfs,
         mock_inspect,
         mocked_get_runtime_env,
         mocked_dockerps):
     c = DockerContainer("good_id")
     assert c.get_memory_cgroup_path(
         'abc') == '/cgroup/memory/docker/good_id/abc'
예제 #6
0
 def test_memory_cgroup(self, mocked_ismount, mock_get_rootfs, mock_inspect,
                        mocked_get_runtime_env, mocked_dockerps):
     c = DockerContainer("good_id")
     assert c.get_memory_cgroup_path(
         'abc') == '/cgroup/memory/docker/good_id/abc'