Date: Thu, 11 Nov 1999 22:40:08 -0500 From: Simon Shapiro <shimon@simon-shapiro.org> To: "Kenneth D. Merry" <ken@kdm.org> Cc: Randell Jesup <rjesup@wgate.com>, freebsd-arch@freebsd.org Subject: Re: I/O Evaluation Questions (Long but interesting!) Message-ID: <382B8C18.DD84F967@simon-shapiro.org> References: <199911120116.SAA30871@panzer.kdm.org>
next in thread | previous in thread | raw e-mail | index | archive | help
"Kenneth D. Merry" wrote: > > [ Simon: the "charset = " (i.e. nothing) line your mail makes my mailer > barf. You may want to adjust your character set. ] [ Am using Netscape Messenger. Know not how to do that (no relevant preference found :-( ] > Simon Shapiro wrote... > > Randell Jesup wrote: > > > Second, could they be (for large IO's) transferring directly > > > into user memory, bypassing all buffers (I haven't really been following > > > the discussion; a good trick is to do direct DMA into the destination > > > buffer - it also allows you to use large commands to the drive (less > > > command overhead). Saving a memory-to-memory copy counts at those speeds. > > > > This happens in FreeBSD on raw I/O. I belive some work was done > > to do that on block i.o too (something to do with zero copy > > in vm... > > I think you may get this behavior if you turn on the ENABLE_VFS_IOOPT > option, and then 'sysctl -w vfs.ioopt=1'. It only works for page-sized and > page-aligned buffers, though. (see sys/ufs/ufs/ufs_readwrite.c) I'll try that. Thanx. > I'm not sure how often that kicks in in normal operation. Someone else > might know. > > > > Unlikely, though, and very tricky. (Interesting idea, though - > > > pseudo-mmap.) They also could set up the DMA, and mark the pages in the > > > page table so that you'll fault if you try to access them, and then undo > > > the mark when the IO is done (or as each N pages of the IO is done make > > > those N pages accessible). There are many cute tricks here... > > > > > > What hardware do you have that gives 100MB/s or more??? > > > > (bragging corner: 167 read, 138 write :-) DPT PM3755U2B with > > 256MB of ECC cache in a Dell PowerEdge 1300/600. > > FreeBSD RELENG_3, single CPU running. > > How can you get speeds like that with just a 32-bit PCI bus? The specs for > the PowerEdge 1300 say it has 5 32-bit PCI slots: These numbers are for block devices. The kernel obviously caches some of this. I should look next time at emory usage; The machine has 1GB of memory. The dataset is about 15GB per array. I am getting about 120MB/Sec form the PCI bus. Raw disks perfromance is totally throttled by physics; We are running at about 200% of Seagate specs. I am running into some strange situations. Perhaps some light can be shed; ... int result; ... result = tsleep(lock, PRII2O | PCATCH, "i2olck", wait); switch (result) { ... } The above runs correctly. switch(result = tsleep(lock, PRII2O | PCATCH, "i2olck", wait)) { This line crashes with an invalid pointer in tsleep(). > http://www.dell.com/us/en/biz/products/spec_wrkgp_1300_servers.htm > > Ken > -- > Kenneth Merry > ken@kdm.org -- Sincerely Yours, Shimon@Simon-Shapiro.ORG 404.664.6401 Simon Shapiro Unwritten code has no bugs and executes at twice the speed of mouth To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?382B8C18.DD84F967>