Michael wrote:
On Saturday, 2 May 2020 10:54:02 BST Dale wrote:
Michael wrote:

      
I'd be interested to know as a comparison if Nikos' and Dale's I/O
unresponsiveness in swapping sees an improvement with the I/O scheduler
for
spinning drives set to bfq; e.g.:

echo bfq > /sys/block/sda/queue/scheduler
This is its setting at the moment. 


root@fireball / # cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
root@fireball / #
Ahh, you must be on an older kernel?

I'm on 5.4.28 here and these are the new kernel scheduler options:

#
# IO Schedulers
#
CONFIG_MQ_IOSCHED_DEADLINE=y
CONFIG_MQ_IOSCHED_KYBER=y
CONFIG_IOSCHED_BFQ=y
CONFIG_BFQ_GROUP_IOSCHED=y
# CONFIG_BFQ_CGROUP_DEBUG is not set
# end of IO Schedulers

The BFQ scheduler has a number of tunable parameters via sysctl, like weight, 
latency and what not, but unless you're into running endless benchmark tests 
to tune your particular devices, I'd leave it to do its thing with default 
settings.



Yea, I got new UPS batteries coming which means a complete power down.  I may upgrade my kernel before doing that.  It slipped my mind so glad this came up.  I'm on 4.19.40-gentoo but I need to see what is the latest version nvidia-drivers supports first.  I guess I'll google that or something. 



      
I know I can echo it in but where do I set that to that when booting? 
You can set a local script to switch from other schedulers - the default is 
mq-deadline - or you can disable the others in the kernel.  I don't know if 
you can pass an option to the kernel line at boot time.

I understand this is more effective with slow(er) spinning drives and perhaps 
old SSDs.  NVMe drives won't benefit from it and are better run with the 
default mq-deadline scheduler.


I googled it, it seems it gets added to the kernel line options via grub2's conf file.  I have another option there too, IOMMU or something like that. 

Right now, it's off to the tractor and discing up my garden.  So much rain lately, I'm just now able to get a tractor in it.  New disc is awesome tho. 

Oh, for future reference:


# cat /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet elevator=cfq"
GRUB_DISABLE_RECOVERY="true"



It's the 2nd line from the bottom.  It may be configurable in menuconfig too. I dunno know yet.  I'll try to look.  Must make note to upgrade kernel.  Batteries will be here Monday.  

Thanks much.  It's on my todo list.

Dale

:-)  :-)