Re: [git patches] IDE update

From: Ondrej Zary
Date: Tue Jul 05 2005 - 10:18:46 EST


Jens Axboe wrote:
On Tue, Jul 05 2005, Ondrej Zary wrote:

Jens Axboe wrote:

On Tue, 2005-07-05 at 15:02 +0200, Ondrej Zary wrote:


Ok, looks alright for both. Your machine is quite slow, perhaps that is
showing the slower performance. Can you try and make HZ 100 in 2.6 and
test again? 2.6.13-recent has it as a config option, otherwise edit
include/asm/param.h appropriately.


I forgot to write that my 2.6.12 kernel is already compiled with HZ 100 (it makes the system more responsive).
I've just tried 2.6.8.1 with HZ 1000 and there is no difference in HDD performance comparing to 2.6.12.


OK, interesting. You could try and boot with profile=2 and do

# readprofile -r
# dd if=/dev/hda of=/dev/null bs=128k # readprofile > prof_output

for each kernel and post it here, so we can see if anything sticks out.


Here are the profiles (used dd with count=4096) from 2.4.26 and 2.6.12 (nothing from 2.6.8.1 because I don't have the .map file anymore).


Looks interesting, 2.6 spends oodles of times copying to user space.
Lets check if raw reads perform ok, please try and time this app in 2.4
and 2.6 as well.

# gcc -Wall -O2 -o oread oread.c
# time ./oread /dev/hda

oread is faster than dd, but still not as fast as 2.4. In 2.6.12, HDD led is blinking, in 2.4 it's solid on during the read.

2.6.12:
root@pentium:/home/rainbow# time ./oread /dev/hda

real 0m25.082s
user 0m0.000s
sys 0m0.680s

2.4.26:
root@pentium:/home/rainbow# time ./oread /dev/hda

real 0m23.513s
user 0m0.000s
sys 0m2.360s

--
Ondrej Zary
2016 default_idle 25.2000
1 system_call 0.0156
2 handle_IRQ_event 0.0179
1 schedule 0.0012
1 __run_task_queue 0.0104
4 follow_page 0.0312
3 get_user_pages 0.0063
4 mark_dirty_kiobuf 0.0357
1 handle_mm_fault 0.0048
2 generic_file_direct_IO 0.0026
1 lru_cache_add 0.0089
2 init_buffer 0.0625
12 set_bh_page 0.1071
3 create_buffers 0.0134
30 generic_direct_IO 0.0457
17 brw_kiovec 0.0186
11 max_block 0.0764
9 blkdev_get_block 0.1406
2 blkdev_direct_IO 0.0417
1 write_profile 0.0208
2 generic_unplug_device 0.0312
93 __make_request 0.0524
25 generic_make_request 0.0781
20 submit_bh 0.0781
5 ide_inb 0.3125
12 ide_outb 0.7500
1 ide_outl 0.0625
1 ide_wait_stat 0.0030
4 ide_execute_command 0.0312
2 ide_do_request 0.0050
4 ide_get_queue 0.0625
2 ide_intr 0.0069
2 ide_dma_intr 0.0104
10 ide_build_sglist 0.0160
1 ide_build_dmatable 0.0024
1 __ide_dma_read 0.0042
1 __constant_c_and_count_memset 0.0069
1 __ide_do_rw_disk 0.0007
42 idedisk_end_request 0.2188
4 __rdtsc_delay 0.1250
0 *unknown*
2356 total 0.0013
1 sched_clock 0.0057
3 cond_resched_lock 0.0312
2 write_profile 0.0312
1 __wake_up_bit 0.0208
2 __generic_file_aio_read 0.0038
1 generic_file_read 0.0052
1 mempool_alloc 0.0037
1 set_page_dirty 0.0125
3 set_page_dirty_lock 0.0625
4 __follow_page 0.0227
7 get_user_pages 0.0072
2 do_wp_page 0.0025
8 __bio_add_page 0.0227
5 bio_add_page 0.1562
1 bio_set_map_data 0.0208
1 update_atime 0.0057
1 dio_get_page 0.0156
1 dio_bio_submit 0.0069
2 dio_bio_complete 0.0096
5 submit_page_section 0.0164
1 dio_zero_block 0.0078
13 do_direct_IO 0.0150
2 direct_io_worker 0.0014
2 __copy_to_user_ll 0.0312
2428 acpi_processor_idle 4.0000
4 blk_rq_map_sg 0.0114
10 __make_request 0.0086
1 generic_make_request 0.0022
1 as_set_request 0.0089
4 ide_end_request 0.0278
6 ide_do_request 0.0072
1 ide_intr 0.0026
5 ide_outb 0.3125
1 ide_execute_command 0.0063
2 ide_build_sglist 0.0139
5 schedule 0.0033
1 io_schedule 0.0312
0 *unknown*
2539 total 0.0012