Very interesting results, especially for PC-BSD. I'd like to see full set of benchmarks used for Linux distributions. Some network performance benchmarks would as well be interesting. Also adding NetBSD and some BTRFS linuxes (OpenSUSE maybe) would be great.
Announcement
Collapse
No announcement yet.
How Three BSD Operating Systems Compare To Ten Linux Distributions
Collapse
X
-
Originally posted by SystemCrasher View PostI think Michael does right thing: testing how it performs out of the box. That's what most users would actually see. Sorry, but demanding everyone to detect block sizes and somesuch just not going to work. So either defaults perform adequately or you get crappy results and users are being unhappy - for a reason. Getting some extras after proper tuning is good, but things should work reasonably by default, out of the box. Else its crappy code or crappy defaults, crappy (sub)systems and so on. That's how users would see it.
Consequently, Michael's benchmarks have an inherent bias that can either help a filesystem's performance in a comparison by handicapping others or hurt a filesystem's performance in a comparison by handicapping it, depending solely on whether the filesystem has something to detect and correct the quirk.
The correct way to handle this is to make certain each filesystem is configured correctly and explain this potential issue to people reading the benchmark methodology People making filesystem choices based on those numbers would then be able to make them based on some degree of actual merit rather than a distorted view of reality that arbitrarily favors one or the other.
Considering only performance itself is also a form of bias that does not consider long term reliability in terms of system runtime, data integrity, maintenance, etcetera, although considering only performance correctly is far better than considering only performance incorrectly.
That said, it turns out that ZFS was not affected by this issue in Michael's benchmarks. The FreeBSD block IO layer has a quirk for Michael's test hardware that allows it to overcome the problem that I outlined:
https://github.com/freebsd/freebsd/b.../ata_da.c#L477
Linux lacks such quirks and the in-tree Linux filesystems are therefore at a disadvantage. ZFSOnLinux used to be similarly disadvantaged, but I hardcoded aquirks list into the ZFSOnLinux code so that it would override the autodetection when quirky drives were detected because I could not go back in time to submit patches to Linus for a quirks list in 2.6.32 onward, although it looks like Michael's current hardware is not in the quirks list. That will be fixed for the next release:
https://github.com/zfsonlinux/zfs/bl...ol_vdev.c#L109
I am unable to discern whether your remarks are the result of bias or the result of ignorance. If they are the result of bias, then your defense of bad benchmark methodology achieves the opposite of what you would expect and your bias can lead you to make poor decisions. If they are the result of ignorance, then if you rely on these numbers to make decisions, you are more than likely to find yourself obtaining worse performance than you would have obtained had they properly accounted for it, although you might never realize. Either way, you lose.
Originally posted by SystemCrasher View PostWhatever, but we have real world full of ignorant users and imperfect hardware full of odds, bugs and quirks. It would be better if HW is perfect, etc. But it not going to happen. Ignoring this fact is .. ahem, naive.
P.S. hmm, PC-BSD wasn't worst of the bunch and even won in some cases. Not bad for BSD . Though I think it is fair to test Linux distros on more assorted filesystems to get idea what various designs can do and how it compares. I think it is reasonable to compare btrfs, zfs, xfs and ext4 on HDD & SSD and f2fs on SSDs, etc? Sure, test matrix happens to be quite large. Also, FreeBSD or clones are good to run on ZFS and UFS2. Let's see if claims of BSD fans about UFS2 are at least half-true.
For starters, the Linux mainline filesystems are all handicapped by his refusal to adjust sector size at filesystem creation to compensate for the quirks of his test hardware. OpenBSD and DragonflyBSD might suffer similar issues, although I have not checked. There are also severe issues in the rationale of some of the benchmarks he runs and also other aspects of configuration, such as the imposition of read-modify-write overhead on heavy database workloads (e.g. pgbench) when no database administrator would configure a production database that way. The often cited justification "we only care about desktop performance" makes no sense when things like pgbench (used in other articles) measure workloads that will have never in the past, do not now and will never matter on a desktop.
The compilebench benchmark that was used this time is even worse comparing filesystems by their performance in an accelerated IO pattern of a CPU bound task makes no sense under any circumstance. The acceleration of a a compute bound IO pattern has no relevance to anyone in Michael's target audience and mostly, no relevance to anyone anywhere.
In addition, Michael should not only be running benchmarks that model real world workloads, but also synthetic benchmarks designed to determine whether certain code paths are bottlenecked internally in the filesystem driver. A good example of this is the serialization bottleneck imposed by ext4's grabbing the inode lock in its DirectIO, AIO and Vector IO paths or ZFS's per dataset synchronous IO serialization bottleneck imposed by the per-dataset ZIL (this will be fixed later this year). Some discussion of the workloads where each path actually is exercised would serve to illuminate the factors contributing to the numbers in benchmarks simulating real workloads, provided he ever does such benchmarks. So far, he has not.Last edited by ryao; 16 January 2016, 01:26 PM.
- Likes 1
Comment
-
Originally posted by Xaero_Vincent View PostMichael, have you done any 3D / graphics performance benchmarks between BSD and Linux before?
E.g., Supertuxkart and Open Arena with the Nvidia proprietary driver on BSD and Linux? A FOSS graphics stack benchmark would be interesting as well.
We already know FOSS graphics stack is still under-performing compared to binary blobs. But a quick NVidia binary test, which is available for all of them if I'm right, would be nice.
Comment
-
-
Originally posted by ryao View Post"testing how it performs out of the box" for readers is impossible when hardware quirks between models introduce a confounding variable that gives one group of readers' systems a handicap and another group of readers' systems no handicap.
It would be a different matter if things were guaranteed to be incorrect *everywhere*. If that were the case, it would be a clear-cut filesystem bug, but it is not the case.
Consequently, Michael's benchmarks have an inherent bias that can either help a filesystem's performance in a comparison by handicapping others or hurt a filesystem's performance in a comparison by handicapping it, depending solely on whether the filesystem has something to detect and correct the quirk.
The correct way to handle this is to make certain each filesystem is configured correctly
and explain this potential issue to people reading the benchmark methodology People making filesystem choices based on those numbers would then be able to make them based on some degree of actual merit rather than a distorted view of reality that arbitrarily favors one or the other.
Considering only performance itself is also a form of bias that does not consider long term reliability in terms of system runtime, data integrity, maintenance, etcetera, although considering only performance correctly is far better than considering only performance incorrectly.
That said, it turns out that ZFS was not affected by this issue in Michael's benchmarks. The FreeBSD block IO layer has a quirk for Michael's test hardware that allows it to overcome the problem that I outlined:
Linux lacks such quirks and the in-tree Linux filesystems are therefore at a disadvantage.
could not go back in time to submit patches to Linus for a quirks list in 2.6.32 onward, although it looks like Michael's current hardware is not in the quirks list. That will be fixed for the next release:
I am unable to discern whether your remarks are the result of bias or the result of ignorance.
If they are the result of bias, then your defense of bad benchmark methodology achieves the opposite of what you would expect and your bias can lead you to make poor decisions.
If they are the result of ignorance, then if you rely on these numbers to make decisions, you are more than likely to find yourself obtaining worse performance than you would have obtained had they properly accounted for it, although you might never realize. Either way, you lose.
You will not see "if claims of BSD fans about UFS2 are at least half-true" by any benchmarks done on Phoronix as long as Michael's benchmark methodology is incapable of providing a fair comparison.
For starters, the Linux mainline filesystems are all handicapped by his refusal to adjust sector size at filesystem creation to compensate for the quirks of his test hardware.
OpenBSD and DragonflyBSD might suffer similar issues, although I have not checked.
There are also severe issues in the rationale of some of the benchmarks he runs and also other aspects of configuration, such as the imposition of read-modify-write overhead on heavy database workloads (e.g. pgbench) when no database administrator would configure a production database that way.
The often cited justification "we only care about desktop performance" makes no sense when things like pgbench (used in other articles) measure workloads that will have never in the past, do not now and will never matter on a desktop.
The compilebench benchmark that was used this time is even worse comparing filesystems by their performance in an accelerated IO pattern of a CPU bound task makes no sense under any circumstance. The acceleration of a a compute bound IO pattern has no relevance to anyone in Michael's target audience and mostly, no relevance to anyone anywhere.
In addition, Michael should not only be running benchmarks that model real world workloads, but also synthetic benchmarks designed to determine whether certain code paths are bottlenecked internally in the filesystem driver.
imposed by ext4's grabbing the inode lock in its DirectIO, AIO and Vector IO paths[/URL] or ZFS's per dataset synchronous IO serialization bottleneck imposed by the per-dataset ZIL (this will be fixed later this year).
Some discussion of the workloads where each path actually is exercised would serve to illuminate the factors contributing to the numbers in benchmarks simulating real workloads, provided he ever does such benchmarks. So far, he has not.Last edited by SystemCrasher; 18 January 2016, 09:44 AM.
- Likes 1
Comment
-
Originally posted by SystemCrasher View PostLong term reliability is hard to evaluate within reasonable time. Same for stability, to some degree. And in this regard, ZFS could put nasty surprise. This large monster is quite fragile and unexpected kinds of errors like bad sectors with no redundant data to recover from can bring it down really easy. And then recovery can be not the easiest thing in the world. Speaking of this, btrfs has got quite handy tool which would try to read-out most data from storage in read-only, non-destructive way, using alternate destination to store whatever it reads from damaged storage. When everything has failed, it sounds like a backup plan. IIRC, there is no comparable things for ZFS.
But hey, come to think of it now, I remember one person complaining that ZFS was too brittle and fragile, maybe it was you? That person said that when he used... ext3 (?) he got no reports of data corruption on his PC. Then he switched to ZFS, and the data corruption reports poured in. Well, ZFS detected problems in his hardware that no other filesystem could not do. That is why he got reports of data problems. He on the other hand, said that "ZFS is fragile, it looses my data". Well, several research papers shows that ZFS can detect data corruption problems, whereas other filesystems can not. So, he did not understand that his hardware was unsafe, not ZFS. If you ever visit large ZFS forums, you will see threads occaniously where people reports data corruption problems by ZFS, and at the end, they discover the problem was due to a slightly loose SATA cable, or RAM dimm was faulty, or a flaky PSU, etc. And as soon they fix the hardware problem everything is fine and dandy. ZFS is the only filesystem able to detect such subtle hardware problems, no other filesystem can do it - according to research papers. Here are some research papers:
Regarding your talk about BTRFS having a repair tool, which ZFS does not have. Well, ZFS is targeted to Enterprise and has been in production for over 10 years now. And until now ZFS fsck or some other tool has not been needed. If your data ZFS zpool ever gets corrupt, you can back in time, to a last known valid state and import the zpool back then. So, you dont need fsck. ZFS data is always valid, and never out of synch. "ZFS does not need no stinking fsck":
http://c0t0d0s0.org/index.php?serendipity[action]=search&serendipity[fullentry]=1&serendipity[searchTerm]=fsck&serendipity[searchButton]=%3E
- Likes 1
Comment
-
Interesting how well ZFS performs in a form of PC-BSD. I'm Solaris user since old SXDE days and ZFS is one of the reason for using this OS as a developer workstation even the software stack is not there. So well, I do have quite a lot of experience with ZFS from the user point of view on this deployment size. Honestly ZFS simply rocks as long as you are not hit by its fragmentation. If you are hit, then well, it sucks performance wise -- just performance, all the feature is still here. My data pool is already quite old and seen 2 upgrades already 500 GB -> 750 GB -> 1000 GB -- this was done by using automatic growing functionality so I just added two new drives to the mirror (of two drives), waited for resilvering to finish and then unplugged old smaller drives. This way I have it running for several years and now I'm afraid this beast is slower than even OpenBSD ffs (running on top of software RAID 1 with checksumming support to add data integrity.) :-)
Looking forward how btrfs/hammer2 are going to solve fragmentation issue on COW fss. Nice engineering challenge indeed.
Comment
-
Originally posted by kebabbert View PostYou got it backwards. ZFS is not fragile, it is the most robust filesystem there is out there. ZFS is built with a focus on data integrity, to be robust and protect your data.
ZFS goes to great length to do that. It is targeted to the Enterprise sector, where requirements are the highest, where data loss can cost millions of dollars.
The Sun team had vast experience of the problems large enterprise storage face, that is why they added checksums to detect data corruption in a unique way. Sure, there are lot of checksums everywhere in the system, but it is done wrong.
For isntance, hard disks have lot of checksums on the surface to detect data corruption - and still you get data corruption on hard disks [..sun marketing..].
But hey, come to think of it now, I remember one person complaining that ZFS was too brittle and fragile, maybe it was you? That person said that when he used... ext3 (?) he got no reports of data corruption on his PC.
Regarding your talk about BTRFS having a repair tool, which ZFS does not have. Well, ZFS is targeted to Enterprise and has been in production for over 10 years now.
And until now ZFS fsck or some other tool has not been needed.
If your data ZFS zpool ever gets corrupt, you can back in time, to a last known valid state and import the zpool back then.
So, you dont need fsck. ZFS data is always valid, and never out of synch.Last edited by SystemCrasher; 19 January 2016, 06:20 AM.
Comment
Comment