Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!uakari!xanth!ames!sun-barr!newstop!sun!snafu!lm From: lm@snafu.Sun.COM (Larry McVoy) Newsgroups: comp.unix.wizards Subject: Re: Raw disk I/O Message-ID: <132220@sun.Eng.Sun.COM> Date: 24 Feb 90 20:58:27 GMT References: <1990Feb23.223030.9851@ladc.bull.com> Sender: news@sun.Eng.Sun.COM Reply-To: lm@sun.UUCP (Larry McVoy) Organization: Sun Microsystems, Mountain View Lines: 68 In article <1990Feb23.223030.9851@ladc.bull.com> fmayhar@hermes.ladc.bull.com writes: >... blocking I/O. We got about >40k-45k/s. With block-mode I/O, we get from around 90 k/s to as much as >200 k/s or a little more, depending on the test parameters. Are you saying >that we could exceed these figures using raw I/O? I sure hope so. Those are pathetic I/O rates. sparcstation 1, SunOS 4.1, Quantum 3.5" SCSI drive: $ time dd if=/dev/rsd1c of=/dev/null count=400 bs=8k 400+0 records in 400+0 records out real 0m7.61s user 0m0.03s sys 0m0.66s $ bc 400*8/7.61 420 # kbytes / second for sequential ^D $ It's probable that you are doing radom I/O so I wrote a little program that uses rand(3) to calulate the offset into the drive (see below) and that gives me about 180 Kb / sec (you can really hear the old head seeking). This assumes that I need all of the 8k block that I read. If you have smaller records, you'll get worse throughput. For example, if you only need one byte of that 8k, your throughput goes down by a factor of 8192. Here's the random program (start/stop/ptime are timing utils): #include int blks; main(ac, av) char **av; { int fd; int disksize; char buf[8192]; int done(); disksize = atoi(av[2]); /* blocks */ srand(3962); /* my birthday */ signal(SIGINT, done); start(); fd = open(av[1], 0); for (blks = 0; ; blks++) { lseek(fd, (rand() % disksize) * 8192, 0); if (read(fd, buf, sizeof buf) != sizeof buf) break; } done(); } done() { stop(); ptime(blks); exit(0); } --- What I say is my opinion. I am not paid to speak for Sun, I'm paid to hack. Besides, I frequently read news when I'm drjhgunghc, err, um, drunk. Larry McVoy, Sun Microsystems (415) 336-7627 ...!sun!lm or lm@sun.com