Nmap Development mailing list archives

Tudor's Status Report - #13 of 17


From: Tudor-Emil COMAN <tudor_emil.coman () cti pub ro>
Date: Tue, 26 Jul 2016 05:58:26 +0000

Hi,



This week I continued using callgrind to identify bottlenecks and try to solve them.


Accomplishments:

- We now use a binary search to find the right probe for a received packet. To do this I made the incompleteHosts a set 
instead of a list. This set is ordered by the IP address of it's probes.

- Limited unnecessary calls to alloc_vsprintf in output.cc.

- Made build_tcp() create the packet in the same buffer every time to limit calls to malloc.

- Removed some unnecessary calls to target_needs_new_hostgroup() in nmap.cc. This one was really a performance killer 
and I made so that for hostgroups smaller than PING_GROUP_SZ (currently 4096) it doesn't get called at all.



Performance gains are visible for really high packet rates.

For something like: ./nmap  54.239.156.68/16 -sS -Pn -p 80 -T5 -n --open --min-rate 130000 --min-hostgroup 16384

Without these optimizations the scan took about 9.6 seconds, with these optimizations it takes about 8.5 seconds.



Priorities:

- Find other profiling tools, callgrind adds x20 more overhead.

- See if I can improve some NSE scripts.


_______________________________________________
Sent through the dev mailing list
https://nmap.org/mailman/listinfo/dev
Archived at http://seclists.org/nmap-dev/

Current thread: