SuSE on the desktop; elevator=noop since kernel 5 and kernel-default on desktops; could be better?

Hi,

Just wanted to offer my 2 cents regarding one of the kernel cmdline parameters that I believe the YaST bootloader module appends the the kernel’s cmdline in grub.

noop is a single-queue scheduler that was deprecated since kernel 5 in favor of blk-mq (multi-queue) schedulers;

cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none

appending

elevator=noop
will not imply “none.”

in 5.8-rc3 (branch master commit cd77006e01b3198c75fb7819b3d0ff89709539bb) you wont even find this option in the documentation anymore


linux-zoxo:/usr/src/linux # grep elevator ./Documentation/admin-guide/kernel-parameters.txt
linux-zoxo:/usr/src/linux 

nor does there really seem to be a way to select between none, bfq, kyber, or mq-deadline on the cmdline as near as I can tell, but you can still select none via sysfs, not sure how they intended to have this work now but apparently not by kernel cmdline.

Which brings me to another point, typically as a long time linux desktop user, I’ve never been able to settle for a stock kernel. There are a handful of things that I think would probably be ideal for most desktop users in general:


CONFIG_HZ_1000=y 
CONFIG_HZ=1000 
CONFIG_PREEMPT=y 
CONFIG_HZ_PERIODIC=y 
CPU_IDLE_GOV_LADDER=y
CPU_IDLE_GOV_MENU=n or #(not set)

since this is a laptop dynticks can save power though, I just prefer it not be on because I find that it can add latency in between cpu states and it just makes the system feel (to me) more toyish and the reason why OSX and windows users laugh at linux desktop users, dynticks and full dynticks can save a lot of power though, it’d just be nice if I had more of an actionable choice. So I choose periodic since I’m seldom away from a charger where I can’t just plugin and get power if I need to. The others are definitely nice-to-have, particularly with how X11 responds. Using I/O schedulers typically I have found in the past that noop makes the experience feel more like a desktop than a server, but I’m starting to notice less. I do some server-related stuff on here, and I do use cgroups, particularly I have firefox setup to start with:

systemd-run --user --no-block -p Nice=-19 -p MemoryHigh=1G -p CPUQuota=100% /home/toor/.local/firefox/firefox-bin %u

Generally I also set the specific CPU family for the compiler:


CONFIG_MK8=y
# or CONFIG_MCORE2

and since this is a desktop with 4GB of memory I don’t really want hugepages so I turn of transparent hugepages and I typically turn off transparent hugepages in favor of hugetlbfs since I’m unlikely to use hugepages without setting hugepagesz=1G and setting nr_hugepages when I do want them. Perhaps desktops with larger amounts of memory perform better with hugepages (transparent) but I’ve never investigated this. The point I thought was to minimize the page table growth as applications use larger amounts of memory, along with merging but I’m not really sure how it works off-hand. It seems evident though on this computer I probably don’t need it and don’t have extra memory to waste per page. so I just turn it off.

The problem with custom building the kernel is that I lose secure boot and IMA/evm options unless I setup the signing toolchain and in the past I’ve not been successful in finding a clear path or one source of information related to SuSE that tells me how to do this successfully. I don’t really care enough about it but at the same time I feel like if I have the capability I should be using it. And, I’m also wondering, if anyone else has considered whether or not it would be useful or practical to just add some additional kernel flavors to SuSE going forward, should be easy enough since it’s all built in OBS? Obviously it would be easier if the kernel were more configurable at boot time but they seem to be taking away from boot-time config options plus many of the other options I’m not certain but I want to believe they are not practical to streamline without adding bloat, or nobody cares enough to change it.

Something else that I think would make SuSE shine as a desktop OS is adding a lot of personalization to plasma over the default layout:

https://i.imgur.com/rnNjAdq.png

a common feature on windows 10 with multiple workspaces is to use control-windowskey-left/right to switch between workspaces. I use control alt left/right on here because it feels more natural but it goes nice with konsole when switching between tabs using control shift left/right. I do have multiple tabs in konsole too but the tab bar is hidden because I don’t like looking at it all the time when I’m in full screen mode and it would be nice if it had an option to autohide the tab bar and it’s menubar/scroll bar in full-screen.

There are a lot of very nice themes and stuff on the community browsers but finding any that really take advantage of everything plasma has to offer is a bit tricky sometimes. I really like this layout because it’s very familiar, it’s productive, and it’s not a blatant rip-off of the theming of another operating system; just the layouts.

I’m also using a font distribution called nerd-fonts, and I use them for plasma fonts as well; since this screen resolution sucks I have full hinting enabled for fonts: https://www.nerdfonts.com/

For my shell I’m also using zsh with “oh-my-zsh” and powerlevel 9k (haven’t figured out 10k yet) that together with nerd fonts is what gives me all of the icons in the PS1 of my shell prompt. When I first start KDE I usually setup my keyring, and I start by creating a GPG key that kde can use to encrypt/decrypt stored secrets like wifi passwords. the keyring is unlocked each time I login.

I don’t think any of these things should be mandatory or anything they’re just things that I wish I could offer people out-of-the-box. I don’t know if this is anything that anybody cares about, I hope this feedback counts though. Honestly, it’d be nice if I never had to go through setting this all up again… or at least, setup less of it when I do have to set it all up.

also forgot to mention the bottom dock is called cairo-dock and it seems to be more of a gtk land sort of thing but I’ve adapted it to work for me, the configuration ui for it is a little gross but I got through it, so the look seems to match ok with the rest of my layout:
https://i.imgur.com/MO9QSx0.png

I had some thoughts on how one might streamline this maybe just finding all of the relevant kde /plasma configs in ~/.config and adding them to /etc/skel ? I would definitely look into getting a package for nerd-fonts too if the licensing works.

Here’s an example though of how community theming kinda fails sometimes, I have all of the buttons for the title bar enabled and floating right, and this theme accounts for them, but I’d like the window title to float left and I can’t unless I edit the theme markup:
https://i.imgur.com/MVjg1UD.png

I did not read all of your story above (and I guess that much is about KDE and thus better should be asked/suggested on the KDE forums or suggestion web site or what they have).

But at the end I see that you suggest to put typical KDE files into /etc/skel. But as /etc/skel is used at installation of all users, also those that will never use KDE (or a desktop at all), that would not be a good idea IMHO.

Oh and btw, this forum is about openSUSE and not about SuSE, which does not exist anymore for a long time, but using it could give people the idea that you mean SUSE Linux Enterprise/Desktop, which is not here.

Going back to the OP, Yast>Kernel settings>Kernel settings allows you to set your choice of scheduler.

Hi Henk,

I’ll try to clear this up a bit,

KDE works fine, it just took me years to figure out a way to use it that comes natural to me. I was more thinking in the same “sense” that OpenSuSE has it’s own panel:

https://i.imgur.com/ido73GW.png
and also it’s own theme, also part of kde desktop (maybe pattern ?) install:

https://i.imgur.com/bCa22qv.png

That perhaps you’d improve on that branding by adding some more personalization. To have a default layout with all of the same configuration customization that I’ve made for mine. Because this actually is quite painful to have to setup and configure to make it look like this:

https://i.imgur.com/gkXUNSI.png

There are 4 spacers of non-flexible size there, + one flexible size between the left and right widgets. The spacers are there for padding. Originally I thought it might be good to have a file menu widget next to the app menu and have the workspace switcher floating right, but I couldn’t figure out a way to set a custom font for the file menu widget and it looked strange and I couldn’t think of any reason in particular why I needed one anyway so this is what I have. As for the system tray I actually don’t disable any of the icons, but the only ones that are ever visible are the ones you see in the system tray and the rest are accessible using the drop down menu:

https://i.imgur.com/fXk8z9H.png

In the application menu I’ve configured it to only show the applications tab, because it seems simpler and more intuitive, but I’ve also edited the application menu to include a separator between the folders and several shortcut icons that I’ve added to the top for things I most commonly use. This is hard to trivialize but I think there’s a few things there at least that are in the “favorites” tab by default:
https://i.imgur.com/H8WycIN.png

The only gripe I had about KDE I found out recently is because WHILE the settings window can be configured to look like this…:

https://i.imgur.com/Ek06kLk.png

The default which looks like the following screenshot, you currently can’t see it but with the Breeze and especially breeze dark as well as the OpenSuSE dark theme there’s a staircasing problem with the background of the window because it’s a gradient:

https://i.imgur.com/4FMB6Fj.png

And, I think the non-default view looks better personally.

But at the end I see that you suggest to put typical KDE files into /etc/skel. But as /etc/skel is used at installation of all users, also those that will never use KDE (or a desktop at all), that would not be a good idea IMHO.

Of course, this would be an optional thing, by virtue of some means like a pattern, or possibly a plasma settings widget that is installed that will enable all of the configurations, /etc/skel, I can think of a lot of ways. It’s not to say that I don’t think people like OpenSuSE enough, just that I would love it if this is the way it was on a fresh install. A lot of the other suggestions are things that people will do regardless of whether they’re running suse or osx, and they’re just really nice to have and it would be nice if they were part of the same out of box experience. It may seem useless to people who are intent on using fvwm forever, or people who would just run OSX or Windows but I’m not really one of those people. But, I can certainly appreciate the reliabilty, functionality, and lack of difficulty in the routines of people who are running of OSX and Windows.

Oh and btw, this forum is about openSUSE and not about SuSE, which does not exist anymore for a long time, but using it could give people the idea that you mean SUSE Linux Enterprise/Desktop, which is not here.

Sorry about that, I will try really hard to remember so that people don’t get confused!

Just checked and these are definitely all of the old (deprecated) single queue I/O schedulers that aren’t available anymore as of kernel v5:

https://i.imgur.com/qnIdFCj.png

FYI I am running on OpenSuSE 15.2.

One other thing that I can say about all of this is that Linux distros are nowhere near as cool as they were in the 90s. There was a point around 1999 / 2000 when everybody had their own distro, that you could download and it used syslinux to boot from DOS. They were all really cool, too and frankly those kind of distros taught me a lot more about Linux because they were more about being a working and redistributable a proof of concept. In some of them you would get a fully configured KDE system with a very customized theme, system monitors like gkrellm that were also themed, and everything that existed in it was put there by its author. BeOS was a close second best because it came with so much stuff out of the box and it all had a purpose.

Hi
You can do that with openSUSE… SUSE Studio Express or use kiwi locally to create your own…

Thanks I’ll take a look sometime. I was actually thinking about doing something with AutoYaST as well.

Not sure what you are really looking for, but those are the global I/O schedulers. If you have, for instance, an SSD where mq schedulers make sense you should already have a mq scheduler by default.
For instance here on Leap 15.2:

beta_bruno@LT_B:~> cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
beta_bruno@LT_B:~>

More precisely the deprecation of I/O schedulers happened as of kernel 5.3 so it looks like the new openSUSE 15.2 just crossed the line (kernel 5.3.18…).
Recommend submitting a bug to https://bugzilla.opensuse.org.

In any case, if the system is running a very fast drive (NVME or SSD), it appears that the current “unconfigured” YaST setting is just fine and won’t make a noticeable difference except possibly create overhead if set. If the drive is an HDD, then something should be set.

If running an SSD or NVME drive, I see some recommendations to actually not specify a scheler… maybe I’ll try that…

TSU

Another approach is to just create a post-installation script.
Would probably be more appropriate if you’re a tiny shop.
If you’re supporting tens or hundreds of similarly configured machines, then YMMV.

TSU

I have just checked

cat /sys/block/sda/queue/scheduler

and I am running mq-deadline

[mq-deadline] kyber bfq none

now.

Bug 1163498 reports that the YaST scheduler is out-of-date; so this will presumably be fixed some time soon.