Skip site navigation (1)Skip section navigation (2)
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>