Re: Slower performance after enabling async io on Oracle Linux

From: Matthias Hoys <matthias.hoys_at_gmail.com>
Date: Wed, 16 May 2012 06:55:18 -0700 (PDT)
Message-ID: <7993272.1167.1337176518258.JavaMail.geo-discussion-forums_at_vbbhi10>



On Wednesday, May 16, 2012 2:41:32 PM UTC+2, Mladen Gogala wrote:
> Yup, with the "async" option, you have time waited for sequential read as
> 242.64 and for scattered read as 4.93 while without async the time for
> single block IO is 84.01 and for scattered read 7.05. The worst problem
> is for single block IO, while scattered read is even slightly faster than
> the synchronous version. If I am allowed to guess, the problem is
> caching. You may want to turn off direct IO and just leave async IO and
> to set the read ahead on the block devices, with blockdev --setra.
> As I have previously said, async I/O on Linux leaves a lot to be desired,
> especially when the network is involved.
>

You are right. It was the direct I/O that was causing the problems. I now only enabled async I/O by setting filesystemio_options to ASYNCH and disk_asynch_io to TRUE, and I now have a performance which is about 10% faster than disabling everything:

Elapsed times include waiting on following events:

  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  db file sequential read                    154100        1.81         62.99
  reliable message                              138        0.00          0.06
  log file switch (checkpoint incomplete)         2        0.02          0.04
  log buffer space                                8        4.06          8.41
  latch: cache buffers chains                     1        0.00          0.00
  latch: cache buffers lru chain                  5        0.00          0.00
  write complete waits                            1        0.96          0.96
  db file parallel read                        1431        0.03          1.34
  db file scattered read                       2589        0.02          3.51
  asynch descriptor resize                        1        0.00          0.00
  log file switch completion                      2        0.03          0.06
  library cache: mutex X                          1        0.00          0.00
  latch: object queue header operation            2        0.00          0.00
  SQL*Net break/reset to client                   2        0.00          0.00

       1  session in tracefile.
      11  user  SQL statements in trace file.
      15  internal SQL statements in trace file.
      26  SQL statements in trace file.
      21  unique SQL statements in trace file.
 5576643  lines in trace file.
     355  elapsed seconds in trace file.

Nice one :-)

Thanks,
Matthias Received on Wed May 16 2012 - 08:55:18 CDT

Original text of this message