Announcement

Collapse
No announcement yet.

Linux 5.0 HDD I/O Scheduler Benchmarks - BFQ Takes The Cake

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linux 5.0 HDD I/O Scheduler Benchmarks - BFQ Takes The Cake

    Phoronix: Linux 5.0 HDD I/O Scheduler Benchmarks - BFQ Takes The Cake

    Recently I published a number of Linux 5.0 I/O scheduler benchmarks on laptop and desktop hardware with solid-state storage. A number of Phoronix readers were interested in seeing similar tests done but with traditional hard drives, so here are those results using two different drives and the different blk-mq I/O scheduler options with the new Linux 5.0 kernel.

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    Originally posted by atomsymbol
    Interestingly, https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers doesn't recommend bfq as the 1st choice.
    It's also either second choice or "avoid" for hard drives which kind of puzzles me. I mean if it's bad enough you tell others to avoid it, you don't want to recommend it as second choice either. But it's Ubuntu so I'm not surprised about the weirdness.

    To be fair though, this is the first benchmark that BFQ is dominating so hard. It's as good or better than other schedulers in any task, and of course completely destroys the other schedulers in the application startup time as that's one of the things it is specifically designed for.

    Comment


    • #3
      Dumb question; how is the geometric mean calculated, considering for some benchmarks "more is better" and for others "less is better"? Are you calculating the inverse of the "less is better" benchmarks, or?

      Comment


      • #4
        Interestingly, as of 5.0 the old single queue I/O layer has been deleted (https://kernelnewbies.org/Linux_5.0#Block_layer), and blk-mq is all there is. Hopefully whatever regressions there may have been have mostly been sorted out by now.

        Comment


        • #5
          Originally posted by jabl View Post
          Dumb question; how is the geometric mean calculated, considering for some benchmarks "more is better" and for others "less is better"? Are you calculating the inverse of the "less is better" benchmarks, or?
          Maybe he can do this, because "more is better" is always "something per second" and "less is better" is always "second". With the geometric mean everything is multiplied, but usually the numbers are percentages. So maybe he gets rid of the dimension first...

          I tried to calculate it for the first bar. His result is 142.
          What Ive tried
          ((77,29*40,74*592*4465*4393*46,13*17,97*499*37,48* 419))^(1/10)
          = 217,55518523181496966626

          (77,29*40,74*592*(1/4465)*(1/4393)*(1/46,13)*(1/17,97)*(1/499)*37,48*(1/419))^(1/10)
          = 0,17032707382289555787

          ((1/77,29)*(1/40,74)*(1/592)*4465*4393*46,13*17,97*499*(1/37,48)*419)^(1/10)
          = 5,87105724037618539315
          Last edited by tomtomme; 06 March 2019, 04:42 AM.

          Comment


          • #6
            Originally posted by tomtomme View Post

            Maybe he can do this, because "more is better" is always "something per second" and "less is better" is always "second". With the geometric mean everything is multiplied. So if you multiply "something per second" with "second" you get "something". So its as if you actually divide second with second and something is left. I wonder what happens if not all metrics have "second" in common.
            No. Consider two benchmarks, A (something per second) and B (seconds). Say for one system/configuration/whatever you have A=2, B=2. So the geometric mean becomes sqrt(2*2) = 2. Now for another system, you get A=4, B=1. Unquestionably better than A=2, B=2, no? But the geometric mean for this is sqrt(4*1) = 2, the same as for the first system!

            Whereas if you, say, convert the B benchmark to something where "more is better", e.g. by computing the inverse, we'd have for the first system the geometric mean would be sqrt(2*(1/2)) = 1, and for the second system sqrt(4 * (1/1)) = 2.
            Last edited by jabl; 06 March 2019, 04:34 AM.

            Comment


            • #7
              Originally posted by jabl View Post

              No. Consider two benchmarks, A (something per second) and B (seconds). Say for one system/configuration/whatever you have A=2, B=2. So the geometric mean becomes sqrt(2*2) = 2. Now for another system, you get A=4, B=1. Unquestionably better than A=2, B=2, no? But the geometric mean for this is sqrt(4*1) = 2, the same as for the first system!

              Whereas if you, say, convert the B benchmark to something where "more is better", e.g. by computing the inverse, we'd have for the first system the geometric mean would be sqrt(2*(1/2)) = 1, and for the second system sqrt(4 * (1/1)) = 2.
              yep, thats what I've tried above, but his result is something else. I also tried converting in percentages roughly, but thats not it either... and seeing very high geometric means on other benchmarks like this: https://www.phoronix.com/scan.php?pa...meltdown&num=1
              he does not seem to go the % way.

              Comment


              • #8
                Would this be a reasonable summary?

                "If startup times and general I/O responsiveness is important to you, try out BFQ in its default low latency mode and see if it makes a perceivable difference compared to your distro's default scheduler.

                If you decide that BFQ is worth it to you, be prepared to accept a throughput tradeoff for some server-oriented software."
                Last edited by ermo; 06 March 2019, 06:20 AM.

                Comment


                • #9
                  Geometric mean... now the benchmarks jungle needs its scheduler xD

                  Comment


                  • #10
                    There is one more thing I would love to see benchmarked, which is performance under heavy swapping.

                    Currently, my single worst pain point has been this one. Even whith 8GB of swap, there will always be an application (Firefox, for instance), or a game (Planetary Anihilation was horrible when I had this amount of RAM) that triggers swapping, and makes the whole desktop irresponsive.

                    Luckily there's the SysRq for OOM kill, that I end up using several times a day, especially on memory-constrained devices. Ptherwise it isn't viable to wait for more than half an hour for getty to show up, then even more for zsh to start... (same problem via ssh). I'm not sure whether BFQ helps in this situation, I'd have to try out. In any case, I recommend compressed memory over HDD-based swap.

                    The second pain point was still related to heavy disk I/O, during which the various desktop environments usually slow down to the point where I can't move my mouse at all. For instance, I have a live Arch Linux stick, and it's completely unresponsive during updates. I should try BFQ again in that case.

                    Outside of these two terrible areas, Linux on the desktop has been a pretty smooth ride for me

                    Comment

                    Working...
                    X