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

Home -> Community -> Mailing Lists -> Oracle-L -> RE: Async I/O question

RE: Async I/O question

From: John Kanagaraj <john.kanagaraj_at_hds.com>
Date: Wed, 08 May 2002 16:53:20 -0800
Message-ID: <F001.0045C458.20020508165320@fatcity.com>


Diego,  

It has been many moons since I last touched an AIX box, but I remember that you have to configure AIO servers separately using SMIT AIO. (And possiblly bounce the server?). How many 'kproc' processes do you see from a 'ps -ef' ?
(or was that 'ps -el'?). You might not be having the right amount of AIO
servers. Also check for AIX patches in the IUG guide .... You could also check the system error log using 'errpt -a'.  

John Kanagaraj
Oracle Applications DBA
DB Soft Inc
Work : (408) 970 7002

Listen to great, commercial-free christian music 24x7x365 at http://www.klove.com <http://www.klove.com/>

-----Original Message-----
Sent: Wednesday, May 08, 2002 11:29 AM
To: Multiple recipients of list ORACLE-L

Hi list.  

Oracle 7.3.4.5
IBM 4.3.3
Raw devices based datafiles
use_async_io=TRUE  

While the database was processing some long update, I traced the LGWR proccess with SCTRACE utility (like truss in solaris or HP) and I got the following dump:  

LGWR proccess  

unknown297(0x1, 0x2ff0cfa8, 0x30, 0x2ff0cfa0, 0x2ff0ed00) -> 0 times(0x2ff20fd8) -> 77507556 (0x49eabe4)   0x2ff20fd8:

    0000: 00000015 000001e1 00000000 00000000 |................|
times(0x2ff21068) -> 77507556 (0x49eabe4)   0x2ff21068:
    0000: 00000015 000001e1 00000000 00000000 |................|
times(0x2ff212c8) -> 77507556 (0x49eabe4)   0x2ff212c8:
    0000: 00000015 000001e1 00000000 00000000 |................|
times(0x2ff212c8) -> 77507556 (0x49eabe4)   0x2ff212c8:
    0000: 00000015 000001e1 00000000 00000000 |................|
times(0x2ff21018) -> 77507556 (0x49eabe4)   0x2ff21018:
    0000: 00000015 000001e1 00000000 00000000 |................|
times(0x2ff21068) -> 77507556 (0x49eabe4)   0x2ff21068:
    0000: 00000015 000001e1 00000000 00000000 |................|
unknown297(0x1, 0x2ff0cfa8, 0x3, 0x2ff0cfa0, 0x2ff0e058) -> 0 times(0x2ff20fd8) -> 77507557 (0x49eabe5)   0x2ff20fd8:
    0000: 00000015 000001e1 00000000 00000000 |................|
times(0x2ff21068) -> 77507557 (0x49eabe5)   0x2ff21068:
    0000: 00000015 000001e1 00000000 00000000 |................|

and it keeps going.....  

I asume that unknown297() system call is the writting call here, as times() unknown297() and are the only calls that appear in the trace.  

After this testing I did the same trace in an Oracle database 7.3.4.5
File system based datafiles
AIX 4.3.3 (same box)
use_async_io = TRUE  

And I got the following output:  

LGWR proccess  

unknown297(0xa, 0, 0x4000982c, 0x1, 0x20034c78) -> -1 EINTR(4) (Interrupted system call)
times(0x2ff21438) -> 45035290 (0x2af2f1a)   0x2ff21438:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff215c8) -> 45035290 (0x2af2f1a)   0x2ff215c8:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| kwaitpid(0x2ff21520, -1, 0x5, 0x00000000) -> -1 ECHILD(10) (No child processes)
kill(27736, SIG 0(0)) -> 0
times(0x2ff215c8) -> 45035290 (0x2af2f1a)   0x2ff215c8:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff21478) -> 45035290 (0x2af2f1a)   0x2ff21478:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| unknown297(0x12c, 0, 0x4000982c, 0x1, 0x20034c78) [unknown297] -> 0
times(0x2ff21438) -> 45035477 (0x2af2fd5)   0x2ff21438:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff21398) -> 45035477 (0x2af2fd5)   0x2ff21398:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff21398) -> 45035477 (0x2af2fd5)   0x2ff21398:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff210e8) -> 45035477 (0x2af2fd5)   0x2ff210e8:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff21138) -> 45035477 (0x2af2fd5)   0x2ff21138:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| kwrite(15, 0x4213be00, 55296) -> 55296 (0xd800) times(0x2ff210a8) -> 45035479 (0x2af2fd7)   0x2ff210a8:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff21138) -> 45035479 (0x2af2fd7)   0x2ff21138:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| unknown297(0xa650, 0xc08, 0, 0x5, 0x420315b4) -> 0 times(0x2ff21398) -> 45035479 (0x2af2fd7)   0x2ff21398:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff21398) -> 45035479 (0x2af2fd7)   0x2ff21398:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff210e8) -> 45035479 (0x2af2fd7)   0x2ff210e8:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| times(0x2ff21138) -> 45035479 (0x2af2fd7)   0x2ff21138:
    0000: 0000002d 00000175 00000000 00000000 |...-...u........| kwrite(15, 0x42149600, 59904) -> 59904 (0xea00) kwrite(15, 0x42130000, 48128) -> 48128 (0xbc00)      

As you can see kwrite, klseek, etc are used here. My questions are:  

Is unknown297 system call related to KAIO system calls?  

Is kwrite related to Threaded Async I/O (the ones that uses the AIO servers) ?  

If I'm correct about what I've said before, I must assume that the unknown297 system calls that I see
in the second trace (FS based datafiles) are Oracle attemps to use KAIO (may be because
use_async_io is set to TRUE), and after these attemps have failed, Oracle uses kwrite
system call instead(Threaded Async I/O) Is this correct?    

If anyone can help, I'd greatly appreciate it.  

thanks in advance
Greetings
DC  

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: John Kanagaraj
  INET: john.kanagaraj_at_hds.com

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L

(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).
Received on Wed May 08 2002 - 19:53:20 CDT

Original text of this message

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