def memory_info(self): # on Windows RSS == WorkingSetSize and VSM == PagefileUsage # fields of PROCESS_MEMORY_COUNTERS struct: # http://msdn.microsoft.com/en-us/library/windows/desktop/ # ms684877(v=vs.85).aspx t = self._get_raw_meminfo() return _common.pmem(t[2], t[7])
def memory_info(self): f = open("/proc/%s/statm" % self.pid, 'rb') try: vms, rss = f.readline().split()[:2] return _common.pmem(int(rss) * PAGESIZE, int(vms) * PAGESIZE) finally: f.close()
def test_memory_usage_is_available(self): # given port = 1234 pid = 42 process = MagicMock() p = ForkedProcess(process, port) process.pid = pid with patch('pixelated.provider.fork.adapter.Process') as psutil_process_mock: psutil_mock = psutil_process_mock.return_value psutil_mock.memory_info.return_value = pmem(1024, 2048) # when usage = p.memory_usage() # then psutil_process_mock.assert_called_once_with(pid) psutil_mock.memory_info.assert_called_once_with() self.assertEqual(1024, usage)
def test_memory_usage_is_available(self): # given port = 1234 pid = 42 process = MagicMock() p = ForkedProcess(process, port) process.pid = pid with patch('pixelated.provider.fork.adapter.Process' ) as psutil_process_mock: psutil_mock = psutil_process_mock.return_value psutil_mock.memory_info.return_value = pmem(1024, 2048) # when usage = p.memory_usage() # then psutil_process_mock.assert_called_once_with(pid) psutil_mock.memory_info.assert_called_once_with() self.assertEqual(1024, usage)
def test_memory_usage(self, docker_mock, process_mock): # given container = {u'Status': u'Up 20 seconds', u'Created': 1404904929, u'Image': u'pixelated:latest', u'Ports': [{u'IP': u'0.0.0.0', u'Type': u'tcp', u'PublicPort': 5000, u'PrivatePort': 33144}], u'Command': u'sleep 100', u'Names': [u'/test'], u'Id': u'f59ee32d2022b1ab17eef608d2cd617b7c086492164b8c411f1cbcf9bfef0d87'} info = {u'HostsPath': u'/var/lib/docker/containers/f2cdb04277e9e056c610240edffe8ff94ae272e462312c270e5300975d60af89/hosts', u'Created': u'2014-07-14T13:17:46.17558664Z', u'Image': u'f63df19194389be6481a174b36d291c483c8982d5c07485baa71a46b7f6582c8', u'Args': [], u'Driver': u'aufs', u'HostConfig': {u'PortBindings': {u'4567/tcp': [{u'HostPort': u'5000', u'HostIp': u'0.0.0.0'}]}, u'NetworkMode': u'', u'Links': None, u'LxcConf': None, u'ContainerIDFile': u'', u'Binds': [u'/tmp/multipile/folker:/mnt/user:rw'], u'PublishAllPorts': False, u'Dns': None, u'DnsSearch': None, u'Privileged': False, u'VolumesFrom': None}, u'MountLabel': u'', u'VolumesRW': {u'/mnt/user': True}, u'State': {u'Pid': 3250, u'Paused': False, u'Running': True, u'FinishedAt': u'0001-01-01T00:00:00Z', u'StartedAt': u'2014-07-14T13:17:46.601922899Z', u'ExitCode': 0}, u'ExecDriver': u'native-0.2', u'ResolvConfPath': u'/etc/resolv.conf', u'Volumes': {u'/mnt/user': u'/tmp/multipile/folker'}, u'Path': u'/bin/bash -l -c "/usr/bin/pixelated-user-agent --dispatcher"', u'HostnamePath': u'/var/lib/docker/containers/f2cdb04277e9e056c610240edffe8ff94ae272e462312c270e5300975d60af89/hostname', u'ProcessLabel': u'', u'Config': {u'MemorySwap': 0, u'Hostname': u'f2cdb04277e9', u'Entrypoint': None, u'PortSpecs': None, u'Memory': 0, u'OnBuild': None, u'OpenStdin': False, u'Cpuset': u'', u'Env': [u'HOME=/', u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'], u'User': u'', u'CpuShares': 0, u'AttachStdout': True, u'NetworkDisabled': False, u'WorkingDir': u'', u'Cmd': [u'/bin/bash -l -c "/usr/bin/pixelated-user-agent --dispatcher"'], u'StdinOnce': False, u'AttachStdin': False, u'Volumes': {u'/mnt/user': {}}, u'Tty': False, u'AttachStderr': True, u'Domainname': u'', u'Image': u'pixelated', u'ExposedPorts': {u'4567/tcp': {}}}, u'Id': u'f2cdb04277e9e056c610240edffe8ff94ae272e462312c270e5300975d60af89', u'NetworkSettings': {u'Bridge': u'docker0', u'PortMapping': None, u'Gateway': u'172.17.42.1', u'IPPrefixLen': 16, u'IPAddress': u'172.17.0.14', u'Ports': {u'4567/tcp': [{u'HostPort': u'5000', u'HostIp': u'0.0.0.0'}]}}, u'Name': u'/folker'} client = docker_mock.return_value client.containers.return_value = [container] client.inspect_container.return_value = info psutil_mock = process_mock.return_value psutil_mock.memory_info.return_value = pmem(1024, 2048) provider = self._create_initialized_provider(self._adapter, 'some docker url') # when usage = provider.memory_usage() # then self.assertEqual({'total_usage': 1024, 'average_usage': 1024, 'agents': [ {'name': 'test', 'memory_usage': 1024} ]}, usage)
def memory_info(self): with open("/proc/%s/statm" % self.pid, 'rb') as f: vms, rss = f.readline().split()[:2] return _common.pmem(int(rss) * PAGESIZE, int(vms) * PAGESIZE)
def memory_info(self): ret = cext.proc_basic_info(self.pid) rss, vms = ret[1] * 1024, ret[2] * 1024 return _common.pmem(rss, vms)
def memory_info(self): rss, vms = cext.proc_memory_info(self.pid)[:2] return _common.pmem(rss, vms)
def test_memory_usage(self, docker_mock, process_mock): # given container = { u'Status': u'Up 20 seconds', u'Created': 1404904929, u'Image': u'pixelated:latest', u'Ports': [{ u'IP': u'0.0.0.0', u'Type': u'tcp', u'PublicPort': 5000, u'PrivatePort': 33144 }], u'Command': u'sleep 100', u'Names': [u'/test'], u'Id': u'f59ee32d2022b1ab17eef608d2cd617b7c086492164b8c411f1cbcf9bfef0d87' } info = { u'HostsPath': u'/var/lib/docker/containers/f2cdb04277e9e056c610240edffe8ff94ae272e462312c270e5300975d60af89/hosts', u'Created': u'2014-07-14T13:17:46.17558664Z', u'Image': u'f63df19194389be6481a174b36d291c483c8982d5c07485baa71a46b7f6582c8', u'Args': [], u'Driver': u'aufs', u'HostConfig': { u'PortBindings': { u'4567/tcp': [{ u'HostPort': u'5000', u'HostIp': u'0.0.0.0' }] }, u'NetworkMode': u'', u'Links': None, u'LxcConf': None, u'ContainerIDFile': u'', u'Binds': [u'/tmp/multipile/folker:/mnt/user:rw'], u'PublishAllPorts': False, u'Dns': None, u'DnsSearch': None, u'Privileged': False, u'VolumesFrom': None }, u'MountLabel': u'', u'VolumesRW': { u'/mnt/user': True }, u'State': { u'Pid': 3250, u'Paused': False, u'Running': True, u'FinishedAt': u'0001-01-01T00:00:00Z', u'StartedAt': u'2014-07-14T13:17:46.601922899Z', u'ExitCode': 0 }, u'ExecDriver': u'native-0.2', u'ResolvConfPath': u'/etc/resolv.conf', u'Volumes': { u'/mnt/user': u'/tmp/multipile/folker' }, u'Path': u'/bin/bash -l -c "/usr/bin/pixelated-user-agent --dispatcher"', u'HostnamePath': u'/var/lib/docker/containers/f2cdb04277e9e056c610240edffe8ff94ae272e462312c270e5300975d60af89/hostname', u'ProcessLabel': u'', u'Config': { u'MemorySwap': 0, u'Hostname': u'f2cdb04277e9', u'Entrypoint': None, u'PortSpecs': None, u'Memory': 0, u'OnBuild': None, u'OpenStdin': False, u'Cpuset': u'', u'Env': [ u'HOME=/', u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' ], u'User': u'', u'CpuShares': 0, u'AttachStdout': True, u'NetworkDisabled': False, u'WorkingDir': u'', u'Cmd': [ u'/bin/bash -l -c "/usr/bin/pixelated-user-agent --dispatcher"' ], u'StdinOnce': False, u'AttachStdin': False, u'Volumes': { u'/mnt/user': {} }, u'Tty': False, u'AttachStderr': True, u'Domainname': u'', u'Image': u'pixelated', u'ExposedPorts': { u'4567/tcp': {} } }, u'Id': u'f2cdb04277e9e056c610240edffe8ff94ae272e462312c270e5300975d60af89', u'NetworkSettings': { u'Bridge': u'docker0', u'PortMapping': None, u'Gateway': u'172.17.42.1', u'IPPrefixLen': 16, u'IPAddress': u'172.17.0.14', u'Ports': { u'4567/tcp': [{ u'HostPort': u'5000', u'HostIp': u'0.0.0.0' }] } }, u'Name': u'/folker' } client = docker_mock.return_value client.containers.return_value = [container] client.inspect_container.return_value = info psutil_mock = process_mock.return_value psutil_mock.memory_info.return_value = pmem(1024, 2048) provider = self._create_initialized_provider(self._adapter, 'some docker url') # when usage = provider.memory_usage() # then self.assertEqual( { 'total_usage': 1024, 'average_usage': 1024, 'agents': [{ 'name': 'test', 'memory_usage': 1024 }] }, usage)
def memory_info(self): """Return a tuple with the process' RSS and VMS size.""" rss, vms = cext.proc_memory_info(self.pid)[:2] return _common.pmem(rss, vms)