Date: Tue, 5 Mar 2002 18:10:13 -0500 (EST) From: Zhihui Zhang <zzhang@cs.binghamton.edu> To: Lars Eggert <larse@ISI.EDU> Cc: "Rogier R. Mulhuijzen" <drwilco@drwilco.net>, Julian Elischer <julian@elischer.org>, freebsd-hackers@FreeBSD.ORG Subject: Re: A weird disk behaviour Message-ID: <Pine.SOL.4.21.0203051803150.13181-100000@onyx> In-Reply-To: <3C854EA4.5040306@isi.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
Well, the core of my program is as follows (RANDOM(x) return a value between 0 and x): blocksize = 8192; write_size_low = 512; time(&time1); for (i = 0; i < write_count; i++) { write_size = write_size_low + RANDOM(write_size_high-write_size_low); write_size = roundup(write_size, DEV_BSIZE); if (testcase == 1) write_size = blocksize; write_block(rawfd, sectorno, buf, write_size); sectorno += blocksize / DEV_BSIZE; } time(&time2); If testcase is one, then the time elapsed (time2 - time1) is much less. -Zhihui On Tue, 5 Mar 2002, Lars Eggert wrote: > I agree that it's probably caching at some level. You're only writing > about 120MB of data (and half that in your second case). Bump these to a > couple of GB and see what happens. > > Also, could you post your actual measurements? > > Lars > > > Zhihui Zhang wrote: > > The machine has 128M memory. I am doing physical I/O one block at a time, > > so there should be no memory copy. > > > > -Zhihui > > > > On Tue, 5 Mar 2002, Rogier R. Mulhuijzen wrote: > > > > > >>At 16:03 5-3-2002 -0500, Zhihui Zhang wrote: > >> > >> > >> > >>>On Tue, 5 Mar 2002, Julian Elischer wrote: > >>> > >>> > >>>>more writes fit in the disk's write cache? > >>>> > >>>For (1), it writes 15000 * 8192 bytes in all. For (2), it writes 15000 * > >>>4096 bytes in all (assuming the random number distributes evenly between 0 > >>>and 8192). So your suggestion does not make sense to me. > >>> > >>How large is your buffercache? it might be that the 15000 * ~4096 roughly > >>matches with your cache, and 15000 * 8912 doesn't. > >> > >>Case (1) would require a lot more physical IO in that case than case (2) > >>would require. > >> > >> Doc > >> > >> > >> > >>>-Zhihui > >>> > >>> > >>>>On Tue, 5 Mar 2002, Zhihui Zhang wrote: > >>>> > >>>> > >>>>>I am doing some raw I/O test on a seagate SCSI disk running FreeBSD 4.5. > >>>>>This situation is like this: > >>>>> > >>>>> +-----+----+----+----+----+----+----+----+----+----+---+------ > >>>>> | | | | | | | | | | | | .... > >>>>> +-----+----+----+----+----+----+----+----+----+----+---+------ > >>>>> > >>>>>Each block is of fixed size, say 8192 bytes. Now I have a user program > >>>>>writing each contiguously laid out block sequentially using /dev/daxxx > >>>>>interface. There are a lot of them, say 15000. I write the blocks in two > >>>>>ways (the data used in writing are garbage): > >>>>> > >>>>>(1) Write each block fully and sequentially, ie. 8192 bytes. > >>>>> > >>>>>(2) I still write these blocks sequentially, but for each block I only > >>>>>write part of it. Exactly how many bytes are written inside each > >>>>> > >>>block is > >>> > >>>>>determinted by a random number between 512 .. 8192 bytes (rounded up a > >>>>>to multiple of 512 bytes). > >>>>> > >>>>>I find out the the performance of (2) is several times better than the > >>>>>performance of (1). Can anyone explain to me why this is the case? > >>>>> > >>>>>Thanks for any suggestions or hints. > >>>>> > >>>>>-Zhihui > >>>>> > >>>>> > >>>>> > >>>>>To Unsubscribe: send mail to majordomo@FreeBSD.org > >>>>>with "unsubscribe freebsd-hackers" in the body of the message > >>>>> > >>>>> > >>>> > >>> > >>>To Unsubscribe: send mail to majordomo@FreeBSD.org > >>>with "unsubscribe freebsd-hackers" in the body of the message > >>> > >> > > > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > > with "unsubscribe freebsd-hackers" in the body of the message > > > > > > -- > Lars Eggert <larse@isi.edu> Information Sciences Institute > http://www.isi.edu/larse/ University of Southern California > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SOL.4.21.0203051803150.13181-100000>