Commit fa2330a1 authored by Ivan Tyagov's avatar Ivan Tyagov

Remove dependency on guppy-pe (doesn't work on 64bits platforms).

Use mxBase product to measure memory usage.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@16859 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 2b9218c7
...@@ -33,16 +33,17 @@ from Products.ERP5Type.Cache import DEFAULT_CACHE_SCOPE ...@@ -33,16 +33,17 @@ from Products.ERP5Type.Cache import DEFAULT_CACHE_SCOPE
from BaseCache import * from BaseCache import *
import time import time
def calcPythonObjectMemorySize(h, i): def calcPythonObjectMemorySize(i):
""" Recursive function that will 'walk' over complex python types and caclulate """ Recursive function that will 'walk' over complex python types and caclulate
their RAM memory usage. """ their RAM memory usage. """
s = h.iso(i).size from mx.Tools import sizeof
s = sizeof(i)
if isinstance(i, dict): if isinstance(i, dict):
for k, v in i.items(): for k, v in i.items():
s += calcPythonObjectMemorySize(h, k) + calcPythonObjectMemorySize(h, v) s += calcPythonObjectMemorySize(k) + calcPythonObjectMemorySize(v)
elif isinstance(i, list) or isinstance(i, tuple): elif isinstance(i, list) or isinstance(i, tuple):
for v in i: for v in i:
s += calcPythonObjectMemorySize(h, v) s += calcPythonObjectMemorySize(v)
return s return s
class RamCache(BaseCache): class RamCache(BaseCache):
...@@ -129,15 +130,13 @@ class RamCache(BaseCache): ...@@ -129,15 +130,13 @@ class RamCache(BaseCache):
def getCachePluginTotalMemorySize(self): def getCachePluginTotalMemorySize(self):
""" Calculate total RAM memory size of cache plugin. """ Calculate total RAM memory size of cache plugin.
This function depends on guppy python module: This function depends on mxBase python module:
http://guppy-pe.sourceforge.net/ http://www.egenix.com/products/python/mxBase/
""" """
from guppy import hpy
h = hpy()
total_size = 0 total_size = 0
cache_keys_total_size = {} cache_keys_total_size = {}
for cache_key, cache_value in self._cache_dict[DEFAULT_CACHE_SCOPE].items(): for cache_key, cache_value in self._cache_dict[DEFAULT_CACHE_SCOPE].items():
cache_item_size = calcPythonObjectMemorySize(h, cache_value.getValue()) cache_item_size = calcPythonObjectMemorySize(cache_value.getValue())
total_size += cache_item_size total_size += cache_item_size
cache_keys_total_size[cache_key] = cache_item_size cache_keys_total_size[cache_key] = cache_item_size
return total_size, cache_keys_total_size return total_size, cache_keys_total_size
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment