A port forward rule operation spent:
not optimized 5min
optimized 3min
optmized+cProfile 8min
top 30 :
Fri Aug 19 11:27:50 2016 d:\temp\py_pro.data
614887355 function calls (614884838 primitive calls) in 548.846 seconds
Ordered by: cumulative time
List reduced from 404 to 30 due to restriction <30>
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 548.846 548.846 <string>:1(<module>)
1 0.000 0.000 548.846 548.846 update_config.py:114(mainp)
1 0.000 0.000 548.846 548.846 update_config.py:50(process_file)
1 0.001 0.001 548.837 548.837 update_config.py:44(finish_config)
1 0.000 0.000 548.836 548.836 configure.py:903(main)
1 0.000 0.000 546.228 546.228 configure.py:717(process)
1088 53.936 0.050 536.665 0.493 CsAddress.py:145(ip_in_subnet)
16 0.000 0.000 364.540 22.784
configure.py:766(processForwardRule)
16 0.001 0.000 364.540 22.784 configure.py:772(forward_vr)
32 5.869 0.183 351.378 10.981 configure.py:747(getNetworkByIp)
68170816 65.435 0.000 342.427 0.000 __init__.py:1682(iter_iprange)
68177344 182.925 0.000 277.051 0.000 __init__.py:248(__init__)
48 3.685 0.077 194.845 4.059 configure.py:741(getDeviceByIp)
16 0.001 0.000 181.689 11.356
configure.py:882(processStaticNatRule)
68170816 54.655 0.000 140.186 0.000 __init__.py:63(__hash__)
68170976 48.577 0.000 69.112 0.000 __init__.py:439(key)
68187121 42.976 0.000 42.976 0.000 {hasattr}
68188576 26.202 0.000 26.205 0.000 {isinstance}
68178432 24.945 0.000 24.945 0.000 __init__.py:34(__init__)
68177504 20.537 0.000 20.537 0.000 __init__.py:232(version)
68170816 16.419 0.000 16.419 0.000 {hash}
1 0.020 0.020 1.522 1.522 CsNetfilter.py:134(compare)
329 0.007 0.000 1.513 0.005 CsHelper.py:182(execute)
329 0.002 0.000 1.060 0.003 subprocess.py:768(communicate)
329 0.004 0.000 1.057 0.003 subprocess.py:1400(_communicate)
329 0.012 0.000 1.046 0.003
subprocess.py:1433(_communicate_with_poll)
2352 1.021 0.000 1.021 0.000 {built-in method poll}
1 0.001 0.001 1.005 1.005 CsAddress.py:99(process)
22 0.001 0.000 0.989 0.045 CsAddress.py:271(configure)
22 0.001 0.000 0.937 0.043 CsAddress.py:285(post_configure)
> 在 2016年8月20日,09:41,ilya <[email protected]> 写道:
>
> Hi Gust
>
> Are you proposing solution "optimized CsAddress.py in VR" or just
> analysis on where time is being spent?
>
> Regards
> ilya
> On 8/18/16 9:34 PM, Gust wrote:
>>
>> Hi,all
>>
>> we constructed a advance network in cloudstack , it work fine early , but
>> when I added some VR rules ,it execute slow more and more.
>>
>> About total 100 rules already exist , I add a port forward rule , it would
>> execute about 3 minutes , that we changed the agent source set more seconds
>> timeout ,else agent will timeout at 120s, and optimized CsAddress.py in VR.
>>
>> So I login to VR vm , and modify the update_config.py with cProfile ,
>> and print out execute result . because add cProfile , python execute more
>> than 8 min.
>>
>> It shows too many netaddr object init invoked.
>>
>> vr hypervisor hardware : E3 1230v2 3.4GHz , vr alloc 3GHz
>>
>> ----------------------------------------------------------------------
>> Optimized CsAddress.py , execute 3 min, else 5 min
>>
>> CsAddress.py (line 145)
>> def ip_in_subnet(self, ip):
>> ipo = IPAddress(ip)
>> net = IPNetwork("%s/%s" % (self.get_ip(), self.get_size()))
>> aset = set(net)
>> return ipo in aset
>>
>> ----------------------------------------------------------------------
>> def mainp():
>> if not (os.path.isfile(jsonCmdConfigPath) and os.access(jsonCmdConfigPath,
>> os.R_OK)):
>> print "[ERROR] update_config.py :: You are telling me to process %s,
>> but i can't access it" % jsonCmdConfigPath
>> sys.exit(1)
>>
>> # If the command line json file is unprocessed process it
>> # This is important or, the control interfaces will get deleted!
>> if os.path.isfile(jsonPath % "cmd_line.json"):
>> qf = QueueFile()
>> qf.setFile("cmd_line.json")
>> qf.load(None)
>>
>> # If the guest network is already configured and have the same IP, do not
>> try to configure it again otherwise it will break
>> if sys.argv[1] == "guest_network.json":
>> if os.path.isfile(currentGuestNetConfig):
>> file = open(currentGuestNetConfig)
>> guestnet_dict = json.load(file)
>>
>> if not is_guestnet_configured(guestnet_dict, ['eth1', 'eth2',
>> 'eth3', 'eth4', 'eth5', 'eth6', 'eth7', 'eth8', 'eth9']):
>> print "[INFO] update_config.py :: Processing Guest Network."
>> process_file()
>> else:
>> print "[INFO] update_config.py :: No need to process Guest
>> Network."
>> finish_config()
>> else:
>> print "[INFO] update_config.py :: No GuestNetwork configured yet.
>> Configuring first one now."
>> process_file()
>> else:
>> print "[INFO] update_config.py :: Processing incoming file => %s" %
>> sys.argv[1]
>> process_file()
>>
>> cProfile.run("mainp()", "/var/log/py_pro.data”)
>>
>> ----------------------------------------------------------------------
>>
>> Fri Aug 19 11:27:50 2016 d:\temp\py_pro.data
>>
>> 614887355 function calls (614884838 primitive calls) in 548.846
>> seconds
>>
>> Ordered by: internal time
>>
>> ncalls tottime percall cumtime percall filename:lineno(function)
>> 68177344 182.925 0.000 277.051 0.000 __init__.py:248(__init__)
>> 68170816 65.435 0.000 342.427 0.000 __init__.py:1682(iter_iprange)
>> 68170816 54.655 0.000 140.186 0.000 __init__.py:63(__hash__)
>> 1088 53.936 0.050 536.665 0.493 CsAddress.py:145(ip_in_subnet)
>> 68170976 48.577 0.000 69.112 0.000 __init__.py:439(key)
>> 68187121 42.976 0.000 42.976 0.000 {hasattr}
>> 68188576 26.202 0.000 26.205 0.000 {isinstance}
>> 68178432 24.945 0.000 24.945 0.000 __init__.py:34(__init__)
>> 68177504 20.537 0.000 20.537 0.000 __init__.py:232(version)
>> 68170816 16.419 0.000 16.419 0.000 {hash}
>> 32 5.869 0.183 351.378 10.981 configure.py:747(getNetworkByIp)
>> 48 3.685 0.077 194.845 4.059 configure.py:741(getDeviceByIp)
>> 2352 1.021 0.000 1.021 0.000 {built-in method poll}
>> 245441 0.352 0.000 0.510 0.000 CsNetfilter.py:296(__eq__)
>> 2149 0.251 0.000 0.251 0.000 {posix.read}
>> 798 0.111 0.000 0.608 0.001 CsNetfilter.py:116(has_rule)
>> 493585 0.098 0.000 0.098 0.000 CsNetfilter.py:258(get_table)
>> 329 0.077 0.000 0.077 0.000 {posix.fork}
>> 2444 0.059 0.000 0.059 0.000 {method 'flush' of 'file'
>> objects}
>> 2444 0.039 0.000 0.074 0.000 __init__.py:243(__init__)
>> 113950 0.030 0.000 0.030 0.000 CsNetfilter.py:270(get_chain)
>> 329 0.028 0.000 0.367 0.001
>> subprocess.py:1195(_execute_child)
>> 2444 0.021 0.000 0.078 0.000 __init__.py:458(format)
>> 2069 0.021 0.000 0.039 0.000
>> CsNetfilter.py:236(__convert_to_dict)
>> 1 0.020 0.020 1.522 1.522 CsNetfilter.py:134(compare)
>> 2444 0.017 0.000 0.024 0.000 __init__.py:1226(findCaller)
>> 2444 0.016 0.000 0.017 0.000 __init__.py:318(getMessage)
>> 41763 0.015 0.000 0.015 0.000 {method 'items' of 'dict'
>> objects}
>> 2444 0.015 0.000 0.015 0.000 {time.localtime}
>> 1088 0.014 0.000 0.028 0.000 __init__.py:737(parse_ip_network)
>> 2444 0.013 0.000 0.036 0.000 __init__.py:411(formatTime)
>> 4889 0.013 0.000 0.018 0.000 threading.py:187(release)
>> 2444 0.013 0.000 0.194 0.000 __init__.py:847(emit)
>> 4889 0.013 0.000 0.018 0.000 threading.py:147(acquire)
>> 329 0.012 0.000 1.046 0.003
>> subprocess.py:1433(_communicate_with_poll)
>> 14709 0.011 0.000 0.011 0.000 {method 'replace' of 'unicode'
>> objects}
>> 47110 0.011 0.000 0.011 0.000 CsNetfilter.py:273(get_rule)
>> 162 0.009 0.000 0.011 0.000 CsNetfilter.py:276(to_str)
>> 2444 0.009 0.000 0.362 0.000 __init__.py:1260(_log)
>> 47397/47389 0.009 0.000 0.009 0.000 {len}
>> 2444 0.008 0.000 0.090 0.000 __init__.py:836(flush)
>> 3458 0.008 0.000 0.008 0.000 {method 'write' of 'file'
>> objects}
>> 2082 0.008 0.000 0.312 0.000 __init__.py:1138(debug)
>> 1088 0.008 0.000 0.031 0.000 __init__.py:648(__iter__)
>> 2444 0.008 0.000 0.243 0.000 __init__.py:1313(callHandlers)
>> 329 0.008 0.000 0.397 0.001 subprocess.py:650(__init__)
>> 2176 0.008 0.000 0.016 0.000 ipv4.py:123(str_to_int)
>> 2444 0.008 0.000 0.008 0.000 {time.strftime}
>> 329 0.007 0.000 1.513 0.005 CsHelper.py:182(execute)
>> 2444 0.007 0.000 0.235 0.000 __init__.py:744(handle)
>> 3221 0.007 0.000 0.007 0.000 {method 'split' of 'unicode'
>> objects}
>> 2082 0.007 0.000 0.319 0.000 __init__.py:1624(debug)
>> 4888 0.007 0.000 0.024 0.000 __init__.py:708(release)
>> 1088 0.007 0.000 0.039 0.000 __init__.py:855(__init__)
>> 3948 0.007 0.000 0.007 0.000 {fcntl.fcntl}
>> 2444 0.007 0.000 0.200 0.000 __init__.py:941(emit)
>> 658 0.007 0.000 0.007 0.000 {posix.fdopen}
>> 2309 0.006 0.000 0.006 0.000 CsAddress.py:167(get_attr)
>> 4888 0.006 0.000 0.024 0.000 __init__.py:701(acquire)
>> 2444 0.006 0.000 0.079 0.000 __init__.py:1247(makeRecord)
>> 2444 0.005 0.000 0.006 0.000 __init__.py:154(getLevelName)
>> 2444 0.005 0.000 0.006 0.000 genericpath.py:85(_splitext)
>> 2444 0.005 0.000 0.249 0.000 __init__.py:1281(handle)
>> 2444 0.004 0.000 0.006 0.000 __init__.py:1353(isEnabledFor)
>> 1088 0.004 0.000 0.004 0.000 {_socket.inet_aton}
>> 14666 0.004 0.000 0.004 0.000 {thread.get_ident}
>> 21 0.004 0.000 0.018 0.001 CsNetfilter.py:212(delete)
>> 329 0.004 0.000 1.057 0.003 subprocess.py:1400(_communicate)
>> 9778 0.004 0.000 0.004 0.000 threading.py:64(_note)
>> 1088 0.003 0.000 0.010 0.000 __init__.py:1003(hostmask)
>> 1316 0.003 0.000 0.003 0.000 {posix.close}
>> 987 0.003 0.000 0.003 0.000 {posix.pipe}
>> 4888 0.003 0.000 0.003 0.000 __init__.py:605(filter)
>> 1 0.003 0.003 0.019 0.019 CsNetfilter.py:89(get_all_rules)
>> 7332 0.003 0.000 0.003 0.000 {method 'rfind' of 'str' objects}
>> 1974 0.003 0.000 0.010 0.000
>> subprocess.py:1156(_set_cloexec_flag)
>> 2444 0.003 0.000 0.081 0.000 __init__.py:721(format)
>> 2444 0.003 0.000 0.009 0.000 posixpath.py:104(splitext)
>> 1 0.003 0.003 0.269 0.269 CsNetfilter.py:125(get_unseen)
>> 329 0.003 0.000 0.003 0.000 {posix.waitpid}
>> 2444 0.003 0.000 0.003 0.000 threading.py:1152(currentThread)
>> 112 0.003 0.000 0.004 0.000 CsAddress.py:37(get_interfaces)
>> 753 0.003 0.000 0.003 0.000 {method 'close' of 'file'
>> objects}
>> 987 0.003 0.000 0.016 0.000 subprocess.py:1169(pipe_cloexec)
>> 2069 0.003 0.000 0.042 0.000 CsNetfilter.py:227(parse)
>> 2444 0.003 0.000 0.004 0.000 posixpath.py:119(basename)
>> 1088 0.003 0.000 0.013 0.000 __init__.py:980(first)
>> 2444 0.003 0.000 0.004 0.000 __init__.py:452(usesTime)
>> 658 0.003 0.000 0.004 0.000
>> subprocess.py:1216(_close_in_parent)
>> 2444 0.002 0.000 0.004 0.000 __init__.py:82(<lambda>)
>> 329 0.002 0.000 0.015 0.000 subprocess.py:1107(_get_handles)
>> 2069 0.002 0.000 0.002 0.000 CsNetfilter.py:220(__init__)
>> 2444 0.002 0.000 0.002 0.000 threading.py:967(name)
>> 329 0.002 0.000 0.007 0.000 subprocess.py:1379(wait)
>> 658 0.002 0.000 0.005 0.000
>> subprocess.py:1444(close_unregister_and_remove)
>> 231 0.002 0.000 0.002 0.000 {open}
>> 6407 0.002 0.000 0.002 0.000 {method 'get' of 'dict' objects}
>> 64 0.002 0.000 0.005 0.000 CsHelper.py:92(updatefile)
>> 6526 0.002 0.000 0.002 0.000 {method 'keys' of 'dict' objects}
>> 1088 0.002 0.000 0.002 0.000 {_socket.inet_pton}
>> 658 0.002 0.000 0.252 0.000
>> subprocess.py:473(_eintr_retry_call)
>> 658 0.002 0.000 0.003 0.000
>> subprocess.py:1440(register_and_append)
>> 329 0.002 0.000 1.060 0.003 subprocess.py:768(communicate)
>> 2010 0.002 0.000 0.007 0.000 re.py:143(search)
>> 2011 0.002 0.000 0.004 0.000 re.py:230(_compile)
>> 2069 0.002 0.000 0.002 0.000 {zip}
>> 361 0.002 0.000 0.068 0.000 __init__.py:1616(info)
>> 2176 0.002 0.000 0.002 0.000 {_struct.unpack}
>> 2444 0.002 0.000 0.002 0.000 {sys._getframe}
>> 7349 0.002 0.000 0.002 0.000 {method 'append' of 'list'
>> objects}
>> 3310/1692 0.002 0.000 0.003 0.000
>> encoder.py:341(_iterencode_dict)
>> 1120 0.002 0.000 0.006 0.000 CsAddress.py:130(get_ip)
>> 2444 0.002 0.000 0.002 0.000
>> __init__.py:1339(getEffectiveLevel)
>> 361 0.002 0.000 0.066 0.000 __init__.py:1150(info)
>> 2506 0.002 0.000 0.002 0.000 {method 'find' of 'str' objects}
>> 840 0.002 0.000 0.002 0.000 CsNetfilter.py:54(has_chain)
>> 824/1 0.001 0.000 0.003 0.003 copy.py:145(deepcopy)
>> 202 0.001 0.000 0.003 0.000 abc.py:128(__instancecheck__)
>> 2445 0.001 0.000 0.001 0.000 {method 'acquire' of
>> 'thread.lock' objects}
>> 1088 0.001 0.000 0.001 0.000 __init__.py:988(last)
>> 42 0.001 0.000 0.005 0.000 CsHelper.py:156(definedinfile)
>> 6 0.001 0.000 0.006 0.001 CsFile.py:119(search)
>> 2445 0.001 0.000 0.001 0.000 {time.time}
>> 840 0.001 0.000 0.007 0.000 CsNetfilter.py:182(add_chain)
>> 2445 0.001 0.000 0.001 0.000 {method 'release' of
>> 'thread.lock' objects}
>> 5977 0.001 0.000 0.001 0.000 {method 'lstrip' of 'str'
>> objects}
>> 21 0.001 0.000 0.002 0.000 CsAddress.py:356(fw_router)
>> 7 0.001 0.000 0.001 0.000 decoder.py:372(raw_decode)
>> 22 0.001 0.000 0.937 0.043 CsAddress.py:285(post_configure)
>> 2033 0.001 0.000 0.001 0.000 {getattr}
>> 4888 0.001 0.000 0.001 0.000 posixpath.py:51(normcase)
>> 1501 0.001 0.000 0.001 0.000 {method 'split' of 'str' objects}
>> 2743 0.001 0.000 0.001 0.000 {method 'replace' of 'str'
>> objects}
>> 21 0.001 0.000 0.065 0.003 CsRule.py:39(findMark)
>> 329 0.001 0.000 0.001 0.000 subprocess.py:754(__del__)
>> 16 0.001 0.000 364.540 22.784 configure.py:772(forward_vr)
>> 1088 0.001 0.000 0.002 0.000 CsAddress.py:154(get_size)
>> 329 0.001 0.000 0.001 0.000 {gc.enable}
>> 389 0.001 0.000 0.001 0.000 _weakrefset.py:70(__contains__)
>> 513 0.001 0.000 0.001 0.000 CsNetfilter.py:40(add_rule)
>> 2444 0.001 0.000 0.001 0.000 {posix.getpid}
>> 1 0.001 0.001 1.005 1.005 CsAddress.py:99(process)
>> 2069 0.001 0.000 0.001 0.000 CsNetfilter.py:253(set_table)
>> 24 0.001 0.000 0.001 0.000 CsAddress.py:226(buildlist)
>> 32 0.001 0.000 0.003 0.000 configure.py:728(getGuestIp)
>> 2485 0.001 0.000 0.001 0.000 CsAddress.py:126(__init__)
>> 2010 0.001 0.000 0.001 0.000 {method 'search' of
>> '_sre.SRE_Pattern' objects}
>> 3161 0.001 0.000 0.001 0.000 {method 'startswith' of 'str'
>> objects}
>> 4774 0.001 0.000 0.001 0.000 {method 'strip' of 'str' objects}
>> 42 0.001 0.000 0.014 0.000 CsRoute.py:32(add_table)
>> 704 0.001 0.000 0.001 0.000 CsAddress.py:186(is_guest)
>> 329 0.001 0.000 0.001 0.000 subprocess.py:458(_cleanup)
>> 329 0.001 0.000 0.001 0.000
>> subprocess.py:1338(_handle_exitstatus)
>> 658 0.001 0.000 0.001 0.000 {built-in method unregister}
>> 21 0.001 0.000 0.001 0.000 CsAddress.py:693(cpus)
>> 668 0.001 0.000 0.001 0.000 {method 'remove' of 'set'
>> objects}
>> 2176 0.001 0.000 0.001 0.000 __init__.py:452(__int__)
>> 1692 0.001 0.000 0.003 0.000 encoder.py:417(_iterencode)
>> 22 0.001 0.000 0.989 0.045 CsAddress.py:271(configure)
>> 33 0.001 0.000 0.005 0.000 configure.py:114(add_rule)
>> 21 0.001 0.000 0.014 0.001 CsAddress.py:668(enable)
>> 329 0.001 0.000 0.001 0.000 {method 'splitlines' of 'str'
>> objects}
>> 16 0.001 0.000 181.689 11.356
>> configure.py:882(processStaticNatRule)
>> 658 0.001 0.000 0.001 0.000 {built-in method register}
>> 1 0.001 0.001 548.837 548.837
>> update_config.py:44(finish_config)
>> 689 0.001 0.000 0.001 0.000 copy.py:267(_keep_alive)
>> 22 0.001 0.000 0.058 0.003
>> CsRoute.py:85(defaultroute_exists)
>> 840 0.001 0.000 0.002 0.000 CsNetfilter.py:113(has_chain)
>> 21 0.001 0.000 0.074 0.004
>> CsAddress.py:516(post_config_change)
>> 1974 0.001 0.000 0.001 0.000 {method 'fileno' of 'file'
>> objects}
>> 510 0.001 0.000 0.001 0.000 CsDatabag.py:55(idata)
>> 658 0.001 0.000 0.001 0.000 {method 'update' of 'set'
>> objects}
>> 71 0.000 0.000 0.000 0.000 {method 'read' of 'file' objects}
>> 695 0.000 0.000 0.000 0.000 CsNetfilter.py:233(mark_seen)
>> 950 0.000 0.000 0.000 0.000 {method 'lstrip' of 'unicode'
>> objects}
>> 660 0.000 0.000 0.000 0.000 {method 'join' of 'str' objects}
>> 34/1 0.000 0.000 0.003 0.003 copy.py:253(_deepcopy_dict)
>> 329 0.000 0.000 0.000 0.000 {method 'count' of 'list'
>> objects}
>> 12/11 0.000 0.000 0.001 0.000 sre_parse.py:388(_parse)
>> 798 0.000 0.000 0.000 0.000 CsNetfilter.py:107(get)
>> 658 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects}
>> 24 0.000 0.000 0.002 0.000 CsAddress.py:207(__init__)
>> 179 0.000 0.000 0.001 0.000 CsConfig.py:60(is_vpc)
>> 2 0.000 0.000 0.010 0.005 CsHelper.py:190(save_iptables)
>> 1 0.000 0.000 0.004 0.004 encoder.py:186(encode)
>> 58 0.000 0.000 0.000 0.000 {posix.stat}
>> 21 0.000 0.000 0.050 0.002 CsRoute.py:54(set_route)
>> 329 0.000 0.000 0.000 0.000 {select.poll}
>> 21 0.000 0.000 0.053 0.003 CsRoute.py:45(add_route)
>> 66 0.000 0.000 0.000 0.000 {sorted}
>> 21 0.000 0.000 0.045 0.002
>> CsHelper.py:35(reconfigure_interfaces)
>> 184 0.000 0.000 0.001 0.000 CsDatabag.py:82(get_type)
>> 21 0.000 0.000 0.668 0.032 CsAddress.py:598(arpPing)
>> 47 0.000 0.000 0.001 0.000 genericpath.py:26(isfile)
>> 329 0.000 0.000 0.000 0.000
>> subprocess.py:1352(_internal_poll)
>> 33 0.000 0.000 0.005 0.000 configure.py:86(__init__)
>> 1696 0.000 0.000 0.000 0.000 {id}
>> 21 0.000 0.000 0.000 0.000 CsAddress.py:320(set_mark)
>> 11 0.000 0.000 0.000 0.000 sre_compile.py:433(_compile_info)
>> 252 0.000 0.000 0.000 0.000 encoder.py:288(_iterencode_list)
>> 129 0.000 0.000 0.000 0.000 CsAddress.py:325(get_type)
>> 410 0.000 0.000 0.000 0.000 CsNetfilter.py:104(save)
>> 42 0.000 0.000 0.006 0.000 CsHelper.py:164(addifmissing)
>> 695 0.000 0.000 0.000 0.000 CsNetfilter.py:267(get_count)
>> 21 0.000 0.000 0.005 0.000 CsAddress.py:683(inKernel)
>> 179 0.000 0.000 0.000 0.000 sre_parse.py:191(__next)
>> 123 0.000 0.000 0.000 0.000 {method 'add' of 'set' objects}
>> 329 0.000 0.000 0.000 0.000 {posix.WIFSIGNALED}
>> 1 0.000 0.000 548.836 548.836 configure.py:903(main)
>> 20/11 0.000 0.000 0.000 0.000 sre_compile.py:64(_compile)
>> 2 0.000 0.000 0.010 0.005 configure.py:272(process)
>> 80 0.000 0.000 0.000 0.000 __init__.py:69(__eq__)
>> 329 0.000 0.000 0.000 0.000 {posix.WEXITSTATUS}
>> 61 0.000 0.000 0.000 0.000 CsConfig.py:45(cmdline)
>> 410 0.000 0.000 0.000 0.000 CsNetfilter.py:48(get_count)
>> 10 0.000 0.000 0.004 0.000 merge.py:49(load)
>> 66 0.000 0.000 0.000 0.000 CsAddress.py:589(ip)
>> 64 0.000 0.000 0.000 0.000 configure.py:759(portsToString)
>> 21 0.000 0.000 0.000 0.000 CsRule.py:28(__init__)
>> 1 0.000 0.000 0.019 0.019 CsNetfilter.py:188(del_standard)
>> 537 0.000 0.000 0.000 0.000 {_json.encode_basestring_ascii}
>> 69 0.000 0.000 0.000 0.000 CsAddress.py:158(get_device)
>> 28/19 0.000 0.000 0.000 0.000 sre_parse.py:149(getwidth)
>> 6 0.000 0.000 0.014 0.002 CsAddress.py:255(__init__)
>> 6 0.000 0.000 0.014 0.002 CsAddress.py:555(list)
>> 329 0.000 0.000 0.000 0.000 {gc.isenabled}
>> 1 0.000 0.000 546.228 546.228 configure.py:717(process)
>> 465 0.000 0.000 0.000 0.000 CsNetfilter.py:76(last)
>> 57 0.000 0.000 0.000 0.000 copy.py:226(_deepcopy_list)
>> 9/8 0.000 0.000 0.003 0.000 CsDatabag.py:24(__init__)
>> 1 0.000 0.000 0.000 0.000 CsFile.py:30(load)
>> 410 0.000 0.000 0.000 0.000 CsNetfilter.py:264(set_count)
>> 598 0.000 0.000 0.000 0.000 copy.py:198(_deepcopy_atomic)
>> 410 0.000 0.000 0.000 0.000 CsNetfilter.py:261(set_chain)
>> 21 0.000 0.000 0.067 0.003 CsRule.py:33(addMark)
>> 25 0.000 0.000 0.000 0.000 CsDatabag.py:68(is_redundant)
>> 44 0.000 0.000 0.000 0.000 stat.py:49(S_ISREG)
>> 22 0.000 0.000 0.000 0.000 CsAddress.py:571(configured)
>> 10/5 0.000 0.000 0.000 0.000 abc.py:148(__subclasscheck__)
>> 63 0.000 0.000 0.000 0.000 CsRoute.py:29(get_tablename)
>> 167 0.000 0.000 0.000 0.000 sre_parse.py:210(get)
>> 391 0.000 0.000 0.000 0.000 CsNetfilter.py:230(unseen)
>> 56 0.000 0.000 0.000 0.000 CsNetfilter.py:31(add)
>> 329 0.000 0.000 0.000 0.000 {posix.WIFEXITED}
>> 11 0.000 0.000 0.002 0.000 sre_compile.py:567(compile)
>> 371 0.000 0.000 0.000 0.000 encoder.py:361(<lambda>)
>> 137 0.000 0.000 0.000 0.000 sre_parse.py:147(append)
>> 115 0.000 0.000 0.000 0.000 CsConfig.py:48(address)
>> 22 0.000 0.000 0.058 0.003 CsRoute.py:69(add_defaultroute)
>> 11 0.000 0.000 0.001 0.000 sre_parse.py:686(parse)
>> 21 0.000 0.000 0.018 0.001 CsNetfilter.py:206(del_rule)
>> 1 0.000 0.000 0.009 0.009 merge.py:93(process)
>> 329 0.000 0.000 0.000 0.000 {gc.disable}
>> 44 0.000 0.000 0.000 0.000 CsDatabag.py:147(get_gateway)
>> 19 0.000 0.000 0.000 0.000 _weakrefset.py:58(__iter__)
>> 2 0.000 0.000 0.015 0.007 CsHelper.py:211(service)
>> 50 0.000 0.000 0.000 0.000 sre_parse.py:139(__getitem__)
>> 22 0.000 0.000 0.000 0.000
>> CsAddress.py:343(setup_router_control)
>> 1 0.000 0.000 0.000 0.000 {__import__}
>> 1 0.000 0.000 0.000 0.000 CsFile.py:42(is_changed)
>> 33 0.000 0.000 0.005 0.000 configure.py:110(create)
>> 43 0.000 0.000 0.000 0.000 CsRoute.py:26(__init__)
>> 1 0.000 0.000 0.006 0.006 CsApp.py:43(setup)
>> 16 0.000 0.000 364.540 22.784
>> configure.py:766(processForwardRule)
>> 7 0.000 0.000 0.001 0.000 __init__.py:257(load)
>> 1 0.000 0.000 0.000 0.000 ascii.py:8(<module>)
>> 44 0.000 0.000 0.000 0.000 stat.py:24(S_IFMT)
>> 12/11 0.000 0.000 0.001 0.000 sre_parse.py:310(_parse_sub)
>> 21 0.000 0.000 0.000 0.000 {format}
>> 7 0.000 0.000 0.001 0.000 decoder.py:361(decode)
>> 32 0.000 0.000 0.000 0.000 CsAddress.py:133(get_network)
>> 11 0.000 0.000 0.001 0.000 sre_compile.py:552(_code)
>> 2 0.000 0.000 0.000 0.000 {posix.listdir}
>> 1 0.000 0.000 0.018 0.018 CsRedundant.py:74(_redundant_off)
>> 61 0.000 0.000 0.000 0.000
>> CsConfig.py:39(get_cmdline_instance)
>> 1 0.000 0.000 0.007 0.007 CsProcess.py:61(grep)
>> 14 0.000 0.000 0.000 0.000 {method 'match' of
>> '_sre.SRE_Pattern' objects}
>> 71 0.000 0.000 0.000 0.000 CsConfig.py:51(get_fw)
>> 40 0.000 0.000 0.000 0.000 {min}
>> 1 0.000 0.000 0.007 0.007 CsAddress.py:32(compare)
>> 1 0.000 0.000 0.000 0.000 {posix.rename}
>> 1 0.000 0.000 548.846 548.846 update_config.py:50(process_file)
>> 21 0.000 0.000 0.000 0.000 CsAddress.py:665(__init__)
>> 22 0.000 0.000 0.000 0.000 CsAddress.py:237(waitfordevice)
>> 43 0.000 0.000 0.000 0.000 {hex}
>> 1 0.000 0.000 0.003 0.003 CsHelper.py:55(is_mounted)
>> 125 0.000 0.000 0.000 0.000 {ord}
>> 1 0.000 0.000 0.000 0.000 shutil.py:210(rmtree)
>> 11 0.000 0.000 0.000 0.000 {_sre.compile}
>> 1 0.000 0.000 0.003 0.003 cs_firewallrules.py:22(merge)
>> 7 0.000 0.000 0.001 0.000 __init__.py:293(loads)
>> 3 0.000 0.000 0.000 0.000 CsAddress.py:604(compare)
>> 1 0.000 0.000 0.013 0.013
>> configure.py:266(flushAllowAllEgressRules)
>> 11 0.000 0.000 0.000 0.000 genericpath.py:15(exists)
>> 10 0.000 0.000 0.000 0.000 _weakrefset.py:26(__exit__)
>> 1 0.000 0.000 0.018 0.018 CsRedundant.py:67(set)
>> 1 0.000 0.000 0.000 0.000 posixpath.py:139(islink)
>> 23 0.000 0.000 0.000 0.000 CsAddress.py:592(getDevice)
>> 21 0.000 0.000 0.000 0.000 CsAddress.py:430(fw_vpcrouter)
>> 1 0.000 0.000 548.846 548.846 update_config.py:114(mainp)
>> 22 0.000 0.000 0.000 0.000 sre_compile.py:546(isstring)
>> 1 0.000 0.000 0.004 0.004 __init__.py:193(dumps)
>> 10 0.000 0.000 0.000 0.000 _weakrefset.py:20(__enter__)
>> 1 0.000 0.000 0.000 0.000 encoder.py:212(iterencode)
>> 8 0.000 0.000 0.000 0.000 sre_compile.py:428(_simple)
>> 14/5 0.000 0.000 0.000 0.000 {issubclass}
>> 10 0.000 0.000 0.000 0.000 _weakrefset.py:83(add)
>> 1 0.000 0.000 0.000 0.000 CsRedundant.py:62(__init__)
>> 11 0.000 0.000 0.000 0.000 sre_parse.py:187(__init__)
>> 1 0.000 0.000 0.009 0.009 merge.py:87(__init__)
>> 78 0.000 0.000 0.000 0.000 {method 'iteritems' of 'dict'
>> objects}
>> 1 0.000 0.000 0.000 0.000 configure.py:446(process)
>> 22 0.000 0.000 0.000 0.000 CsAddress.py:265(setAddress)
>> 32 0.000 0.000 0.000 0.000 sre_parse.py:135(__len__)
>> 1 0.000 0.000 0.009 0.009 merge.py:273(load)
>> 23 0.000 0.000 0.000 0.000 sre_parse.py:204(match)
>> 1 0.000 0.000 0.000 0.000 __init__.py:71(search_function)
>> 11 0.000 0.000 0.000 0.000 sre_parse.py:67(__init__)
>> 1 0.000 0.000 0.000 0.000 merge.py:306(__moveFile)
>> 1 0.000 0.000 0.000 0.000
>> sre_compile.py:256(_optimize_charset)
>> 1 0.000 0.000 0.000 0.000 __init__.py:211(_acquireLock)
>> 10 0.000 0.000 0.000 0.000 merge.py:46(__init__)
>> 1 0.000 0.000 0.000 0.000 {method 'split' of
>> '_sre.SRE_Pattern' objects}
>> 18 0.000 0.000 0.000 0.000 {method 'extend' of 'list'
>> objects}
>> 1 0.000 0.000 0.007 0.007 CsApp.py:77(start)
>> 10 0.000 0.000 0.000 0.000 _weakrefset.py:16(__init__)
>> 2 0.000 0.000 0.000 0.000 CsHelper.py:73(rm)
>> 1 0.000 0.000 0.000 0.000 CsApp.py:97(add_firewall_rules)
>> 1 0.000 0.000 0.003 0.003 CsHelper.py:68(umount_tmpfs)
>> 1 0.000 0.000 0.000 0.000 {posix.rmdir}
>> 1 0.000 0.000 0.000 0.000 codecs.py:77(__new__)
>> 1 0.000 0.000 0.004 0.004 merge.py:65(save)
>> 20 0.000 0.000 0.000 0.000 sre_parse.py:90(__init__)
>> 2 0.000 0.000 0.000 0.000 CsConfig.py:78(use_extdns)
>> 1 0.000 0.000 0.000 0.000 {posix.lstat}
>> 1 0.000 0.000 0.019 0.019 CsNetfilter.py:82(__init__)
>> 1 0.000 0.000 0.000 0.000 CsHelper.py:77(rmdir)
>> 9 0.000 0.000 0.000 0.000 {method '__subclasses__' of
>> 'type' objects}
>> 10 0.000 0.000 0.000 0.000 _abcoll.py:98(__subclasshook__)
>> 10 0.000 0.000 0.000 0.000
>> _weakrefset.py:52(_commit_removals)
>> 14 0.000 0.000 0.000 0.000 {method 'end' of
>> '_sre.SRE_Match' objects}
>> 1 0.000 0.000 0.000 0.000 __init__.py:1590(error)
>> 1 0.000 0.000 0.000 0.000 re.py:168(split)
>> 1 0.000 0.000 0.000 0.000 __init__.py:1176(error)
>> 1 0.000 0.000 0.000 0.000 {posix.access}
>> 1 0.000 0.000 0.000 0.000
>> sre_compile.py:228(_compile_charset)
>> 1 0.000 0.000 0.000 0.000 CsAddress.py:219(configure_rp)
>> 10 0.000 0.000 0.000 0.000 merge.py:79(setKey)
>> 2 0.000 0.000 0.000 0.000 CsApp.py:26(__init__)
>> 3 0.000 0.000 0.000 0.000 CsNetfilter.py:68(add)
>> 8 0.000 0.000 0.000 0.000 sre_parse.py:143(__setitem__)
>> 1 0.000 0.000 0.000 0.000 CsConfig.py:72(has_metadata)
>> 1 0.000 0.000 0.000 0.000 ascii.py:41(getregentry)
>> 1 0.000 0.000 548.846 548.846 <string>:1(<module>)
>> 2 0.000 0.000 0.000 0.000 CsConfig.py:69(has_dns)
>> 1 0.000 0.000 0.000 0.000 CsHelper.py:235(copy_if_needed)
>> 1 0.000 0.000 0.000 0.000 {round}
>> 10 0.000 0.000 0.000 0.000 merge.py:76(getDataBag)
>> 2 0.000 0.000 0.000 0.000 CsAddress.py:335(get_ip_address)
>> 4 0.000 0.000 0.000 0.000 {method 'update' of 'dict'
>> objects}
>> 1 0.000 0.000 0.000 0.000 sre_parse.py:83(closegroup)
>> 2 0.000 0.000 0.000 0.000 _weakrefset.py:36(__init__)
>> 1 0.000 0.000 0.000 0.000 {method 'translate' of 'str'
>> objects}
>> 1 0.000 0.000 0.000 0.000 encoder.py:272(_make_iterencode)
>> 1 0.000 0.000 0.000 0.000 configure.py:615(process)
>> 1 0.000 0.000 0.000 0.000 __init__.py:1500(basicConfig)
>> 1 0.000 0.000 0.001 0.001 CsConfig.py:36(set_address)
>> 2 0.000 0.000 0.000 0.000 CsConfig.py:63(is_router)
>> 1 0.000 0.000 0.000 0.000 CsConfig.py:75(get_domain)
>> 1 0.000 0.000 0.000 0.000 __init__.py:220(_releaseLock)
>> 1 0.000 0.000 0.000 0.000
>> __init__.py:49(normalize_encoding)
>> 1 0.000 0.000 0.000 0.000 CsNetfilter.py:64(__init__)
>> 1 0.000 0.000 0.000 0.000 CsLoadBalancer.py:32(process)
>> 1 0.000 0.000 0.000 0.000 {built-in method __new__ of type
>> object at 0x93c580}
>> 3 0.000 0.000 0.000 0.000 {method 'setdefault' of 'dict'
>> objects}
>> 1 0.000 0.000 0.003 0.003
>> merge.py:179(process_firewallrules)
>> 1 0.000 0.000 0.000 0.000 encoder.py:101(__init__)
>> 1 0.000 0.000 0.000 0.000 sre_parse.py:266(_escape)
>> 1 0.000 0.000 0.000 0.000 CsFile.py:26(__init__)
>> 1 0.000 0.000 0.000 0.000 CsAddress.py:249(list)
>> 1 0.000 0.000 0.000 0.000 ascii.py:28(StreamWriter)
>> 1 0.000 0.000 0.000 0.000 CsConfig.py:33(__init__)
>> 1 0.000 0.000 0.000 0.000 CsApp.py:74(__init__)
>> 1 0.000 0.000 0.000 0.000 CsNetfilter.py:26(__init__)
>> 1 0.000 0.000 0.000 0.000 {method 'find' of 'bytearray'
>> objects}
>> 1 0.000 0.000 0.000 0.000 ascii.py:13(Codec)
>> 1 0.000 0.000 0.000 0.000 ascii.py:20(IncrementalEncoder)
>> 1 0.000 0.000 0.000 0.000 CsConfig.py:54(get_logger)
>> 1 0.000 0.000 0.000 0.000 merge.py:294(setFile)
>> 1 0.000 0.000 0.000 0.000 sre_parse.py:72(opengroup)
>> 2 0.000 0.000 0.000 0.000 shutil.py:222(onerror)
>> 1 0.000 0.000 0.000 0.000 CsProcess.py:27(__init__)
>> 1 0.000 0.000 0.000 0.000 {sys.exit}
>> 1 0.000 0.000 0.000 0.000 ascii.py:24(IncrementalDecoder)
>> 1 0.000 0.000 0.000 0.000 CsDatabag.py:88(get_domain)
>> 1 0.000 0.000 0.000 0.000 ascii.py:34(StreamConverter)
>> 1 0.000 0.000 0.000 0.000 {method 'remove' of 'list'
>> objects}
>> 2 0.000 0.000 0.000 0.000 {sys.exc_info}
>> 1 0.000 0.000 0.000 0.000 CsConfig.py:66(is_dhcp)
>> 1 0.000 0.000 0.000 0.000 {any}
>> 1 0.000 0.000 0.000 0.000 CsConfig.py:57(get_level)
>> 1 0.000 0.000 0.000 0.000 {method 'disable' of
>> '_lsprof.Profiler' objects}
>> 1 0.000 0.000 0.000 0.000 ascii.py:31(StreamReader)
>> 1 0.000 0.000 0.000 0.000 CsConfig.py:95(get_format)
>>
>>
>> Fri Aug 19 11:27:50 2016 d:\temp\py_pro.data
>>
>> 614887355 function calls (614884838 primitive calls) in 548.846
>> seconds
>>
>> Ordered by: cumulative time
>> List reduced from 404 to 3 due to restriction <3>
>>
>> ncalls tottime percall cumtime percall filename:lineno(function)
>> 1 0.000 0.000 548.846 548.846 <string>:1(<module>)
>> 1 0.000 0.000 548.846 548.846 update_config.py:114(mainp)
>> 1 0.000 0.000 548.846 548.846 update_config.py:50(process_file)
>>
>>
>>
>>
>>
>>