免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1966 | 回复: 0

e1000e驱动和netfilter的Oprofile测试 [复制链接]

论坛徽章:
0
发表于 2009-05-23 01:18 |显示全部楼层

                近日,为了分析内核网络的性能消耗,作了一下Oprofile的分析。
Oprofile的event设定为:
结果如下
       
       
       
       
       
               
       
       
       
       
               
                        CPU: Core Solo / Duo, speed 1596.01 MHz (estimated)
                       
               
                        Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 10000
                       
               
                        samples
                        %
                        image name
                        app name
                        symbol name
               
               
                        848681
                        32.83
                        e1000e.ko
                        e1000e
                        e1000_clean_rx_irq
               
               
                        654740
                        25.33
                        ip_tables.ko
                        ip_tables
                        ipt_do_table
               
               
                        223137
                        8.63
                        e1000e.ko
                        e1000e
                        e1000_xmit_frame
               
               
                        106128
                        4.11
                        e1000e.ko
                        e1000e
                        e1000_poll
               
               
                        86015
                        3.33
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_fn
               
               
                        84797
                        3.28
                        nf_conntrack.ko
                        nf_conntrack
                        __nf_conntrack_find
               
               
                        79643
                        3.08
                        nf_conntrack.ko
                        nf_conntrack
                        nf_conntrack_in
               
               
                        52350
                        2.03
                        nf_nat.ko
                        nf_nat
                        nf_nat_packet
               
               
                        49252
                        1.91
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_in
               
               
                        45392
                        1.76
                        e1000e.ko
                        e1000e
                        e1000_alloc_rx_buffers
               
               
                        36075
                        1.4
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_out
               
               
                        34300
                        1.33
                        nf_conntrack.ko
                        nf_conntrack
                        __nf_ct_refresh_acct
               
               
                        30304
                        1.17
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_conntrack_in
               
               
                        24109
                        0.93
                        nf_conntrack.ko
                        nf_conntrack
                        udp_packet
               
               
                        23888
                        0.92
                        nf_nat.ko
                        nf_nat
                        ip_nat_route_input
               
               
                        23064
                        0.89
                        nf_conntrack.ko
                        nf_conntrack
                        nf_conntrack_find_get
               
               
                        22386
                        0.87
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_confirm
               
               
                        20662
                        0.8
                        nf_conntrack.ko
                        nf_conntrack
                        nf_ct_get_tuple
               
               
                        20175
                        0.78
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_pkt_to_tuple
               
               
                        19657
                        0.76
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_get_l4proto
               
               
                        16877
                        0.65
                        iptable_filter.ko
                        iptable_filter
                        ipt_hook
               
               
                        15896
                        0.61
                        nf_conntrack.ko
                        nf_conntrack
                        udp_error
               
               
                        15843
                        0.61
                        iptable_mangle.ko
                        iptable_mangle
                        .text
               
               
                        14749
                        0.57
                        nf_conntrack.ko
                        nf_conntrack
                        udp_pkt_to_tuple
               
               
                        13718
                        0.53
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_conntrack_help
               
               
                        13583
                        0.53
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_conntrack_defrag
               
               
                        7760
                        0.3
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_adjust
               
               
                        912
                        0.04
                        e1000e.ko
                        e1000e
                        e1000e_update_stats
               
               
                        258
                        0.01
                        e1000e.ko
                        e1000e
                        e1000e_read_phy_reg_mdic
               
               
                        194
                        0.01
                        e1000e.ko
                        e1000e
                        e1000_get_hw_semaphore_82571
               
               
                        92
                        0
                        libc-2.6.1.so
                        libc-2.6.1.so
                        (no symbols)
               
               
                        72
                        0
                        ld-2.6.1.so
                        ld-2.6.1.so
                        (no symbols)
               
               
                        63
                        0
                        e1000e.ko
                        e1000e
                        e1000_check_mng_mode_generic
               
               
                        55
                        0
                        e1000e.ko
                        e1000e
                        e1000_intr_msi
               
               
                        53
                        0
                        e1000e.ko
                        e1000e
                        e1000_put_hw_semaphore_82571
               
               
                        35
                        0
                        bash
                        bash
                        (no symbols)
               
               
                        11
                        4.30E-004
                        gawk-3.1.5
                        gawk-3.1.5
                        (no symbols)
               
               
                        8
                        3.10E-004
                        oprofiled
                        oprofiled
                        (no symbols)
               
               
                        6
                        2.30E-004
                        e1000e.ko
                        e1000e
                        e1000_watchdog_task
               
               
                        3
                        1.20E-004
                        e1000e.ko
                        e1000e
                        e1000e_get_laa_state_82571
               
               
                        3
                        1.20E-004
                        e1000e.ko
                        e1000e
                        e1000e_read_phy_reg_m88
               
               
                        2
                        7.70E-005
                        e1000e.ko
                        e1000e
                        e1000_has_link
               
               
                        2
                        7.70E-005
                        e1000e.ko
                        e1000e
                        e1000e_phy_has_link_generic
               
               
                        2
                        7.70E-005
                        libncurses.so.5.6
                        libncurses.so.5.6
                        (no symbols)
               
               
                        1
                        3.90E-005
                        busybox
                        busybox
                        _fini
               
               
                        1
                        3.90E-005
                        busybox
                        busybox
                        eval4
               
               
                        1
                        3.90E-005
                        busybox
                        busybox
                        flush_block
               
               
                        1
                        3.90E-005
                        busybox
                        busybox
                        parse_params
               
               
                        1
                        3.90E-005
                        busybox
                        busybox
                        tee_main
               
               
                        1
                        3.90E-005
                        cron
                        cron
                        (no symbols)
               
               
                        1
                        3.90E-005
                        e1000e.ko
                        e1000e
                        e1000_update_itr
               
               
                        1
                        3.90E-005
                        e1000e.ko
                        e1000e
                        e1000_watchdog
               
               
                        1
                        3.90E-005
                        e1000e.ko
                        e1000e
                        e1000e_check_for_copper_link
               
               
                        1
                        3.90E-005
                        nf_nat.ko
                        nf_nat
                        nf_nat_setup_info
               
               
                        1
                        3.90E-005
                        rm
                        rm
                        (no symbols)
               
       
可见,e1000_clean_rx_irq占用了相对较长的CPU周期。
主要分析原因是如下:因为测试的报文长度为64Byte,同时e1000e驱动的copybreak特性,会将小于特定大小的报文复制到新的skb中,便于CPU的cache命中。而这个默认的大小设定为256Byte。
再次测试如下,将copybreak修改为32,主要是为了避免在e1000_clean_rx_irq中的memcpy。
结果如下
       
       
       
       
       
               
       
       
       
       
               
                        CPU: Core Solo / Duo, speed 1596.01 MHz (estimated)
                       
               
                        Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 10000
                       
               
                        samples
                        %
                        image name
                        app name
                        symbol name
               
               
                        611613
                        32.22
                        ip_tables.ko
                        ip_tables
                        ipt_do_table
               
               
                        277127
                        14.6
                        e1000e.ko
                        e1000e
                        e1000_xmit_frame
               
               
                        224158
                        11.81
                        e1000e.ko
                        e1000e
                        e1000_clean_rx_irq
               
               
                        121322
                        6.39
                        e1000e.ko
                        e1000e
                        e1000_poll
               
               
                        80844
                        4.26
                        nf_conntrack.ko
                        nf_conntrack
                        __nf_conntrack_find
               
               
                        78043
                        4.11
                        nf_conntrack.ko
                        nf_conntrack
                        nf_conntrack_in
               
               
                        59422
                        3.13
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_fn
               
               
                        44848
                        2.36
                        e1000e.ko
                        e1000e
                        e1000_alloc_rx_buffers
               
               
                        38246
                        2.01
                        nf_nat.ko
                        nf_nat
                        nf_nat_packet
               
               
                        32711
                        1.72
                        nf_conntrack.ko
                        nf_conntrack
                        __nf_ct_refresh_acct
               
               
                        32605
                        1.72
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_out
               
               
                        30253
                        1.59
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_in
               
               
                        28437
                        1.5
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_conntrack_in
               
               
                        22895
                        1.21
                        nf_conntrack.ko
                        nf_conntrack
                        nf_conntrack_find_get
               
               
                        22718
                        1.2
                        nf_conntrack.ko
                        nf_conntrack
                        udp_packet
               
               
                        21866
                        1.15
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_confirm
               
               
                        20938
                        1.1
                        nf_conntrack.ko
                        nf_conntrack
                        nf_ct_get_tuple
               
               
                        20372
                        1.07
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_get_l4proto
               
               
                        19635
                        1.03
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_pkt_to_tuple
               
               
                        18334
                        0.97
                        iptable_filter.ko
                        iptable_filter
                        ipt_hook
               
               
                        15866
                        0.84
                        nf_conntrack.ko
                        nf_conntrack
                        udp_error
               
               
                        14579
                        0.77
                        nf_conntrack.ko
                        nf_conntrack
                        udp_pkt_to_tuple
               
               
                        13716
                        0.72
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_conntrack_defrag
               
               
                        13708
                        0.72
                        iptable_mangle.ko
                        iptable_mangle
                        .text
               
               
                        13625
                        0.72
                        nf_nat.ko
                        nf_nat
                        ip_nat_route_input
               
               
                        11912
                        0.63
                        nf_conntrack_ipv4.ko
                        nf_conntrack_ipv4
                        ipv4_conntrack_help
               
               
                        6907
                        0.36
                        iptable_nat.ko
                        iptable_nat
                        nf_nat_adjust
               
               
                        967
                        0.05
                        e1000e.ko
                        e1000e
                        e1000e_update_stats
               
               
                        232
                        0.01
                        e1000e.ko
                        e1000e
                        e1000e_read_phy_reg_mdic
               
               
                        178
                        0.01
                        e1000e.ko
                        e1000e
                        e1000_get_hw_semaphore_82571
               
               
                        84
                        0
                        ld-2.6.1.so
                        ld-2.6.1.so
                        (no symbols)
               
               
                        83
                        0
                        libc-2.6.1.so
                        libc-2.6.1.so
                        (no symbols)
               
               
                        53
                        0
                        e1000e.ko
                        e1000e
                        e1000_intr_msi
               
               
                        49
                        0
                        e1000e.ko
                        e1000e
                        e1000_put_hw_semaphore_82571
               
               
                        44
                        0
                        e1000e.ko
                        e1000e
                        e1000_check_mng_mode_generic
               
               
                        43
                        0
                        bash
                        bash
                        (no symbols)
               
               
                        9
                        4.70E-004
                        gawk-3.1.5
                        gawk-3.1.5
                        (no symbols)
               
               
                        6
                        3.20E-004
                        e1000e.ko
                        e1000e
                        e1000_watchdog_task
               
               
                        6
                        3.20E-004
                        oprofiled
                        oprofiled
                        (no symbols)
               
               
                        4
                        2.10E-004
                        e1000e.ko
                        e1000e
                        e1000_watchdog
               
               
                        3
                        1.60E-004
                        e1000e.ko
                        e1000e
                        e1000_has_link
               
               
                        3
                        1.60E-004
                        libncurses.so.5.6
                        libncurses.so.5.6
                        (no symbols)
               
               
                        2
                        1.10E-004
                        e1000e.ko
                        e1000e
                        e1000e_phy_has_link_generic
               
               
                        2
                        1.10E-004
                        libm-2.6.1.so
                        libm-2.6.1.so
                        (no symbols)
               
               
                        1
                        5.30E-005
                        busybox
                        busybox
                        lbb_prepare
               
               
                        1
                        5.30E-005
                        busybox
                        busybox
                        parse_fstab_line
               
               
                        1
                        5.30E-005
                        busybox
                        busybox
                        sendMTFValues
               
               
                        1
                        5.30E-005
                        busybox
                        busybox
                        xzalloc
               
               
                        1
                        5.30E-005
                        cat
                        cat
                        (no symbols)
               
               
                        1
                        5.30E-005
                        e1000e.ko
                        e1000e
                        e1000_update_itr
               
               
                        1
                        5.30E-005
                        e1000e.ko
                        e1000e
                        e1000e_check_for_copper_link
               
               
                        1
                        5.30E-005
                        e1000e.ko
                        e1000e
                        e1000e_get_laa_state_82571
               
       
可见,e1000_clean_rx_irq的占用下降很大。
但是,这种CPU处理周期的“均衡”,并没有提升系统的处理能力;反而有略微的下降。
另外,值得注意的是,ipt_do_table的效率实在是差劲!并且系统并没有配置nat规则,但是nat模块占用的处理周期也不容忽视。
看来,确实有必要对iptables/netfilter动些大手术了。
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/47430/showart_1935962.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP