[IPython-User] Memory usage of ipcontroller

Giovanni Luca Ciampaglia giovanni.luca.ciampaglia@usi...
Mon Sep 13 15:53:23 CDT 2010


Brian,
TaskClient.clear and MultiEngineClient.clear_properties cleared half of 
the memory in the example below. Other clear_* methods (both in TC and 
MEC) didn't bring any other improvement. Thanks for the help!

G


On 13/09/2010 20:18, Brian Granger wrote:
> Giovanni,
>
> I think that you can use TaskClient.clear() to remote the old
> references.  Can you give that a shot?
>
> Brian
>
> On Mon, Sep 13, 2010 at 2:05 AM, Giovanni Luca Ciampaglia
> <giovanni.luca.ciampaglia@usi.ch>  wrote:
>>   Hello everybody,
>> I am running a small cluster with ipcontroller and ipengine and I am
>> using the TaskClient interface to distribute simulations across 4
>> workstations in the following way:
>>>          try:
>>>              results = self.tc.map(_simulate_engine,workload)
>>>              return reduce(list.__add__,results)
>>>          except CompositeError,e:
>>>              getLogger('simulator.manager').error('Got error from
>>> engines.',
>>>                      exc_info=1)
>>>              print e.print_tracebacks()
>>
>> It works great, though I noticed that when simulation results are large,
>> ipcontroller keeps a lot of memory allocated after the simulation is
>> done. Attached is a proof of concept using MultiEngineClient. If I run
>> it with
>>> ./test_ipcontroller.py ../furl/client-mec.furl 30000000
>> ipcontroller keeps approximately 24% memory on a machine with 4GB of RAM
>> after the script is done. I am using IPython 0.10 with Python 2.6.5 and
>> NumPy 1.4.1
>>
>> ***********
>>
>> #!/usr/bin/env python
>> import warnings
>> with warnings.catch_warnings():
>>      warnings.simplefilter('ignore', category=DeprecationWarning)
>>      from IPython.kernel.client import MultiEngineClient
>> import numpy as np
>>
>> def fat_return(N):
>>      import numpy as np
>>      return np.random.rand(N)
>>
>> if __name__ == '__main__':
>>      import sys
>>      if len(sys.argv)<  3:
>>          print>>  sys.stderr, 'usage: %s mec-furl-file N' % sys.argv[0]
>>          sys.exit(-1)
>>      with warnings.catch_warnings():
>>          warnings.simplefilter('ignore', category=DeprecationWarning)
>>          mec = MultiEngineClient(sys.argv[1])
>>      N = int(sys.argv[2])
>>      result = mec.map(fat_return,(N,)*len(mec.get_ids()))
>>      print np.mean(result)
>>
>> --
>> Giovanni L. Ciampaglia
>> PhD Student
>> University of Lugano, MACS Lab
>>
>> _______________________________________________
>> IPython-User mailing list
>> IPython-User@scipy.org
>> http://mail.scipy.org/mailman/listinfo/ipython-user
>>
>
>
>


-- 
Giovanni L. Ciampaglia
PhD Student
University of Lugano, MACS Lab


More information about the IPython-User mailing list