From: Denis Vlasenko
Date: Tue Oct 11 2005 - 04:28:13 EST
On Tuesday 11 October 2005 08:04, Karthik Sarangan wrote:
> > Benjamin LaHaise wrote:
> > O_DIRECT buffers must be aligned on block sized boundaries (minimum 512
> > bytes). Check the actual return code from the aiocb and you'll find that
> > it is likely -EINVAL, no -EINPROGRESS. See the man page for
> > posix_memalign() to properly align the pointer.
> EEP!! I forgot all about buffer alignment!! Thanks for pointing it out
Why do you constantly shout?
> Two more questions.
> 1. Is aio_fsync of any use while 'aio_read'ing and 'aio_write'ing to
> a 'raw' device or a '/dev/sdb' with O_DIRECT?
I suspect you did not do some research first.
> 2. I have an Ultra320 SCSI disk whose datasheet says it has a max.
> possible throughput of 78MBps
> I did a 'aio_write' onto '/dev/sdb' with O_DIRECT.
> Following are some throughput values.
> Buffer for IO | Avg Speed
> (in KBytes) |
> Upto 512KB | 69MBps
> 1024KB | 125MBps
> 2048KB | 250MBps
> 4096KB | 500MBps
> 8192KB | 1GBps -- What the !! --
Most probably bug in your program.
> Buffer cache does not come into consideration.
> Does this mean that the SCSI lower layer (aic79xx) can transfer data
> only upto 512 KB?
It means that you are in dire need of reading this:
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/