15 ms·
Don't Use Iperf3 on Windows
- tzury 2y ago[flagged]
- mixermachine 2y agoCompany policy and old habits
- nikanj 2y agoBecause despite what HN says, the vast majority of actual paid work is still done on Windows PCs using a locally-running application. If you want to sell a Windows Desktop application to your customers, you probably want to write it on Windows.
- threePointFive 2y agoThe gravity of ASP.NET, SQL Server, AD, etc. Is hard to break out of
- LordN00b 2y agoBecause Visual Studio is windows only.
- SpaghettiCthulu 2y agoWhy do professional software developers use Visual Studio in the first place?
- high_na_euv 2y agoBecause it is world class IDE, which is by far ahead of competition (except rider) for C#? I wish evey Lang had as good IDE as vs is
- SpaghettiCthulu 2y agoHaving used Visual Studio and Rider myself, I can say with confidence that you are correct: Rider is miles ahead in terms of stability and usability.
- high_na_euv 2y agoConsider using free extensions like Roslynator then.
- prmoustache 2y agoWhy do professional developers use C# in the first place?
- high_na_euv 2y agoOne of the Best designed languages and most sane ecosystem by far I did c, cpp and c# for money and thats my experience. C# has lowest amount of WTFs per loc
- KronisLV 2y agoHere's a recent comment of mine that talked about some of the ups and downs of choosing C# and .NET for a webdev project of mine: https://news.ycombinator.com/item?id=40022126 https://news.ycombinator.com/item?id=40022126 In short, nowadays it's a pretty strong contender and can fill in similar niches to Java (decent type system, good runtime, good tools, nowadays available on most platforms), with downsides that to me don't seem like dealbreakers (not as big of an ecosystem, which leads to breakages along the way when tools and libraries aren't as well maintained). I've also used Node, Python, Ruby, PHP, a bit of Go and some others on the back end, I'd say that it's a bit slower to develop in than many of those but the performance and maintainability of the code (especially the refactoring you can do in the IDEs) feels worth it. Maybe for not quick MVPs, but probably for multi-year projects.
- SpaghettiCthulu 2y ago> I did c, cpp and c# for money and thats my experience. > > C# has lowest amount of WTFs per loc Sure, C# looks great when compared with C or C++, but that's a very low bar to pass. Compare it with Java, and it's on par at best. Compare it with Rust, and C# might as well be C.
- jasode 2y ago>Why do professional software developers use Visual Studio in the first place? - to build C++/C# executables that are deployed to Windows computers. Examples are the millions of corporate desktops that already use Microsoft Office suite and home pcs with Windows for running AAA games. - to build ASP.NET web apps because the corporation chose the Microsoft stack of WindowsServer+SQLServer+C# instead of Linux+MySQL+PHP. Why do companies continue to use Windows instead of Linux? Often because they have lots of other desktop software that only runs on Windows. E.g. CAD, analytics, etc. If the target audience is already on Windows and the implementation language is C++/C# instead of Javascript/Electron, the easiest path for the developer is to also use Microsoft Visual Studio on Windows.
- jimcsharp 2y agoTo make just a bunch of money.
- John23832 2y agoYou obviously haven't witnessed software development in Asia (particularly India, and until recently, China). Windows is everywhere. .Net and C# are drivers. Plus, people just have Windows computers.
- cqqxo4zV46cp 2y agoI haven’t consensually used Windows in almost two decades, but this still made me roll my eyes. Your industry peers aren’t your comrades in this weird 2000s holy war.
- guardian5x 2y agoBecause it works pretty well and offers basically all development tools and WSL2 as well. And some Developers like the Windows Desktop. (I know this might be an unpopular opinion)
- delta_p_delta_x 2y agoI swear, these sort of snarky drive-by comments are below HN's standards. I'll bite anyway. - Windows has a 72-75% market share of desktop OSs. - About 95% of non-console video games are developed either for or on Windows. And video games are the most lucrative entertainment market—more than music, film, television, and adult entertainment together. - A large majority of internal sysadmin is run with Windows Server 2022, including things like Active Directory, Exchange, SMB, etc. - About a fifth to a quarter of public web servers are also running Windows Server. These are the financial factors. - Windows is a decent development environment—sue me, UNIX greybeards. - Visual Studio 2022 blows everything that the FOSS world has come up with out of the water. GDB, perf, LLDB, dtrace, I've used them all. They all suck compared to what VS offers. After some point, you want to stop screwing with 'my OS is an IDE', and just click through your source code setting red circles, press the green play button, and then smash F5 jumping through code. And it works. - During debug, I get flame graphs, memory and CPU profiling with live graphs, stack traces, exception traces, conditional breakpoints, thread tree views, local, global, and 'auto' variable values, highlights when variable values change, and even GPU debugging. - For a 'closed-source' OS, debugging and profiling on Windows is still better than on Linux[1]. - Windows comes with a fantastic GC runtime—.NET—and an equally powerful shell (heh, maybe that's why they called it PowerShell) that can directly call methods and classes in said runtime. I'd like to see the UNIX shell with an equivalent. - Windows doesn't have fork(), and all the baggage that comes with it. It is possible to back-target Windows XP and even Windows 2000 from a computer running Windows 11 and VS 2022. I'd like to see what Linux can do barring 'let's spin up an old CentOS Docker'. These are the development factors. As a user OS, it's getting enshittified, I fully concur. I despise the encroachment of ads and 'Copilot' everywhere. But as an OS, I'll daresay it is every bit as productive as Linux is, if not more so. [1]: https://www.reddit.com/r/rust/comments/hrqr36/cpu_profiling_on_windows/ https://www.reddit.com/r/rust/comments/hrqr36/cpu_profiling_...
- throwaway2990 2y ago[dead]
- deleted 2y ago[deleted]
- kryptiskt 2y agoBecause I'm a professional and not a cultist I'm game for using whatever environment as long as I'm appropriately compensated. Windows, QNX, Wind River, bring it on.
- pjmlp 2y agoBecause professional software developers have Windows customers. Developer !== UNIX.
- GuB-42 2y agoBecause their customers use Windows, and at some point, even when their app is multi-platform, they need to work on the platform their customers are using. Amateurs can do as they like, but professionals need to follow the money, and sometimes, Windows is where the money is. Edit: Windows has a few strong points, I particularly like the Visual Studio debugger and there is no equivalent on Linux (my platform of choice) that I am aware of. But really, since you specially mentioned professionals, the answer is simple: money.
- extraduder_ire 2y agoI wonder how it performs under WSL. I assume worse than the suggested benchmarking tools, but far better than the outdated Iperf3 version using cygwin that the page references.
- Dalewyn 2y agoGiven the goal is benchmarking and there are native options available, having emulation/thunking (WSL1) or virtualization (WSL2) in the pipeline would defeat the purpose unless you very specifically want such things.
- TiredOfLife 2y agoEven enabling wsl2 or other features puts windows itself into virtualized mode.
- nullindividual 2y agoIf you read the comments on the article, the author goes into WSL2 perf.
- molticrystal 2y agoPerhaps Microsoft should work with OpenWRT to get the linux version of ntttcp incorporated and built for routers as a package. I use iperf2/iperf3 because it is provided by opkg.
- luma 2y agoI think this is the key problem with their recommendation - it presumes that I'm running Windows on both sides of the test. iperf is neat because it runs on just about anything which allows you to run a binary which is really handy in datacenter troubleshooting situations.
- pseudosavant 2y agoMy first thought was "I bet getting ntttcp on x86 with Ubuntu/CentOS is ok, but I doubt it will be simple for something like OpenWRT." root@router:~# opkg find ntttcp root@router:~# opkg install ntttcp Unknown package 'ntttcp'. Collected errors: * opkg_install_cmd: Cannot install package ntttcp. root@router:~# Microsoft would be so much better served putting resources into proper Windows support for iperf3, instead of creating their own tools and convincing the world to switch.
- rixthefox 2y agoI would suspect Microsoft's corporate culture is to blame for that. If you make a tool that "already works on Windows" work you don't get any extra praise. If you however come up with a brand new thing you'll get a slap on the back and a raise!
- suprjami 2y agoThere are only packages for Debian, Ubuntu, and NetBSD. Not even include-everything Arch or Gentoo has ntttcp apparently.
- probably_jesus 2y ago[dead]
- proactivesvcs 2y ago"Go search for “iPerf3 on Windows” on the web. Go ahead, open a tab, and use your search engine of choice. Which I am certain is Bing with Copilot." For many people it won't be by choice, it'll be because Windows' plethora of dark patterns and anti-consumer features have tricked you into using it, or taken away your previous explicit choice.
- Joker_vD 2y agoI personally thought the part about Bing with Copilot was a subtle joke, because giving people the benefit of doubt is just a polite thing to do and even the Microsoft employees deserve it. Otherwise the sentiment contained in that sentence is indeed quite outrageous. Anyhow, even when searching for "iPerf3 on Windows" in both Google and DuckDuckGo, the first result is still iperf.fr.
- 38 2y agoEven with the most charitable Interpretation, it's a tasteless joke. Bing has a history of shoving Copilot down people's throats, and Microsoft has a LONG history of shoving Bing down people's throats. They built it into the God damn start menu, and have repeatedly changed the method to disable it. So even people who have explicitly disabled it will see it pop back up from time to time. Fuck Microsoft.
- iforgotpassword 2y agoWhat else do you expect a Microsoft employee to say? Google it? I think that would be awkward, but the author is fully aware nobody is using Bing, so they made a joke. It seemed somewhat sarcastic to me so I had to chuckle.
- nikanj 2y agoNobody? Tons of people are using Bing, because their IT-skilled family members only reset it to Google on Christmas and Thanksgiving, but Microsoft resets it to Bing every other Edge update
- PaulKeeble 2y agoiperf3 is popular because its in the router software stack and a good way to check the raw performance. I know from my own experience that iperf3 on windows performs fairly similar to Linux on a modern machine all the way up to 10 gbit/s. Its a theoretical problem not a practical one but if Microsoft has a better solution then they can open source it and do the work to include it in the open source router software and it will get used.
- nullindividual 2y agoIf you read the article, the author shows iperf3 is slower than Microsoft's open source tools.
- rixthefox 2y agoNothing wrong if it works faster, but it's not impossible to make tools that are compatible with other standard testing programs. By intentionally ignoring the tools network engineers are already using every day Microsoft is really shooting themselves in the foot and showing that they are tone deaf to the needs of users outside of their walled garden. How many routers do you know off the top of your head that run Windows?
- supertrope 2y agoUsing v3.16 iperf3.exe I got 9.2 Gbps between Windows and Ubuntu. A single TCP connection. No -P flag needed.
- klabb3 2y ago> The average [of iperf3] across multiple tests was about 7.5 Gbps. > Ntttcp averaged about 12.75 Gbps […] Ntttcp does something called pre-posting receives, which is unique to this tool. This is TCP we’re talking about, and with large enough buffer—per-syscall (128k on my iperf3 by default - that’s good) you should be able to saturate even a thick line, provided auto-tuning is enabled correctly. But just add -P 16 to parallelize to be sure it’s not the TCP stack, instead? Did they even try a workaround, before suggesting an extremely limited and proprietary tool that nobody is familiar with? Or better yet, help the project out by contributing native code if the open source community is so bad at windows? At the very least, make a wire-compatible version. Iperf is a very boring and wonderful tool that just works. Importantly, it’s a networking tool, which means you need interop across different systems. Any networking tool that’s single-platform is dead in the water, as far as I’m concerned. Edit: To be fair, I see they have a Linux version, how generous. Last updated in 2022 and many open issues though.
- distortedsignal 2y agoAfter reading the article, it sounds like iPerf3 on Windows is going through an emulation layer (Cygwin) which - I kinda get why it's going slower if that's the case. Isn't syscall translation always going to add overhead?
- deleted 2y ago[deleted]
- deleted 2y ago[deleted]
- raggi 2y agoIt’s a shame that they don’t talk about it in the article but a big part of the drive toward next generation tools is to study the interfaces needed and used by quic implementations which can’t “just be solved by” the flags you’re talking about, and iperf has no support for the relevant features (offloads).
- 2y ago
- SushiHippie 2y agoThis article is actually right that I downloaded the old version for Windows (would not happen on another OS, as there are maintained packages in most of the package managers). But I just checked with the newer version and I didn't see a difference when testing with my 2.5GbE LAN (still 2.3Gbit UP and 1.9Gbit DOWN)
- jtriangle 2y agoJust an aside, when I'm forced to use windows, installing programs with choco is a much better experience. It's not quite linux package management, but, it beats the pants off any other way.
- darknavi 2y agoI am a big fan of winget these days.
- Joker_vD 2y agoDo you really want Microsoft to maintain a centralized software repository from which you, yes, you, are supposed to install almost all of the software you'd like to use? Do you, really? It's always such a bizarre experience when people advocate for centralized repositories for Windows. Windows, unlike Linux, comes in very few flavours/versions (and with decent backwards-compatibility story), so the application developers can very well be (and in practice, well, are) expected to build the apps for the Windows versions they care about and then use their web-sites to distribute it. In this case with iPerf3 we just have a sad story of two forks, and the group that owns the namesaked website for some reason could not be bothered after 2016 to re-upload the releases of the other group. Well, similar things happens in "official" Linux distros as well, with severely outdated packages.
- jiggawatts 2y agoOver the years I've used a variety of network test tools including ntttcp, iperf, hrPing, and I even whipped a couple of custom ones. I've gravitated towards using custom test tools that use the same pattern as the application that will run on the network. So instead of testing maximum UDP throughput or with dozens of TCP threads with artificially high window sizes, I test with "whatever it is" that the client/server apps are likely to do. I still use hrPing, because it behaves a lot like a large category of common server apps, such as Linux tools ported to Windows.
- eqvinox 2y agoGood recommendation if you need to test for some target application's performance. However, when the service you provide is the network itself, e.g. to a customer who just bought XYZ performance from A to B, you need usage-agnostic test tools.
- suprjami 2y agoThe problem there is commercial users want trusted software from their support providers. A company providing a network application should be providing a custom benchmark tool whose behaviour mimics the application. If the application provider is so incompetent they don't do that, then tools like yours become useful, if they are allowed by organisation security policy. In my experience, few are going to compile some bloke's random testing tool from source or run scripts off your GitHub. Most commercial users just want to plug in 10Gbps NICs, run iperf and see "9.x Gbps", tick a box and move onto the next item.
- eqvinox 2y ago> What Does Microsoft Recommend > Microsoft maintains two synthetic network benchmarking tools, ntttcp (Windows NT Test TCP) and ctsTraffic. Okay, let's see which of these is compatible with the iperf3 available on my locked-down commercial router (or, alternatively, the test endpoint my ISP provides) … …it's neither… …aaaaand we're back to iperf3 on Windows. :-( As tongue-in-cheek this comment may be, a recommendation for 2 incompatible tools is worth nothing. Iperf is the de-facto standard, if anything the problem is sometimes you have iperf2 around for some reason. If, Microsoft, you want better Windows network stack benchmark results, you'll need to make something compatible with iperf3 (or fix iperf3.) (It does not matter that ntttcp runs on Linux. I can't install ntttcp on an Ubiquiti router, or ask my ISP to add another test endpoint.)
- deleted 2y ago[deleted]
- jandrese 2y agoYet again this article shows how Microsoft programmers don't dogfood their own console applications. Compare invocations for these commandline apps: Linux app: iperf3 -s Windows app: .\ctstraffic.exe -listen:* -Buffer:"$(128KB)" -Transfer:"$(1TB)" -ServerExitLimit:1 -consoleverbosity:1 -TimeLimit:60000 Who the hell wants to type all of that out?
- banish-m4 2y agoSteve Jobs might've been an opinionated dick, but he was right that Microsoft "has no taste in a big way". CLI UX with sane defaults and shorter options wins.
- cchance 2y agoare really none of those defaulted? i kinda fiugred that example was just setting it's defaults to match the iperf defaults
- suprjami 2y agontttcp only has packages for Debian, Ubuntu, and NetBSD: https://pkgs.org/download/nttcp https://pkgs.org/download/nttcp No user of the other commercial Linux distros (RHEL, SLES) is going to install ntttcp from source or random binaries. Of course, the Windows kernel team could support POSIX system calls that iperf and other network applications require, instead of removing that feature altogether: https://learn.microsoft.com/en-us/archive/technet-wiki/10224.posix-and-unix-support-in-windows https://learn.microsoft.com/en-us/archive/technet-wiki/10224... But hey why provide customers a good product when you can just write a blog with a useless recommendation instead. Microsoft is a big company with many teams on many products. Some of those teams really understand interoperability with modern developers and applications. This team don't.
- pjmlp 2y agoActually had Windows NT provided better POSIX support, I would never ever had bothered with dual boot into BSD or Linux during the 1990's. In hindsight not doing that is what opened the door to FOOS on PCs in first place, so beware what one wishes for.
- rjmcmahon 2y agoJust some clarification: IPerf 2 is different from the iperf3 found at https://github.com/esnet/iperf https://github.com/esnet/iperf Each can be used to measure network performance, however, they DO NOT interoperate. They are completely independent implementations with different strengths, different options, and different capabilities. Both are under active development. The current release of iperf 2 is 2.2.0 but 2.2.1 with bug fixes will be out soon. Comparison table here: https://iperf2.sourceforge.io/IperfCompare.html https://iperf2.sourceforge.io/IperfCompare.html
- rjmcmahon 2y agoAlso, with iperf 2, -c localhost seems to perform the same on Windows as it does for Linux. So skeptical that the cygwin overhead is very large. A binary is here https://sourceforge.net/projects/iperf2/files/ https://sourceforge.net/projects/iperf2/files/