vxfs 5.1sp1 solaris 10u9 qio not makes asynch read oracle 11.2.0.2

From: Ujang Jaenudin <ujang.jaenudin_at_gmail.com>
Date: Thu, 22 Mar 2012 13:04:07 +0700
Message-ID: <CABcgmSFT_9-P47rid51J6Q=THrK7iGPF4Vt2ns5pKsfOgs7i0Q_at_mail.gmail.com>



dear all,
I have a puzzle things for this environment.

I tested create table as select/CTAS (the original table is on QIO file) it looks no kaio AIOREAD, but uses pread (synchronous IO).

play with db parameter:
filesystemio_options
disk_asynch_io

has no effects.

anyone had same experiences?
do you think oracle has some issues on this veritas QIO to use kaio AIOREAD ?

# /opt/VRTS/bin/qiomkfile -h 32k -s 200m /data01/zzztest1.dbf
# ls -al
# chown oracle:dba .filename
# chmod 660 .filename

sqlplus / as sysdba
create tablespace zzz datafile '/data01/zzztest1.dbf' size 200m autoextend off;

create table zzz tablespace zzz as select * from dba_objects; shutdown immediate
startup

truss for this CTAS:

create table zzz2 tablespace zzz as select * from zzz;

this system calls occured:
......
........

28355:  pollsys(0xFFFFFFFF7FFE81E0, 1, 0xFFFFFFFF7FFE7A50, 0x00000000) = 0
28355:  times(0xFFFFFFFF7FFEA5E0)                       = 360981539
28355:  times(0xFFFFFFFF7FFEBA50)                       = 360981539
28355:  times(0xFFFFFFFF7FFEB7D0)                       = 360981539
28355:  times(0xFFFFFFFF7FFEB4D0)                       = 360981539
28355:  open("/data01/zzztest1.dbf", O_RDWR|O_NDELAY|O_DSYNC|O_NONBLOCK) =
10
28355:  getrlimit(RLIMIT_NOFILE, 0xFFFFFFFF7FFEBD30)    = 0
28355:  fcntl(10, F_DUPFD, 0x00000100)                  = 258
28355:  close(10)                                       = 0
28355:  fcntl(258, F_SETFD, 0x00000001)                 = 0
28355:  pread(258, " #A2\0\0 %800582 -EFC3BD".., 8192, 11550720) = 8192
28355:  times(0xFFFFFFFF7FFEE9F0)                       = 360981539
...
...
28355/2:        lwp_create()    (returning as new lwp ...)      = 0
28355/1:        lwp_continue(2)                                 = 0
28355/2:        setustack(0xFFFFFFFF7BD00AC0)
28355/1:        lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) =
0xFFBFFEFF [0x0000FFFF]
28355/2:        schedctl()                                      =
0xFFFFFFFF7DF70010
28355/1:        kaio(AIOWRITE, 258, 0xFFFFFFFF7A01F000, 106496,
0x015060007A475C50) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pread(258, "06A2\0\0 %800598 -EFC3 q".., 65536, 11730944) =
65536
28355/1:        times(0xFFFFFFFF7FFF35C0)                       = 360981614
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pollsys(0xFFFFFFFF7FFF2B30, 1, 0xFFFFFFFF7FFF23A0,
0x00000000) = 0
28355/1:        pread(258, "06A2\0\0 %8005A1 -EFC3 v".., 57344, 11804672) =
57344
28355/1:        times(0xFFFFFFFF7FFF35C0)                       = 360981615


test small c as this URL, and it works for AIOREAD.

http://www.symantec.com/business/support/index?page=content&pmv=print&impressions=&viewlocale=&id=TECH70327



aio.c

#include <sys/asynch.h>
#include <sys/fcntl.h>
#include <stdio.h>

#define BSIZE 1024

main(int argc, char *argv[])
{
aio_result_t res;
char buf[BSIZE];
int fd;

if ((fd=open(argv[1], O_RDONLY)) == -1) { perror("open");
exit(-1);
}
aioread(fd, buf, BSIZE, 0L, SEEK_SET, &res); aiowait(0);
if (res.aio_return == BSIZE) {
printf("aio succeeded\n");
close(fd);

exit(0);
}
perror("aio");
}

Compile:
#gcc -o aio -laio aio.c

/opt/VRTSvxfs/sbin/qiomkfile -s 1m /data01/qio/qio_file

bash-3.2# cd /data01/qio/
bash-3.2# #dd if=/dev/zero of=normal_file bs=1024k count=1
bash-3.2# ls -l
total 0
lrwxrwxrwx   1 root     root          21 Mar 22 12:44 qio_file ->
.qio_file::cdev:vxfs:
bash-3.2# pwd
/data01/qio
bash-3.2# ls
qio_file
bash-3.2# ls -a
. .. .qio_file qio_file bash-3.2# pwd
/data01/qio

bash-3.2# dd if=/dev/zero of=normal_file bs=1024k count=1 1+0 records in
1+0 records out
bash-3.2# ls -l
total 2048

-rw-r--r--   1 root     root     1048576 Mar 22 12:45 normal_file
lrwxrwxrwx   1 root     root          21 Mar 22 12:44 qio_file ->
.qio_file::cdev:vxfs:

bash-3.2# truss -t kaio,lwp_create /u01/oracle/qio/aio /data01/qio/normal_file
kaio(5, 0x00000000, 0xFF368540, 0xFF368844, 0x00010000, 0x00000000, 0x000ED3DC) = 0
lwp_create(0xFFBFF548, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED, 0xFFBFF544) = 2

/1:     kaio(AIOREAD, 3, 0xFFBFF9B8, 1024, 0, 0xFFBFFDB8) Err#81 EBADFD
/2:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 3
/3:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 4
/4:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 5
/5:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 6
/6:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 7
/7:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 8
/8:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 9
/9:     lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 10
/10:    lwp_create()    (returning as new lwp ...)      = 0
/1:     lwp_create(0xFFBFF4D8, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED,
0xFFBFF4D4) = 11
/11:    lwp_create()    (returning as new lwp ...)      = 0
/1:     kaio(AIOWAIT, 0x00000000)                       = 1
/4:     kaio(AIONOTIFY, 1)                              = 0
aio succeeded

bash-3.2# truss -t kaio,lwp_create /u01/oracle/qio/aio /data01/qio/qio_file

kaio(5, 0x00000000, 0xFF368540, 0xFF368844, 0x00010000, 0x00000000, 0x000ED3DC) = 0
lwp_create(0xFFBFF548, LWP_DAEMON|LWP_DETACHED|LWP_SUSPENDED, 0xFFBFF544) = 2

/2:     lwp_create()    (returning as new lwp ...)      = 0
/1:     kaio(AIOREAD, 3, 0xFFBFF9B8, 1024, 0, 0xFFBFFDB8) = 0
/1:     kaio(AIOWAIT, 0x00000000)                       = -4194888
aio succeeded
bash-3.2#
-- 
regards,

ujang jaenudin
databases independent consultant
http://ora62.wordpress.com
jakarta - Indonesia


--
http://www.freelists.org/webpage/oracle-l
Received on Thu Mar 22 2012 - 01:04:07 CDT

Original text of this message