Network Performance: Practical vs Testing (iperf)

I’m pretty new here and my searches are turning up various opinions and some of those are dated, it seems. I’m trying to setup a home network that is primarily 1G/2.5G for all end nodes but I have a Proxmox server that will be my NAS and I want this to have 10G to my switch. The idea would be to have a 10G “backbone” as the network expands.

Here’s the catch: I’ve been trying to test various 10G NICs in my server with results that have been frustrating and all over the map. On the Proxmox server, I’ve been running “iperf -s”. My testing Windows client has been directly connected port-port and I’m running “iperf -c xx.xx.xx.xx” which uses the default of 64k for TCP window, yielding ~3.5Gbps. If I increase the TCP window, I can get the result up to ~9.5Gbps.

Questions: what is the correct way to test? How does this translate to practical use?

Still learning but I’d really appreciate some direction from a more experienced person.

can you try a Linux client?

can you try -P for multiple threads? iperf -P 4 -c win10