Patrick McHardy wrote:
Fabian Hugelshofer wrote:opreport --symbols (first 20, full file attached): CPU: ARM/XScale PMU2, speed 0 MHz (estimated)Counted CPU_CYCLES events (clock cycles counter) with a unit mask of 0x00 (No unit mask) count 100000samples % app name symbol name 20018 9.6520 vmlinux memcpyCallgraph information would be useful since its unclear whether this is the memcpy triggered by netlink message trimming in af_netlink.c or something different. Unfortunately according to the documentation this is only supported on x86. I think selecting the netfilter options as modules should provide slightly more detail though.
Callgraphs work also with ARM. I had to enable callgraph already for capturing, which I did not before. I collected a deepness of 5 levels. You find the result attached to this email. For help on interpreting read:
http://oprofile.sourceforge.net/doc/opreport.html#opreport-callgraphIt basically shows the same list as before (unindented) with callers on top and callees below.
memcpy is mostly invoked by skb_copy and netlink_broadcast (af_netlink). netlink_broadcast is expensive on its own and calls pskb_expand_head which is expensive as well. Using multipart messages would reduce the need to call netlink_broadcast.
19493 9.3988 ath_pci.ko ath_sysctl_registerThis looks odd. I couldn't find this function in the current kernel tree, which version are you using?
I am using 2.6.24.2. ath_pci is from the Madwifi drivers. The test setup is all wireless.
4091 1.9725 vmlinux csum_partialYou can disable conntrack checksumming by executing: echo 0 >/proc/sys/net/netfilter/nf_conntrack_checksum
I don't think that this has a significant impact. As I wrote it is possible to capture all packets (same traffic) with ULOG, parse the headers, do lookups and the counting without problems. For this checksumming is enabled as well. The problems only start if I enable connection events capturing.
Attachment:
oprep_symb_cg5.txt.tar.gz
Description: GNU Zip compressed data