Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: sun solaris and direct io

Re: sun solaris and direct io

From: hopehope_123 <hopehope_123_at_yahoo.com>
Date: 4 Jun 2005 00:38:59 -0700
Message-ID: <1117870739.458093.241110@f14g2000cwb.googlegroups.com>


Hi ,

Thanks for your mail. I have already tuned my ufs file system :

My page size is 8K.

 mkfs -m /dev/dsk/c2t16d65s0
mkfs -F ufs -o
nsect=64,ntrack=120,bsize=8192,fragsize=1024,cgsize=14,free=1,rps=90,nbpi=8239,opt=t,apc=0,gap=0,nrpos=8,maxcontig=128 /dev/dsk/c2t16d65s0 427683840

Maxcontig is 128 which makes the cluster size : 8k*128 = 1mb. This means each io operation requests 1mb. data from the underlying disk system.,

and , maxphys is :

set maxphys=8388608 in /etc/system.

and my file system is mounted without directio:

/data on /dev/dsk/c2t16d65s0
read/write/setuid/intr/noforcedirectio/largefiles/xattr/onerror=panic/dev=800288 on pers Haz 2 17:03:38 2005

With these values , os commands such as dd or mkfile can read or write upto 1mb. per io operation.

On the other hand , at database server , i test full table scans by using parallel query (instead of db scatterred read oracle uses direct path read for parallel full table scans , and bypasses the buffer cache.)

my db_file_multi_block_read_count is 128 , with 8k. db_block_size this is equal to 1mb. read in p3.

-On most systems, you should be able to get 128 for 8K blocks - that
-usually is the max IO size you can possibly get. Otherwise, you can
-only get as many blocks as your file system buffer allows which varies

-from 8K to 256K ( or 1 to 32 for p3 value ) depending on OS and file
-system type. I did this for my database and am able to get
-128 on my P3 value. With that I am sure it is doing DIO. Without it,
-with Dicovered DIO (default) with my Varitus FS, I can only get 32.
-If I use Sun straight UFS (2.8) without DIO, I can only get 1.

Isnt it 1mb. possible?And most importantly , i think direct io cant be really distinguished from the buffered io by checking the amount of data transferred. With or without direct io , on my sun box , i can see up to 1mb. read/write values:

This is a little test:

When i mount the filesystem with directio enabled:

verdenfs1_at_root/data/spss/oracle #timex dd if=/dev/zero of=test bs=1048576 count=80
80+0 records in
80+0 records out

real        1.56
user        0.00
sys         0.14

                  extended device statistics
device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b
sd0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd16         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd81         0.0   66.0    0.0 53442.3  0.0  0.9   14.4   0  93


Here i have about 800kb. per write.

Without direct io:

bash-2.05$ timex dd if=/dev/zero of=test bs=1048576 count=80 80+0 records in
80+0 records out

real        0.76
user        0.00
sys         0.55


                  extended device statistics
device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b
sd0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd16         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd81         0.0   57.0    0.0 41549.1  0.8  5.0  102.4   3  47



more or less same value.

Kind Regards,
hope Received on Sat Jun 04 2005 - 02:38:59 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US