| 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. |