State of TP-Link Archer C7v2|v5 in 2023

I do not use SQM, routing, NAT or anything else. This is basically direct bridge between WLAN and LAN.
What is "good performance"? I can get 700Mbit/sec upload in iperf3 (maximum of what 80MHz 801.11ac will suport) with CPU cycles to spare. Upload, on the other hand, will be capped to 460Mbit/sec with sirq pegged at 99-100%.

So apparently, something is taxing the CPU more on download than upload.

1 Like

Install the package sysstat.

To trace CPU usage -

SSH in to the router.

Run pidstat -T TASK 2 (which snapshots every 2 seconds)

To log the results (name the file whatever you want) -

Run pidstat -T TASK 2 | tee -a CPUtrace.txt

CTRL-C to end the trace.

Log file will be in the root directory.

Thanks for the guide. Here are the results:

Download 470Mbit/sec:


08:12:44      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:46        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:46        0         7    0.00   92.50    0.00    0.00   92.50     0  ksoftirqd/0
08:12:46        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:12:46        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:46        0      3987    0.50    0.50    0.00    0.00    1.00     0  pidstat

08:12:46      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:48        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:48        0         7    0.00   90.50    0.00    0.00   90.50     0  ksoftirqd/0
08:12:48        0       673    0.50    0.00    0.00    0.00    0.50     0  urngd
08:12:48        0      1344    0.50    0.00    0.00    0.00    0.50     0  uhttpd
08:12:48        0      2650    0.00    2.50    0.00    0.00    2.50     0  kworker/u2:1-ath10k_wq
08:12:48        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:12:48        0      3987    0.50    0.00    0.00    0.00    0.50     0  pidstat

08:12:48      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:50        0         3    0.00    0.50    0.00    0.00    0.50     0  kworker/0:0-events
08:12:50        0         7    0.00   90.50    0.00    0.00   90.50     0  ksoftirqd/0
08:12:50        0      1163    0.00    0.50    0.00    0.00    0.50     0  hostapd
08:12:50        0      1226    0.50    0.00    0.00    0.00    0.50     0  netifd
08:12:50        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:50        0      3987    0.00    0.50    0.00    0.00    0.50     0  pidstat

08:12:50      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:52        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:52        0         7    0.00   90.50    0.00    0.00   90.50     0  ksoftirqd/0
08:12:52        0       673    0.50    0.50    0.00    0.00    1.00     0  urngd
08:12:52        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:52        0      3915    0.50    0.00    0.00    0.00    0.50     0  dropbear
08:12:52        0      3987    0.50    0.50    0.00    0.00    1.00     0  pidstat

08:12:52      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:54        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:54        0         7    0.00   92.00    0.00    0.00   92.00     0  ksoftirqd/0
08:12:54        0      2650    0.00    2.50    0.00    0.00    2.50     0  kworker/u2:1-ath10k_wq
08:12:54        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:12:54        0      3987    0.50    0.50    0.00    0.00    1.00     0  pidstat

08:12:54      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:56        0         3    0.00    0.50    0.00    0.00    0.50     0  kworker/0:0-events
08:12:56        0         7    0.00   91.00    0.00    0.00   91.00     0  ksoftirqd/0
08:12:56        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:12:56        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:56        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:12:56        0      3987    0.50    0.00    0.00    0.00    0.50     0  pidstat

Upload 700 Mbit/sec:

08:13:48      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:50        0         7    0.00   80.00    0.00    0.00   80.00     0  ksoftirqd/0
08:13:50        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:50        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:13:50        0      4001    0.00    2.00    0.00    0.00    2.00     0  kworker/0:1-events

08:13:50      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:52        0         7    0.00   81.00    0.00    0.00   81.00     0  ksoftirqd/0
08:13:52        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:13:52        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:52        0      4000    0.50    0.50    0.00    0.00    1.00     0  pidstat
08:13:52        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

08:13:52      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:54        0         7    0.00   81.50    0.00    0.00   81.50     0  ksoftirqd/0
08:13:54        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:54        0      3915    0.50    0.50    0.00    0.00    1.00     0  dropbear
08:13:54        0      4000    0.50    0.50    0.00    0.00    1.00     0  pidstat
08:13:54        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

08:13:54      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:56        0         7    0.00   78.11    0.00    0.00   78.11     0  ksoftirqd/0
08:13:56        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:56        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:13:56        0      4001    0.00    1.99    0.00    0.00    1.99     0  kworker/0:1-events

08:13:56      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:58        0         7    0.00   84.50    0.00    0.00   84.50     0  ksoftirqd/0
08:13:58        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:13:58        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:58        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:13:58        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:13:58        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

08:13:58      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:14:00        0         7    0.00   78.50    0.00    0.00   78.50     0  ksoftirqd/0
08:14:00        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:14:00        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:14:00        0      4000    1.00    0.50    0.00    0.00    1.50     0  pidstat
08:14:00        0      4001    0.00    2.00    0.00    0.00    2.00     0  kworker/0:1-events

08:14:00      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:14:02        0         7    0.00   84.50    0.00    0.00   84.50     0  ksoftirqd/0
08:14:02        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:14:02        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:14:02        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

Everything else is the same.
OpenWrt 21.02.3. 80MHz channel 802.11ac. non-ct ath10 drivers. Using iperf3 client on a iphone and iperf3 server on wired x86 linux machine. Router is configured as dumb AP.

Good info on ksoftirqd -

Thanks. Unfortunately, it doesn't say much more than explain what software interrupts are and that you can try to tweak CPU affinity (which is pointless on Archer C7 as CPU only has one core).

I assume that issue is somehow in ath10k driver?

I experienced the same high CPU usage in OpenWrt when downstreaming via Wi-Fi with Mediatek devices as well (Archer C6 v3 mt7621 and Redmi AX6S mt7622).

Since these other two devices have a better CPU than the C7, the CPU is not the bottleneck for Wi-Fi speed. But still it uses a considerable amount of CPU when testing iperf3 via Wi-Fi.

My point here is that this looks like an OpenWrt design characteristic rather than a Wifi driver issue.

I use ct-smallbuffers...but I test wired using the Waveform bufferbloat/speedtest -

I'll run a test on 5 GHz.

Just ran the Waveform test (twice) on 5 GHz.

CPU usage in htop peaked at 64%

pidstat showed ksoftirqd peaked at 7%

Edit: Switched from ct-smallbuffers to ct (default), and got a slightly higher CPU peak at 68%

pidstat showed the same peak for ksoftirqd.

benchmarking WiFi via Internet is not really optimal. You are basically benchmarking whole chain: WiFi, NAT, routing and your Internet provider. using WLAN to LAN iperf3 (and iperf3 server needs to be outside of router) taxes WiFi only.

1 Like

Which mirrors real-world use.

It does not. I have dedicated x86 router and C7 is just a wireless AP. Also, I do lot of in-house movement of data from laptop to NAS etc.

You cannot troubleshoot WiFi by measuring Internet speed. Especially if your max internet speed is bellow max WiFi speed.

2 Likes

You do you.

Good luck.

Hi there.
I am looking for a budget OpenWRT router in order to use SQM and adblock. I am stuck between the Xiaomi Mi 4A Gigabit Edition and this router, and I am leaning towards the C7 because it has greater number of ports and a much nicer way to flash in general.

How stable are the builds? Would the hardware be able to manage ~8-9 devices? I have an 35/8 VDSL connection but it might become an 100/10 soon, so that is also something to consider. I wonder if the C7 would be able to meet my use case. Thanks.

For a 100/10 connection, a C7 should be good. Back when I used one as my "everything" box, i coukd expect to set 110-120mbits in SQM before the C7 got saturated, on wifi, going thru ether I could get it up to 140 or so. This on a 300/30 connection, running cake SQM, etc. Thats about your limits there.

Slight difference note, I had the v2 anf v3 versions, which ran 720mhz. Some later versions use a slightly different main chip, and maybe a bit faster cpu speed. Just picked up a referb A7 (almost the same) for cheap, its doing 775mhz.

Another note, the c7 family has a bit of wifi issues, with occasional dropouts, theyve gotten better on recent revisions, but not perfect yet.

1 Like

You may also consider a TP-Link Archer C6 v3. It has the same chipset as the Xiaomi Mi 4A Gigabit (MediaTek mt7621), but it is better in the sense it has one additional LAN port and it is also much easier to flash OpenWrt (and to recover) when compared with the Xiaomi.

When compared with C7, the C6v3 has a better CPU that will handle better other applications you may install in the future (also with SQM it will perform better but for your internet speeds it will not make a difference).

Despite being a 2x2 WiFi (C7 is a 3x3), C6v3 will have a better throughput in Wi-Fi compared to C7 (important when copying files from one device to another in your local Wi-Fi). See this topic for more information about this matters.

On the other hand, the C7 has an USB port which lacks on the C6v3. C7 may also have a slight edge in terms of WiFi signal strength.

1 Like

Thanks a lot. The C7 will get delivered today, and I will install OpenWRT once I test the stability with the TP-Link's firmware.

Used to install custom ROM's back in early 2010's, and OpenWRT+this router made me feel the same thrill of customisation. I am thankful to the community.

2 Likes

I just switched to a 1000/50 internet connection (mainly for the upload, and that part works just fine), but am now running into some limitations with my A7v5... Based on this thread, I should be able to get at least twice of my current download performance.

Specifically, on 21.02.3, with SQM disabled, flow offloading enabled, and using non-ct smallbuffer ath10k packages, I'm getting around 400 Mbps wired, and 200 Mbps wireless (laptop right next to router).

RAM usage seems perfectly fine (~35% available), CPU does spike but top still shows over 20% idle under the loads I mentioned. So I'm a bit confused as to where the bottleneck could be?

Thanks, that's indeed an excellent post, but not really the issue here as far as I can see? I'm not expecting to hit anywhere near gigabit performance. However:
a) quite a few posts across the forums (not just this thread) have data points for 600+ wired / 300+ wireless with C7/A7, which I'm not able to reach, and
b) my A7v5 appears to stall before hitting its RAM/CPU limitations (which is otherwise always shown to be the culprit), so it's unclear to me what exactly is throttling the throughput

The archer c7 is waaay too slow for that, its genuine performance is ~175-200 MBit/s, only software flow-offloading can push it in the vicinity of 400 MBit/s, while you need 1000/50 MBit/s, which is firmly in RPi4, r4s, x86_64 territory.

1 Like