Changes between Version 5 and Version 6 of performance_tuning


Ignore:
Timestamp:
02/27/2023 09:56:06 PM (14 months ago)
Author:
Tim Harvey
Comment:

removed Laguna info (EOL)

Legend:

Unmodified
Added
Removed
Modified
  • performance_tuning

    v5 v6  
    44
    55Various performance aspects rely heavily on the configuration of your Linux operating system.  Here are some things to keep in mind:
    6  * L2 Cache - enabling L2 cache can greatly increase the performance of some things, but greatly hurt others - see [wiki:laguna/l2cache here]
    76 * Kernel modules - kernel modules that are not needed can bog down certain paths, such as network routing (iptables/ebtables) (see below)
    87 * Userland services - Various services and daemons that are not needed can chew up system resources (CPU cycles, memory footprint) (see below)
     
    112111[  3]  0.0-10.0 sec  58.0 MBytes  48.7 Mbits/sec   0.240 ms 117423/158815 (74%)
    113112}}}
    114 
    115 
    116 === Increasing Performance Examples ===
    117 
    118 
    119 Here are some examples showing various tunings of a Laguna GW2388 (dual core 600MHz ARM with dual GigE ports) with iperf network bandwidth test between Laguna GW2388 and a PC through a Netgear GigE switch:
    120  * pre-built firmware (12-10 release), unmodified (186/491mbps tx/rx)
    121 {{{
    122 root@OpenWrt:/# iperf -c 192.168.1.146
    123 ------------------------------------------------------------
    124 Client connecting to 192.168.1.146, TCP port 5001
    125 TCP window size: 16.0 KByte (default)
    126 ------------------------------------------------------------
    127 [  3] local 192.168.1.83 port 56088 connected with 192.168.1.146 port 5001
    128 [ ID] Interval       Transfer     Bandwidth
    129 [  3]  0.0-10.0 sec   223 MBytes   186 Mbits/sec
    130 root@OpenWrt:/# iperf -s
    131 ------------------------------------------------------------
    132 Server listening on TCP port 5001
    133 TCP window size: 85.3 KByte (default)
    134 ------------------------------------------------------------
    135 [  4] local 192.168.1.83 port 5001 connected with 192.168.1.146 port 55929
    136 [ ID] Interval       Transfer     Bandwidth
    137 [  4]  0.0-10.0 sec   500 MBytes   419 Mbits/sec
    138 }}}
    139  * disabling all kernel modules (306/732mbps tx/rx) (iptables/ebtables is a big performance hit)
    140 {{{
    141 root@OpenWrt:/# mv /etc/modules.d /etc/modules.old
    142 root@OpenWrt:/# reboot
    143 root@OpenWrt:/# iperf -c 192.168.1.146
    144 ------------------------------------------------------------
    145 Client connecting to 192.168.1.146, TCP port 5001
    146 TCP window size: 16.0 KByte (default)
    147 ------------------------------------------------------------
    148 [  3] local 192.168.1.83 port 58570 connected with 192.168.1.146 port 5001
    149 [ ID] Interval       Transfer     Bandwidth
    150 [  3]  0.0-10.0 sec   365 MBytes   306 Mbits/sec
    151 root@gw2388-test:/# iperf -s
    152 ------------------------------------------------------------
    153 Server listening on TCP port 5001
    154 TCP window size: 85.3 KByte (default)
    155 ------------------------------------------------------------
    156 [  4] local 192.168.1.83 port 5001 connected with 192.168.1.146 port 56554
    157 [ ID] Interval       Transfer     Bandwidth
    158 [  4]  0.0-10.0 sec   873 MBytes   732 Mbits/sec
    159 }}}
    160  * disabling all init scripts as well (378/754mbps tx/rx)
    161 {{{
    162 root@OpenWrt:/# for i in $(ls /etc/init.d); do /etc/init.d/$i disable; done
    163 root@OpenWrt:/# /etc/init.d/boot enable
    164 root@OpenWrt:/# reboot
    165 root@OpenWrt:/# iperf -c 192.168.1.146
    166 ------------------------------------------------------------
    167 Client connecting to 192.168.1.146, TCP port 5001
    168 TCP window size: 16.0 KByte (default)
    169 ------------------------------------------------------------
    170 [  3] local 192.168.1.93 port 52295 connected with 192.168.1.146 port 5001
    171 [ ID] Interval       Transfer     Bandwidth
    172 [  3]  0.0-10.0 sec   451 MBytes   378 Mbits/sec
    173 root@OpenWrt:/# iperf -s
    174 ------------------------------------------------------------
    175 Server listening on TCP port 5001
    176 TCP window size: 85.3 KByte (default)
    177 ------------------------------------------------------------
    178 [  4] local 192.168.1.93 port 5001 connected with 192.168.1.146 port 37005
    179 [ ID] Interval       Transfer     Bandwidth
    180 [  4]  0.0-10.0 sec   900 MBytes   754 Mbits/sec
    181 }}}
    182 
    183 Here are some examples using a GW2380 (single core 300MHz ARM with single GigE port) looking at transmit performance:
    184  * pre-built firmware (12-10 release), unmodified (153/138mbps tx/rx)
    185 {{{
    186 root@OpenWrt:/# iperf -c 192.168.1.146
    187 ------------------------------------------------------------
    188 Client connecting to 192.168.1.146, TCP port 5001
    189 TCP window size: 16.0 KByte (default)
    190 ------------------------------------------------------------
    191 [  3] local 192.168.1.87 port 33327 connected with 192.168.1.146 port 5001
    192 [ ID] Interval       Transfer     Bandwidth
    193 [  3]  0.0-10.0 sec   183 MBytes   153 Mbits/sec
    194 root@OpenWrt:/# iperf -s
    195 ------------------------------------------------------------
    196 Server listening on TCP port 5001
    197 TCP window size: 85.3 KByte (default)
    198 ------------------------------------------------------------
    199 [  4] local 192.168.1.87 port 5001 connected with 192.168.1.146 port 53363
    200 [ ID] Interval       Transfer     Bandwidth
    201 [  4]  0.0-10.1 sec   166 MBytes   138 Mbits/sec
    202 }}}
    203  * disabling all kernel modules (207/214mbps tx/rx) (iptables/ebtables is a big performance hit)
    204 {{{
    205 root@OpenWrt:/# mv /etc/modules.d /etc/modules.old
    206 root@OpenWrt:/# reboot
    207 root@OpenWrt:/# iperf -c 192.168.1.146
    208 ------------------------------------------------------------
    209 Client connecting to 192.168.1.146, TCP port 5001
    210 TCP window size: 16.0 KByte (default)
    211 ------------------------------------------------------------
    212 [  3] local 192.168.1.97 port 60819 connected with 192.168.1.146 port 5001
    213 [ ID] Interval       Transfer     Bandwidth
    214 [  3]  0.0-10.0 sec   248 MBytes   207 Mbits/sec
    215 root@OpenWrt:/# iperf -s
    216 ------------------------------------------------------------
    217 Server listening on TCP port 5001
    218 TCP window size: 85.3 KByte (default)
    219 ------------------------------------------------------------
    220 [  4] local 192.168.1.87 port 5001 connected with 192.168.1.146 port 53387
    221 [ ID] Interval       Transfer     Bandwidth
    222 [  4]  0.0-10.0 sec   255 MBytes   214 Mbits/sec
    223 }}}
    224  * disabling all init scripts as well (222/214mbps tx/rx)
    225 {{{
    226 root@OpenWrt:/# for i in $(ls /etc/init.d); do /etc/init.d/$i disable; done
    227 root@OpenWrt:/# /etc/init.d/boot enable
    228 root@OpenWrt:/# /etc/init.d/done enable
    229 root@OpenWrt:/# reboot
    230 root@OpenWrt:/# iperf -c 192.168.1.146
    231 ------------------------------------------------------------
    232 Client connecting to 192.168.1.146, TCP port 5001
    233 TCP window size: 16.0 KByte (default)
    234 ------------------------------------------------------------
    235 [  3] local 192.168.1.97 port 34382 connected with 192.168.1.146 port 5001
    236 [ ID] Interval       Transfer     Bandwidth
    237 [  3]  0.0-10.0 sec   265 MBytes   222 Mbits/sec
    238 root@OpenWrt:/# iperf -s
    239 ------------------------------------------------------------
    240 Server listening on TCP port 5001
    241 TCP window size: 85.3 KByte (default)
    242 ------------------------------------------------------------
    243 [  4] local 192.168.1.87 port 5001 connected with 192.168.1.146 port 53387
    244 [ ID] Interval       Transfer     Bandwidth
    245 [  4]  0.0-10.0 sec   255 MBytes   214 Mbits/sec
    246 }}}
    247 
    248 
    249 Notes:
    250  * the above tests are using 'iperf -s' on an Unbuntu Linux GigE PC Host through a GigE Netgear switch.  This uses a 16KB TCP window size - you can acheive higher tx throughput by using larger TCP windows.
    251113
    252114