From 8adc1d83bfe8420f0dfa9e0b295d7cce96e4f4e9 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Wed, 20 Apr 2016 15:47:34 +0200 Subject: [PATCH] (netflow, flowd aggregate) add profile support, replace deepcopy for cheaper copy --- .../scripts/netflow/flowd_aggregate.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/opnsense/scripts/netflow/flowd_aggregate.py b/src/opnsense/scripts/netflow/flowd_aggregate.py index 8180a4d00..eebb638dd 100755 --- a/src/opnsense/scripts/netflow/flowd_aggregate.py +++ b/src/opnsense/scripts/netflow/flowd_aggregate.py @@ -74,7 +74,7 @@ def aggregate_flowd(do_vacuum=False): for stream_agg_object in stream_agg_objects: # class add() may change the flow contents for processing, its better to isolate # paremeters here. - flow_record_cpy = copy.deepcopy(flow_record) + flow_record_cpy = copy.copy(flow_record) stream_agg_object.add(flow_record_cpy) prev_recv = flow_record['recv'] @@ -164,7 +164,23 @@ class Main(object): if len(sys.argv) > 1 and 'console' in sys.argv[1:]: # command line start - Main() + if 'profile' in sys.argv[1:]: + # start with profiling + import cProfile + import StringIO + import pstats + + pr = cProfile.Profile(builtins=False) + pr.enable() + Main() + pr.disable() + s = StringIO.StringIO() + sortby = 'cumulative' + ps = pstats.Stats(pr, stream=s).sort_stats(sortby) + ps.print_stats() + print s.getvalue() + else: + Main() else: # Daemonize flowd aggregator daemon = Daemonize(app="flowd_aggregate", pid='/var/run/flowd_aggregate.pid', action=Main)