FreeBSD has lower latency, and Linux has faster application speeds
quora.com
quora.com
Have you ever consider using Dragonfly. It appears to dramatically beat in perf test FreeBSD (2017).
https://leaf.dragonflybsd.org/~sephe/perf_cmp.pdf
I’m curious to hear your take on Dragonfly since you’re a kernel developer.
Thanks in advance for all your work.
Edit: more recent links (2018) with even higher perf
I considered giving Dragonfly a try in the past, but just never had the time. There would be a depressing amount of work before we could even consider Dragonfly, mostly centered around our async sendfile (which is now upstream in FreeBSD), our TCP changes: BBR (not yet upstream), RACK (now upstream) and TCP pacing (now upstream). Not to mention unmapped mbufs (not yet upstream) and kernel TLS (also not yet upstream). Also, the last time I looked, Dragonfly did not have drivers for Chelsio or Mellanox 10/25/40/100GbE NICs. Without even just one of these things, performance will be so bad that any comparison testing would be meaningless.
Just a thought, the Linux/BSD community might hugely benefit if someone with your deep knowledge released a set of perf test scripts that anyone can run locally to regression test network perf. That way, the OSS community can integrate those perf test scripts into their commit/regression test pipeline.
For the Netflix boxes, they're pushing 40gbps+, not a lot of the community is going to be to be able to test that, unless they have fairly expensive networks laying around.
BTW, 40Gb/s was so 2015. I have a box serving at 156Gb/s :)
That's right, I wanted to put 100+, but I wasn't totally sure. I stopped counting when you got way beyond the 20G connectivity on the servers I manage.
It works on linux, but to be able too boot from it, still a huge hassle.
Contrast with FreeBSD, with first-class support for installing root on ZFS since 10.0-RELEASE, four years ago.
Also:
> But unless you’re using Fedora, your servers aren’t gonna taste it soon. Just by bad timing, the new Ubuntu LTS (18.04) due out next week will still use 4.15, which it will support for 5 years. Since CentOS and Debian are even further behind on kernels, you won’t see a lot of “fast Linux” in production until April 2020 when Ubuntu 20.04 LTS comes out.
If you are at a point where the differences would matter to you, you can (and will) probably just install a newer kernel and have the improvements available today. Just because upstream doesn't have it doesn't mean you couldn't compile it yourself or use backports.
There was this in TFA:
https://www.phoronix.com/scan.php?item=netperf-bsd-linux&num...
The "netperf" benchmarking software appears to be from 1993 (complete with a webpage from that era! https://hewlettpackard.github.io/netperf/) so I have a lot of doubts that it is using modern networking APIs or taking advantage of modern hardware.
Netperf's problem has always been that it is single connection, single-threaded. Most people use it coupled with patches or scripts to run many copies of netperf in parallel.
I suspect what happened in these tests is that the author just ran a single copy of the tests, and did not bother to adjust the interrupt coalesing settings. So what he really measured was different interrupt coalescing settings in the FreeBSD and Linux driver. If he'd have run 500 or 1000 copies, I'll bet he'd see vastly different results.
BTW, if you're looking for a modern network benchmark, check out uperf (http://uperf.org/) It seems to have been largely abandoned after the Oracle acquisition, which is a shame, because it was just plane awesome. It could replicate many scenarios very realistically, supported multi-threading, etc.
True, but if you are managing production machines, compiling kernels for every errata and security update is pretty low on the list of things you get enthusiastic about. Also a lot of commercial or scientific linux software is only "certified" and supported on stock RHEL kernels.
And from the other direction, if you're making or losing money on security, expecting distro kernels to turn around security fixes in a timely manner seems like a mistake. At least know how to rebuild your distro kernel with a local patch.
I guess it needs a critical mass + certain infrastructure maturity that running on whatever the latest kernel is makes sense.
As for the 'certified on stock RHEL kernel' software... I try to keep away from those, but I'm picky and pretty lucky when it comes to job selection :)
For example, here's 4.13 in the previous LTS (16.04), up from the default 4.4: http://packages.ubuntu.com/linux-signed-image-generic-hwe-16...
> OSX didn't adopt the FreeBSD kernel, but instead started with the Mach microkernel and has been going in their own direction since.
MacOS kernel uses a combination of Mach and BSD kernel code. It started with 4.4BSD, and at some point the bulk of BSD code was updated with code from FreeBSD 5.
After that, it was piecewise updated with more modern stuff, the MAC framework (used to implement sandboxing on iOS and macOS) and DTrace from newer FreeBSD kernels.
https://events.ccc.de/congress/2007/Fahrplan/attachments/105...
It particularly talks about the unique hybrid kernel approach and how there is nothing like it.
But yeah, OSX kernel is vastly different from FreeBSD - first, there were huge differences to start with, only some pieces of kernel were adopted, and finally there were thousands of man-hours put into each system afterwards, diverging them even more.
https://lists.freebsd.org/pipermail/freebsd-advocacy/2008-Au...
https://www.freebsd.org/news/press-rel-1.html
FreeBSD can be several times faster then Linux when it comes to network stack:
https://pbs.twimg.com/media/CzFfTSRUQAATwaq.jpg
But often Linux is faster, you just need to find benchmark that favorites one or another, both are fast in general.
Shame! Shame, shame, shame!
[1] Factor of 3+ differences not just between BSD and Linux but between otherwise very comparable linux distros. Something's weird with the setup there, like it's measuring default firewalling overhead or something and not kernel behavior.
I guess they have everything just set to default disto settings which likely in some cases include firewall while others don't. They also don't mention which NIC they are using, the motherboard has two different NICs (i218-LM & I210-AT).
> Something's weird with the setup there, like it's measuring default firewalling overhead or something and not kernel behavior.
This is something you come to expect if you've seen enough of what Phoronix publishes.
If we re-did our infrastructure from scratch we'd look at either FreeBSD or Alpine Linux. Both would offer an escape hatch from the needless bloat that mainstream Linux has become.
This has been a long standing complaint of mine[1], and an argument I've had with many proponents of "software must come packaged only from the provider of the distro" people.
Physical and logical footprint is a real thing. Ridiculous secondary/tertiary dependencies are a waste of that precious resource, and an unneeded/unwanted installation of useless bits.
[1] http://scalability.org/2018/04/distribution-package-dependen...
Rather, I think it's a problem with the package maintainers themselves. I certainly admit that for very many packages, this is a distinction without a difference.
However, my point is that this dependency bloat isn't based on some kind of policy that the distro is encouraging or even enforcing. Rather, the problem is merely that too many source packages create too few targets, perhaps because the original packagers never foresaw the need (for, e.g., both an X version of some graphics or GPU-related library and a non-X one for pure server work).
I've occasionally gotten around this problem by custom-building a local version of the package that avoids the dependency bloat. That violates the "software must come packaged only from the provider of the distro", unless one considers the local superset a forked distro.
> Physical and logical footprint is a real thing.
Ultimately, I think you and I are in a vanishingly small minority here. Virtualization (even the full, pre-container kind, with a full copy of the kernel on every instance) gained a startling level of a popularity, and was even lionized as a money-saving tool (which, of course, it was, for some "IT" shops).
By "inspired by BSD" do the author mean the code has been copied and pasted from FreeBSD to Linux, something which cannot be done in reverse because of the encumbrance of the GPL?
Allowing people to make proprietary code from BSD licensed code is not enslavement. Also if someone improperly used GPL licensed software to make proprietary software it would be breach of contract or copyright infringement not enslavement.
If you prefer to use philosophy terms, conditions are negative rights. Those are similar to things like "I have the right to not get assulted, I have to right to not get enslaved, I have the right to not get robbed, I have the right to not get murdered, I have the right to not get recorded in the shower, and so on. Negative rights is freedoms to not have things happen to you by restricting what other people may do. Positive rights is things like I have the right to health care, I have the right to be on public ground, I have the right to social security, or I have the right to ask the government in the Freedom of information act and so on. Positive rights usually but not always demand something from others. Most constitutional laws tend to be negative rights.
Combining negative and positive rights is how liberty is created. Its a balance between freedom to do things and restrictions to not do things to others, with the goal of maximizing free will and personal agency for society. GPL give freedom to do anything but with conditions that limit what you can do to other people. Just like with liberty the GPl tries to maximizing free will and personal agency and uses negative and positive rights to reach a balance.
One could ask why the free software movement picked freedom when they intended to say liberty, and the reason is historical and localized. RMS did not want to associate the movement with the libertarian political platform. Maybe they thought that most people don't really distinguish between freedom and liberty, but now days liberty is generally favored over freedom.
"The freedom to enslave others is not a freedom that one protects. I believe there was a little thing called the civil war where that point was made."
This was said in the context of the BSD and GPL licenses and GPL advocates not liking closed source software being made from BSD software even though its perfectly within the license to do so. This has nothing, and I repeat absolutely nothing to do with enslavement.
"The liberty to restrict others is not a liberty. Laws [insert common law here] restrict behavior and it not against liberty to have such law."
Is that simple enough for you?
Of course this prevents it from being committed to FreeBSD base. But from the user point of view it doesn't matter - it's just that you have both linuxkpi.ko and linuxkpi_gplv2.ko loaded automatically when you load i915kms.ko, which is the "real" driver, and there's no license compatibility problem.
Misleading on distro release a date.
No explanation on the improvements.
I would vote down this post if I could.
Source fedora 28 xeon machine, receivers FreeBSD 11.1 and Fedora 25 (same brix platform) connected via a Cisco 300 switch.
RX:
FreeBSD: root@zeus:/usr/local/src/iperf2-code # iperf -s -u -e --udp-histogram=10u,100000 --realtime ------------------------------------------------------------ Server listening on UDP port 5001 with pid 53703 Receiving 1470 byte datagrams UDP buffer size: 41.1 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.100.34 port 5001 connected with 192.168.100.55 port 52536 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Latency avg/min/max/stdev PPS [ 3] 0.00-10.00 sec 1.25 MBytes 1.05 Mbits/sec 0.004 ms 0/ 892 (0%) 0.086/ 0.060/ 0.150/ 0.014 ms 89 pps [ 3] 0.00-10.00 sec T8(f)-PDF: bin(w=10us):cnt(892)=7:160,8:143,9:181,10:159,11:242,12:6,16:1 (5/95%=7/11,Outliers=0,obl/obu=0/0)
Fedora 25: [root@hera iperf2-code]# iperf -s -u -e --udp-histogram=10u,10000 --realtime ------------------------------------------------------------ Server listening on UDP port 5001 with pid 16669 Receiving 1470 byte datagrams UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.100.33 port 5001 connected with 192.168.100.55 port 35894 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Latency avg/min/max/stdev PPS [ 3] 0.00-9.99 sec 1.25 MBytes 1.05 Mbits/sec 0.010 ms 0/ 892 (0%) 0.261/ 0.098/ 0.319/ 0.021 ms 89 pps [ 3] 0.00-9.99 sec T8(f)-PDF: bin(w=10us):cnt(892)=10:1,21:1,23:6,24:107,25:141,26:209,27:151,28:124,29:81,30:47,31:19,32:5 (5/95%=24/30,Outliers=0,obl/obu=0/0)
TX:
[root@rjm-clubhouse-28 rjmcmahon]# iperf -s -e -u --udp-histogram=10u,100000 --realtime ------------------------------------------------------------ Server listening on UDP port 5001 with pid 26016 Receiving 1470 byte datagrams UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.100.55 port 5001 connected with 192.168.100.34 port 20343 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Latency avg/min/max/stdev PPS [ 3] 0.00-10.01 sec 1.25 MBytes 1.05 Mbits/sec 0.010 ms 0/ 893 (0%) 0.094/ 0.064/ 0.476/ 0.023 ms 89 pps [ 3] 0.00-10.01 sec T8(f)-PDF: bin(w=10us):cnt(893)=7:12,8:38,9:291,10:311,11:198,12:28,13:10,14:1,15:1,42:1,45:1,48:1 (5/95%=8/11,Outliers=3,obl/obu=0/0) [ 4] local 192.168.100.55 port 5001 connected with 192.168.100.33 port 58391 [ 4] 0.00-10.00 sec 1.25 MBytes 1.05 Mbits/sec 0.013 ms 0/ 892 (0%) 0.079/ 0.048/ 0.127/ 0.009 ms 89 pps [ 4] 0.00-10.00 sec T8(f)-PDF: bin(w=10us):cnt(892)=5:1,6:10,7:115,8:265,9:425,10:51,11:18,12:3,13:4 (5/95%=7/10,Outliers=0,obl/obu=0/0)