|  | @@ -73,38 +73,16 @@ if os.environ.get("CELERY_BENCH"):  # pragma: no cover
 | 
	
		
			
				|  |  |      from time import time
 | 
	
		
			
				|  |  |      from billiard import current_process
 | 
	
		
			
				|  |  |      from celery.utils.compat import format_d
 | 
	
		
			
				|  |  | +    from celery.utils.debug import memdump, sample_mem
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      all_count = 0
 | 
	
		
			
				|  |  |      bench_first = None
 | 
	
		
			
				|  |  | -    bench_mem_sample = []
 | 
	
		
			
				|  |  |      bench_start = None
 | 
	
		
			
				|  |  |      bench_last = None
 | 
	
		
			
				|  |  |      bench_every = int(os.environ.get("CELERY_BENCH_EVERY", 1000))
 | 
	
		
			
				|  |  |      bench_sample = []
 | 
	
		
			
				|  |  |      __reserved = task_reserved
 | 
	
		
			
				|  |  |      __ready = task_ready
 | 
	
		
			
				|  |  | -    _process = None
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    def ps():
 | 
	
		
			
				|  |  | -        global _process
 | 
	
		
			
				|  |  | -        if _process is None:
 | 
	
		
			
				|  |  | -            try:
 | 
	
		
			
				|  |  | -                from psutil import Process
 | 
	
		
			
				|  |  | -            except ImportError:
 | 
	
		
			
				|  |  | -                return None
 | 
	
		
			
				|  |  | -            _process = Process(os.getpid())
 | 
	
		
			
				|  |  | -        return _process
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    def mem_rss():
 | 
	
		
			
				|  |  | -        p = ps()
 | 
	
		
			
				|  |  | -        if p is not None:
 | 
	
		
			
				|  |  | -            return "%sMB" % (format_d(p.get_memory_info().rss // 1024), )
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    def sample(x, n=10, k=0):
 | 
	
		
			
				|  |  | -        j = len(x) // n
 | 
	
		
			
				|  |  | -        for _ in xrange(n):
 | 
	
		
			
				|  |  | -            yield x[k]
 | 
	
		
			
				|  |  | -            k += j
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if current_process()._name == 'MainProcess':
 | 
	
		
			
				|  |  |          @atexit.register
 | 
	
	
		
			
				|  | @@ -113,17 +91,7 @@ if os.environ.get("CELERY_BENCH"):  # pragma: no cover
 | 
	
		
			
				|  |  |                  print("- Time spent in benchmark: %r" % (
 | 
	
		
			
				|  |  |                      bench_last - bench_first))
 | 
	
		
			
				|  |  |                  print("- Avg: %s" % (sum(bench_sample) / len(bench_sample)))
 | 
	
		
			
				|  |  | -                if filter(None, bench_mem_sample):
 | 
	
		
			
				|  |  | -                    print("- rss (sample):")
 | 
	
		
			
				|  |  | -                    for mem in sample(bench_mem_sample):
 | 
	
		
			
				|  |  | -                        print("-    > %s," % mem)
 | 
	
		
			
				|  |  | -                    bench_mem_sample[:] = []
 | 
	
		
			
				|  |  | -                    bench_sample[:] = []
 | 
	
		
			
				|  |  | -                    import gc
 | 
	
		
			
				|  |  | -                    gc.collect()
 | 
	
		
			
				|  |  | -                    print("- rss (shutdown): %s." % (mem_rss()))
 | 
	
		
			
				|  |  | -                else:
 | 
	
		
			
				|  |  | -                    print("- rss: (psutil not installed).")
 | 
	
		
			
				|  |  | +                memdump()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def task_reserved(request):  # noqa
 | 
	
		
			
				|  |  |          global bench_start
 | 
	
	
		
			
				|  | @@ -150,8 +118,7 @@ if os.environ.get("CELERY_BENCH"):  # pragma: no cover
 | 
	
		
			
				|  |  |              sys.stdout.flush()
 | 
	
		
			
				|  |  |              bench_start = bench_last = now
 | 
	
		
			
				|  |  |              bench_sample.append(diff)
 | 
	
		
			
				|  |  | -            bench_mem_sample.append(mem_rss())
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            sample_mem()
 | 
	
		
			
				|  |  |          return __ready(request)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |