Discussion:
ioprio_set: IDLE_CLASS doesn't work as its name suggests
f***@gmail.com
2011-03-26 04:39:51 UTC
Permalink
Hi all,

I've tried to make a fast boot according to "Booting Linux in five
seconds"[1]. One method of boot fast is using readahead -- a process
"replay" read actions in IDLE IO class via readahead syscall. Sadly
observed negative results -- according to bootchat diagram, readahead
process actually uses more IO bandwidth that slows down all IO
operations of other ones.

Then I did some tests -- two I/O hog processes, the IDLE IO class one
largely degrades I/O performance of the other one.

The tests were performed on a machine with dual-core cpu (intel
***@2.7GHz), G33 and ICH7, 2G mem, running Ubuntu 10.04. The kernel
version was 2.6.35-25-generic with CFQ as default I/O scheduler.
We ran test programs which time "find $2 -type f -exec cat {} \;" on
~1.9G directory with Normal and IDLE IO class. Before each test, we
reboot the system. Here are the results:

1. Only ran one instance of the test program in Normal IO class:
Job finished in 4m2.365s

2. Ran two instances of the test program, one Normal IO class, the
other Idle IO class:
[Normal]: 7m0.999s
[Idle]: 7m43.180s

3. Ran two instances of the test program, both Normal IO class:
[Normal1]: 8m39.366s
[Normal2]: 8m39.377s

BTW, for those interested in the detail, try the attachment:
1. mkdir ioprio_test
2. cp ioprio_test.c run_test.sh ioprio_test
3. tar xf <system_image.tar.gz> -C ioprio_test/tdir1
4. tar xf <system_image.tar.gz> -C ioprio_test/tdir2
5. reboot; cd ioprio_test && ./run_test.sh 1 => result stored in F.txt
6. reboot; cd ioprio_test && ./run_test.sh 2 => result stored in
F[B0].txt B0[F].txt
7. reboot; cd ioprio_test && ./run_test.sh 3 => result stored in
F[B1].txt B1[F].txt



Regards,
cee1
-------
[1] http://lwn.net/Articles/299483/
f***@gmail.com
2011-03-30 02:16:24 UTC
Permalink
I/O activity of IOPRIO_CLASS_IDLE processes can reduce other's I/O
performance by nearly half, according to
Loading Image....

It seems "IDLE" in "IOPRIO_CLASS_IDLE" is not analogized to "IDLE" in
"SCHED_IDLE", is it the normal behavior?
Post by f***@gmail.com
Hi all,
I've tried to make a fast boot according to "Booting Linux in five
seconds"[1]. One method of boot fast is using readahead -- a process
"replay" read actions in IDLE IO class via readahead syscall. Sadly
observed negative results -- according to bootchat diagram, readahead
process actually uses more IO bandwidth that slows down all IO
operations of other ones.
Then I did some tests -- two I/O hog processes, the IDLE IO class one
largely degrades I/O performance of the other one.
The tests were performed on a machine with dual-core cpu (intel
version was 2.6.35-25-generic with CFQ as default I/O scheduler.
We ran test programs which time "find $2 -type f -exec cat {} \;" on
~1.9G directory with Normal and IDLE IO class. Before each test, we
Job finished in 4m2.365s
2. Ran two instances of the test program, one Normal IO class, the
[Normal]: 7m0.999s
[Idle]: 7m43.180s
[Normal1]: 8m39.366s
[Normal2]: 8m39.377s
1. mkdir ioprio_test
2. cp ioprio_test.c run_test.sh ioprio_test
3. tar xf <system_image.tar.gz> -C ioprio_test/tdir1
4. tar xf <system_image.tar.gz> -C ioprio_test/tdir2
5. reboot; cd ioprio_test && ./run_test.sh 1 => result stored in F.txt
6. reboot; cd ioprio_test && ./run_test.sh 2 => result stored in
F[B0].txt B0[F].txt
7. reboot; cd ioprio_test && ./run_test.sh 3 => result stored in
F[B1].txt B1[F].txt
Regards,
cee1
-------
[1] http://lwn.net/Articles/299483/
--
Regards,
- cee1

Loading...