FORUMS
Remove All Ads from XDA
Honor 7x
Win an Honor 7X!

Speed up your system with the noop scheduler

548 posts
Thanks Meter: 128
 
By farmatito, Senior Member on 24th October 2009, 09:05 PM
Post Reply Email Thread
From Wikipedia:
Code:
The NOOP scheduler is the simplest I/O scheduler for the Linux kernel.
This scheduler was developed by Jens Axboe.

The NOOP scheduler inserts all incoming I/O requests into a simple, unordered
FIFO queue and implements request merging.

The scheduler assumes I/O performance optimization will be handled at some 
other layer of the I/O hierarchy; e.g., at the block device; by an intelligent
HBA such as a Serial Attached SCSI (SAS) RAID controller or by an externally
attached controller such as a storage subsystem accessed through a 
switched Storage Area Network).

NOOP scheduler is best used with solid state devices such as flash memory
or in general with devices that do not depend on mechanical movement to
access data (meaning typical "hard disk" drive technology consisting of seek
time primarily, plus rotational latency). Such non-mechanical devices do not
require re-ordering of multiple I/O requests, a technique that groups together
I/O requests that are physically close together on the disk, thereby reducing
average seek time and the variability of I/O service time.
To check which scheduler is used:

Code:
 adb shell
~ # cat /sys/block/mmcblk0/queue/scheduler
[noop] cfq
To select a different scheduler:

Code:
adb shell
~ # echo "noop" > /sys/block/mmcblk0/queue/scheduler

To select the noop scheduler for all your block devices you can add
this lines to your userinit.sh script:

Code:
# Set "No-op" scheduler for mtdblocks and mmc
for i in `ls -1 /sys/block/mtdblock*` /sys/block/mmcblk0
do
	echo "noop" > $i/queue/scheduler
done
I tested it a little and especially the sdcard seems to work faster.

Enjoy
The Following 5 Users Say Thank You to farmatito For This Useful Post: [ View ] Gift farmatito Ad-Free
 
 
24th October 2009, 09:21 PM |#2  
Senior Member
Flag Seattle / Warsaw
Thanks Meter: 4
 
More
Ahh, noop is set to default in my kernels, but I wouldn't say that there is BIG difference on g1.
The Following User Says Thank You to akirah For This Useful Post: [ View ] Gift akirah Ad-Free
24th October 2009, 11:18 PM |#3  
JD82's Avatar
Senior Member
Thanks Meter: 60
 
More
Is it even better then the BFQ Scheduler used by Cyanogen?
24th October 2009, 11:40 PM |#4  
Senior Member
Thanks Meter: 0
 
More
Quote:
Originally Posted by farmatito

From Wikipedia:

Code:
The NOOP scheduler is the simplest I/O scheduler for the Linux kernel.
This scheduler was developed by Jens Axboe.

The NOOP scheduler inserts all incoming I/O requests into a simple, unordered
FIFO queue and implements request merging.

The scheduler assumes I/O performance optimization will be handled at some 
other layer of the I/O hierarchy; e.g., at the block device; by an intelligent
HBA such as a Serial Attached SCSI (SAS) RAID controller or by an externally
attached controller such as a storage subsystem accessed through a 
switched Storage Area Network).

NOOP scheduler is best used with solid state devices such as flash memory
or in general with devices that do not depend on mechanical movement to
access data (meaning typical "hard disk" drive technology consisting of seek
time primarily, plus rotational latency). Such non-mechanical devices do not
require re-ordering of multiple I/O requests, a technique that groups together
I/O requests that are physically close together on the disk, thereby reducing
average seek time and the variability of I/O service time.
To check which scheduler is used:

Code:
 adb shell
~ # cat /sys/block/mmcblk0/queue/scheduler
[noop] cfq
To select a different scheduler:

Code:
adb shell
~ # echo "noop" > /sys/block/mmcblk0/queue/scheduler

To select the noop scheduler for all your block devices you can add
this lines to your userinit.sh script:

Code:
# Set "No-op" scheduler for mtdblocks and mmc
for i in `ls -1 /sys/block/mtdblock*` /sys/block/mmcblk0
do
	echo "noop" > $i/queue/scheduler
done
I tested it a little and especially the sdcard seems to work faster.

Enjoy


Would you mind since you are willing to share this info to post some information on what settings you are finding work best and such?

To post this type of info without it being watered down a bit for ever level of user can and probably will cause issues from people going into settings only half knowing what they are doing. Granted if you don't know what you are doing you shouldn't be, but we all know its going to happen
24th October 2009, 11:55 PM |#5  
OP Senior Member
Thanks Meter: 128
 
More
Quote:
Originally Posted by pentace

Would you mind since you are willing to share this info to post some information on what settings you are finding work best and such?

To post this type of info without it being watered down a bit for ever level of user can and probably will cause issues from people going into settings only half knowing what they are doing. Granted if you don't know what you are doing you shouldn't be, but we all know its going to happen

I tested it on a Cyanogen Mod 4.0.4 with self compiled kernel 2.6.29.6
from cyanogen's git repository. The available schedulers are noop and cfq.
The default scheduler was cfq and after having read about noop scheduler
i tried it and found no regression in performance but rather some improvement.
I have no benchmarks yet. So you have to test it yourself
to see if it makes a difference on your phone. I cannot imagine
this mod causing issues as it is easily reverted and it was not intended
for all users but rather for the tech savvy to see if they can confirm
some improvement in performance.
24th October 2009, 11:58 PM |#6  
Senior Member
Flag Seattle / Warsaw
Thanks Meter: 4
 
More
Quote:
Originally Posted by JD82

Is it even better then the BFC Scheduler used by Cyanogen?

It's I/O scheduler.
25th October 2009, 12:04 AM |#7  
JD82's Avatar
Senior Member
Thanks Meter: 60
 
More
Quote:
Originally Posted by akirah

It's I/O scheduler.

I've made a typo: it is BFQ, not BFC.

From the cyanogenmod's changelog:
Quote:

* Now using the BFQ I/O scheduler, which seems like a good compromise between CFQ and the old anticipatory scheduler

From my G1:
Code:
adb shell
# cat /sys/block/mmcblk0/queue/scheduler
noop [bfq]
Again: Is it even better then the BFQ Scheduler used by Cyanogen?
25th October 2009, 12:40 AM |#8  
Senior Member
Flag Austin,TX
Thanks Meter: 98
 
More
Quote:
Originally Posted by farmatito

From Wikipedia:

Code:
The NOOP scheduler is the simplest I/O scheduler for the Linux kernel.
This scheduler was developed by Jens Axboe.

The NOOP scheduler inserts all incoming I/O requests into a simple, unordered
FIFO queue and implements request merging.

The scheduler assumes I/O performance optimization will be handled at some 
other layer of the I/O hierarchy; e.g., at the block device; by an intelligent
HBA such as a Serial Attached SCSI (SAS) RAID controller or by an externally
attached controller such as a storage subsystem accessed through a 
switched Storage Area Network).

NOOP scheduler is best used with solid state devices such as flash memory
or in general with devices that do not depend on mechanical movement to
access data (meaning typical "hard disk" drive technology consisting of seek
time primarily, plus rotational latency). Such non-mechanical devices do not
require re-ordering of multiple I/O requests, a technique that groups together
I/O requests that are physically close together on the disk, thereby reducing
average seek time and the variability of I/O service time.
To check which scheduler is used:

Code:
 adb shell
~ # cat /sys/block/mmcblk0/queue/scheduler
[noop] cfq
To select a different scheduler:

Code:
adb shell
~ # echo "noop" > /sys/block/mmcblk0/queue/scheduler

To select the noop scheduler for all your block devices you can add
this lines to your userinit.sh script:

Code:
# Set "No-op" scheduler for mtdblocks and mmc
for i in `ls -1 /sys/block/mtdblock*` /sys/block/mmcblk0
do
	echo "noop" > $i/queue/scheduler
done
I tested it a little and especially the sdcard seems to work faster.

Enjoy

Excellent tip, thanks!
25th October 2009, 01:12 AM |#9  
Member
Thanks Meter: 0
 
More
Quote:
Originally Posted by JD82

I've made a typo: it is BFQ, not BFC.

From the cyanogenmod's changelog:
From my G1:

Code:
adb shell
# cat /sys/block/mmcblk0/queue/scheduler
noop [bfq]
Again: Is it even better then the BFQ Scheduler used by Cyanogen?

Yeah well, anticipatory is back now in the new stable build.
Code:
cat /sys/block/mmcblk0/queue/scheduler
noop [anticipatory]
25th October 2009, 10:18 AM |#10  
OP Senior Member
Thanks Meter: 128
 
More
I tested it only vs cfq scheduler, so I can't say if it is better than anticipatory
or cfq scheduler. The rationale behind this change is that flash and mmc don't need a scheduler so there should be a performance gain for the reason that
that we use simpler/less kernel code with littler data structures in memory.
Time and user reports will tell it the change is worth the effort.
25th October 2009, 12:57 PM |#11  
cyanogen's Avatar
Retired Recognized Developer
Flag Seattle
Thanks Meter: 5,785
 
Donate to Me
More
I've tried them all and keep going back to the anticipatory iosched. Everything just seems smoother. Maybe the devices like the io reordering that it does.
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes