T.R | Title | User | Personal Name | Date | Lines |
---|
9641.1 | | NABETH::alan | Dr. File System's Home for Wayward Inodes. | Mon Apr 28 1997 15:55 | 15 |
| It depends on what the disk is connected to. If directly
connected to a SCSI adapter it should be 16 MB - 1 byte.
Since disks prefer to transfer multiples of sectors, it
would end up at 16,776,704 bytes. To do an I/O that size
to a raw device you'd:
rc = read(fd, buffer, 16776704) ;
where, the fd is a file descriptor for the open device. And,
if the device doesn't happen to support I/Os that large, the
driver should take care of breaking it up into smaller I/Os.
For disks connect through an HSZ, the maximum I/O size is
64 KB. MSCP may be 64 KB as well, but that would be driver
limit instead of an architecture limit. I'm not sure about
the backplane RAID controllers.
|
9641.2 | a quick comment | ALFAM7::GOSEJACOB | | Tue Apr 29 1997 05:19 | 14 |
| re .0
I guess one of the critical points here is: to how many KZPSA's can the
EMC system be hooked up to?
There are several layers in the Unix kernel limiting a single I/O to
64 KB: UFS, LSM, drd. And if I remember correctly the Oracle kernel
itself limits raw I/O's to 64KB. So even using a database block size
of 32KB will not get you past the 64KB limit.
BTW. the 200MB/sec on the Sun was that number monitored while Oracle
was accessing the disks or was that some artificial I/O load? In any
case that number isn't too shabby.
Martin
|
9641.3 | Oracle I/O limit 128KB (not 64KB) | ALFAM7::GOSEJACOB | | Tue Apr 29 1997 10:06 | 13 |
| re .2
OK so much for opening my big mouth before checking again. I just tried
a recent release of Oracle (7.3.2) and found the hardcoded limit for
read I/O is 128KB (not 64KB). I tried with 2 db_block_size settings and
the Oracle kernel will automatically limit the
db_file_multiblock_read_count parameter; with:
db_file_multiblock_read_count * db_block_size <= 128KB
I also checked the I/O transfer size and yes when Oracle reads from a
raw disk (no LSM, drd, or the like) I actually see 128KB reads.
Martin
|
9641.4 | Patching volinfo.max_io may help to LSM bw ! | SPANIX::JULIANR | ALPHAbet = Our bet on ALPHA | Tue Apr 29 1997 14:50 | 28 |
| Martin,
we were told by Oracle Presales Support here in Spain that such limit is
platform dependant. They also told us that 128 KB is the limit for Sun
Solaris. For Digital UNIX on Alpha they thought there is a hidden way (?) to
set it up to something higher. Hopefully, they are looking how to do it (?)
Regarding the configuration we're going to use in the benchmark, we will
use most of the EMC disks and partitions in raw mode without LSM. It's a
single machine, so there's not any DRD service. We are going to use 32
KZPSA connected to 32 FWD ports in the Symmetrix.
By the way, in the HiTest configuration material for Oracle Data
Warehousing, they reveal a way to increase the 64 KB limit of LSM by
patching the UNIX kernel in the following way:
# kdbx -k /vmunix /dev/mem
(kdbx) p volinfo.max_io
(kdbx) patch volinfo.maix_io 640
(kdbx) quit
This is to get a maximum single I/O transfer size of 640 physical blocks,
512 KB each.
Best regards,
Juli�n Rodr�guez
Digital Spain Technical Presales - UNIX Ambassador
DTN: 874-4192
|
9641.5 | | XIRTLU::schott | Eric R. Schott USG Product Management | Tue Apr 29 1997 16:57 | 22 |
| Hi
I think there are limits in both CAM and LSM for 64KB default
I/O size. These can be changed by changing the variables either
via sysconfigtab or dbx.
Note that this needs to be done in both places (if you are using both),
and one needs to be sure the SCSI device/controller being used
can handle this.
In general, patching the kernel won't be the big win in this...the main
thing is that the application does multiple I/Os, that are reasonably
large, such that we can keep the device busy.
You can't guarrantee device behaviour in all this due to things
like caching, disk banding, bad block replacement...etc...so again,
the application and how it does I/O is the key component...
LSM is generally important to allow striping across multiple
controllers.
|