Announcement

Collapse
No announcement yet.

Linux's Multi-Queue Block Code Still Presenting Some Performance Regressions

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

  • Linux's Multi-Queue Block Code Still Presenting Some Performance Regressions

    Phoronix: Linux's Multi-Queue Block Code Still Presenting Some Performance Regressions

    For those thinking of switching to the new multi-queue block layer, a.k.a. blk-mq, be forewarned that there are still some regressions outstanding...

    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
    This new series of patches clearly improves performance.
    git clone -b blk-mq-dispatch_for_scsi.V4 https://github.com/ming1/linux

    You can always come back CFQ or deadline, with kernel boot parameters:
    scsi_mod.use_blk_mq=0 elevator=cfq

    Comment


    • #3
      Kyber is by far the best scheduler I've tried in terms of fairness and desktop latency under high read/write tasks. Much better than BFQ or CFQ. With any other scheduler if I copy a large file to the drive my OS is on, and then try to open a program it might not even open until the file is done being copied, any desktop task that requires reading/writing from the drive is stalled or extremely slow. Kyber is the only scheduler I've used that prevents that from happening, I've tried every other available disk scheduler.

      Comment


      • #4
        Quoting myself...

        Originally posted by halo9en
        I'd really like to see BFQ vs Kyber vs CFQ benchmarks for latency / responsiveness. Kyber seems smaller and has good throughput, but I wonder which one is better for responsiveness (regular desktop usage and media)

        Comment


        • #5
          Originally posted by czz0 View Post
          Kyber is by far the best scheduler I've tried in terms of fairness and desktop latency under high read/write tasks. Much better than BFQ or CFQ. With any other scheduler if I copy a large file to the drive my OS is on, and then try to open a program it might not even open until the file is done being copied, any desktop task that requires reading/writing from the drive is stalled or extremely slow. Kyber is the only scheduler I've used that prevents that from happening, I've tried every other available disk scheduler.
          How do I set Kyber as my scheduler? (I can only find how to set BFQ as my scheduler)

          Comment


          • #6
            Originally posted by Vistaus View Post

            How do I set Kyber as my scheduler? (I can only find how to set BFQ as my scheduler)
            It's the same thing since they're both blk_mq schedulers.

            Comment


            • #7
              Originally posted by geearf View Post

              It's the same thing since they're both blk_mq schedulers.
              So you're saying that if I set the Linux CMD line to use blk_mq at boot I'm automatically using Kyber?

              Comment


              • #8
                Originally posted by Vistaus View Post

                So you're saying that if I set the Linux CMD line to use blk_mq at boot I'm automatically using Kyber?
                No, I am saying you can follow a tutorial for BFQ and instead type Kyber when you're setting the scheduler.

                Same Linux command for both (it's only about blk_mq).
                Almost same udev rule, just one has the word BFQ and the other has Kyber.

                Comment


                • #9
                  Originally posted by geearf View Post

                  No, I am saying you can follow a tutorial for BFQ and instead type Kyber when you're setting the scheduler.

                  Same Linux command for both (it's only about blk_mq).
                  Almost same udev rule, just one has the word BFQ and the other has Kyber.
                  Ah, okay, thanks. Which tutorial did you follow? 'Cause I found a few for BFQ but no matter BFQ or Kyber, the scheduler remains 'mq-deadline' :/
                  Last edited by Vistaus; 13 August 2017, 04:29 AM.

                  Comment


                  • #10
                    Originally posted by Vistaus View Post

                    Ah, okay, thanks. Which tutorial did you follow? 'Cause I found a few for BFQ but no matter BFQ or Kyber, the scheduler remains 'mq-deadline' :/
                    I don't remember, but here's what I've done:

                    Linux command line addon: scsi_mod.use_blk_mq=1
                    (you can use dm_mod as well for the device mapper I believe, I don't use it)
                    udev rule: ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="bfq"
                    retrigger udev: udevadm control --reload && udevadm trigger
                    or simply restart the system.

                    Adjust as needed for kyber/your system.

                    The simplest way to change your scheduler is of course: echo kyber >| /sys/block/sdX/queue/scheduler (replace X appropriately).
                    That will only work once you are on blk_mq, but that seems to be your case already so that's fine.

                    Although, one thing to check, just in case, make sure you have kyber available, if it's not in: cat /sys/block/sd*/queue/scheduler, you may have to rebuild your kernel.
                    Last edited by geearf; 17 August 2017, 03:38 AM.

                    Comment

                    Working...
                    X