TL DR: Changing one setting massively improves performance and gets rid of whole system stalls while using eMMC drives, very popular in low end laptops, SD cards and Flash drives. I really want to have this included in Solus by default.
Story: My laptop with particulary slow eMMC drive was constantly handing for a few seconds, especially when it started using swap. Solution was quite simple: changing the scheduler to BFQ. It not only improves performance (more on that later) but most importantly completely change the user experience. Now I don't notice when my 2 GBs of RAM get filled up and it starts using swap, there are no stalls or hiccups. Now I can actually use this netbook.
How to test it yourself: If just for this session (applied to the next reboot, replace "mmcblk0" with name of your drive): echo bfq | sudo tee /sys/block/mmcblk0/queue/scheduler
to test if it worked: cat /sys/block/mmcblk0/queue/scheduler
How to apply it permanently: I think the best way is an udev rule (create file like /etc/udev/rules.d/60-mmc-scheduler.rules that says)
ACTION=="add|change", KERNEL=="mmcblk[0-10]", ATTR{queue/scheduler}="bfq"
My rule is based on this
Benchmarks: The benchmarks are a lot better, but it is hard to conduct them, because the statistical disperity is huge.
Test: Random Write:
56.18
37.61
23.27
22.07
19.52
16.41
14.47
14.84
12.91
12.25
This is why you need to take my results with a grain of salt. The reason for this huge difference is that eMMC are in extreme need of TRIM command. This is simply because of its size, I had 9GBs free out of 28GBs drive, so increasing the frequency of trim command would also be extremely helpful.
Oh, and traditional hard drives would benefit from this change too, but this change is not that dramatic as with eMMC.