Messages in this thread | | | From | Badari Pulavarty <> | Subject | Re: [RFC] [PATCH] 2.5.35 patch for making DIO async | Date | Wed, 18 Sep 2002 09:30:16 -0700 (PDT) |
| |
> > On Wed, Sep 18, 2002 at 08:58:22AM -0700, Badari Pulavarty wrote: > > Thanks for looking at the patch. Patch needed few cleanups to get it > > working. Here is the status so far.. > > > > 1) I tested synchronous raw read/write. They perform almost same as > > without this patch. I am looking at why I can't match the performance. > > (I get 380MB/sec on 40 dd's on 40 disks without this patch. > > I get 350MB/sec with this patch). > > Hmm, we should try to improve that. Have you tried profiling a long run?
I took few shortcuts in the patch compared to original DIO code. eg., I create a bio all the time.. original code reuses them. But I don't think that is causing the performance hit. Anyway, here is the vmstat and profile=2 output.
vmstat:
0 40 2 0 3804628 0 27396 0 0 344909 192 3786 3536 0 5 95 0 40 1 0 3803268 0 28628 0 0 345686 208 3793 3578 0 5 95 0 40 1 0 3802452 0 29404 0 0 346983 210 3806 3619 0 5 95 0 40 1 0 3801888 0 29932 0 0 345178 203 3786 3500 0 5 95 0 40 1 0 3801804 0 29996 0 0 345792 196 3791 3510 0 5 95 0 40 1 0 3801652 0 30100 0 0 346048 200 3800 3556 0 5 95
profile:
146796 default_idle 2293.6875 1834 __scsi_end_request 10.4205 1201 do_softirq 6.2552 891 scsi_dispatch_cmd 2.3203 50 __wake_up 1.0417 599 get_user_pages 0.7341 362 blk_rq_map_sg 0.6856 420 do_direct_IO 0.5707 25 dio_prep_bio 0.5208 562 __make_request 0.4878 55 __scsi_release_command 0.4167 6 cap_file_permission 0.3750 63 release_console_sem 0.3580 55 do_aic7xxx_isr 0.3438 141 bio_alloc 0.3389 45 scsi_finish_command 0.2557 8 scsi_sense_valid 0.2500 16 dio_new_bio 0.2500 206 schedule 0.2341
> > > 2) wait_on_sync_kiocb() needed blk_run_queues() to make regular read/ > > write perform well. > > That should be somewhat conditional, but for now it sounds like the right > thing to do. > > > 3) I am testing aio read/writes. I am using libaio.0.3.92. > > When I try aio_read/aio_write on raw device, I am get OOPS. > > Can I use libaio.0.3.92 on 2.5 ? Are there any interface > > changes I need to worry between 2.4 and 2.5 ? > > libaio 0.3.92 should work on 2.5. Could you send me a copy of the > decoded Oops? >
My Bad :)
aio_read/aio_write() routines take loff_t not loff_t * (like regular read/writes)
ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*aio_read) (struct kiocb *, char *, size_t, loff_t);
I coded for loff_t *. fixed it. I am testing it now.
Thanks, Badari
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |