|
|
fileio results
Random file I/O regressions on stock Linux kernels
Update: 05/05/2004:
Andrew Morton posted on the linux-kernel mailing list the read-ahead patch against 2.6.6-rc3 that cuts the regression down to about 10% . The results of the patched 2.6.6-rc3 have been added to the results table below.
I ran the SysBench random file I/O test on stock 2.4 and 2.6 kernels and found significant regressions for 2.6 kernels that I failed to explain.
Test setup
The workloads were created by the SysBench fileio test with the following parameters:
| Number of worker threads |
16 |
| Total file size |
3 GB |
| Number of files |
128 |
| Test mode |
random read/write |
| Read/write ratio |
1.5 |
| Block size |
16 KB |
| Total number of requests |
10000 |
| fsync() frequency |
100 |
The fileio test configured in this way creates 16 worker threads, each running random read/write I/O requests in blocks of 16 KB with a read/write ratio of 1.5. All I/O operations are evenly distributed among 128 files with a total file size of 3 GB.
Each 100 requests, an fsync() operation is performed sequentially on each file. The total number of requests is limited by 10000.
The SysBench command line arguments for this configuration are the following:
sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw run
The filesystem used for the test runs was ext3 with data=ordered.
Hardware
The benchmarks hardware is an AMD Athlon 800 MHz with 640 MB RAM and an IBM IC35L040 IDE hard drive.
Kernel versions
I tested vanilla 2.4.25 (config), 2.6.5-bk2 (config) and 2.6.6-rc3 (config) (+ read-ahead patch) kernels with a default I/O scheduler for 2.4.25 kernel and anticipatory, deadline, CFQ and "noop" schedulers for 2.6.x kernels.
Results
The following table shows the results of the tests. Values represent the number of seconds required for the test to complete (lower is better).
|
2.4.25 |
2.6.5-bk2 |
2.6.6-rc3 |
2.6.6-rc3 + patch |
| 2.4.25 scheduler |
77.5377 |
|
|
|
noop scheduler |
|
165.3393 |
164.9486 |
94.0064 |
| anticipatory scheduler |
|
118.7450 |
125.1776 |
86.5459 |
| deadline scheduler |
|
130.3254 |
131.8903 |
92.8340 |
| CFQ scheduler |
|
146.4286 |
152.9280 |
95.7213 |
|