Solved

aix concurrent io 5.3

Posted on 2014-01-16
11
724 Views
Last Modified: 2014-01-16
We have an AIX 5.3 that hosts our database .we would like to confirm that we have concurrent IO enabled how would we check that?
0
Comment
Question by:it-rex
  • 6
  • 5
11 Comments
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 39786091
To check whether a filesystem is mounted with cio enabled issue

mount

You should see "cio" in the "options" column for a concurrent I/O enabled filesystem.

lsfs -q

should also have that info,

and the /etc/filesystems file should have "cio" in the "options" field under the relevant filesystem stanza if this options is to be used by default.

I/O on files opened in a file system mounted that way will behave as if the files had been opened with O_CIO specified in the open() system call.

Performing CIO on files opened without that option consequently requires that these files were opened with O_CIO specified in the open() system call by your database application. This cannot easily be checked by means of OS commands.

However, for example Oracle (as opposed to e.g. Informix)  has no builtin CIO feature, so to make Oracle perform CIO on Oracle datafiles you must explicitly mount the relevant FS with CIO.
0
 
LVL 11

Author Comment

by:it-rex
ID: 39786182
how does this look like


mount
  node       mounted        mounted over    vfs       date        options      
-------- ---------------  ---------------  ------ ------------ ---------------
         /dev/hd4         /                jfs2   Jan 15 23:07 rw,log=/dev/hd8
         /dev/hd2         /usr             jfs2   Jan 15 23:07 rw,log=/dev/hd8
         /dev/hd9var      /var             jfs2   Jan 15 23:07 rw,log=/dev/hd8
         /dev/hd3         /tmp             jfs2   Jan 15 23:07 rw,log=/dev/hd8
         /dev/hd1         /home            jfs2   Jan 15 23:10 rw,log=/dev/hd8
         /proc            /proc            procfs Jan 15 23:10 rw              
         /dev/hd10opt     /opt             jfs2   Jan 15 23:10 rw,log=/dev/hd8
         /dev/fslv00      /slac            jfs2   Jan 15 23:10 rw,log=/dev/hd8
         /dev/lv245001    /u001            jfs2   Jan 15 23:10 rw,log=/dev/loglv00
         /dev/lv245004    /u006            jfs2   Jan 15 23:10 rw,log=/dev/loglv03
         /dev/lv245005    /u004            jfs2   Jan 15 23:10 rw,rbw,rbr,log=/dev/loglv04
         /dev/fslv01      /esm             jfs2   Jan 15 23:10 rw,log=/dev/loglv03
         /dev/lv245002    /u005            jfs2   Jan 15 23:10 rw,log=/dev/loglv01
         /dev/lv245003    /u015            jfs2   Jan 15 23:10 rw,log=/dev/loglv02
         /dev/lv003       /u003            jfs2   Jan 15 23:10 rw,log=/dev/fsfsfsfsfsfsfsf
         /dev/lv245010    /u010            jfs2   Jan 15 23:10 rw,log=/dev/loglv05
         /dev/lv245013    /u013            jfs2   Jan 15 23:10 rw,log=/dev/loglv06
          /shared          /shared          nfs3   Jan 15 23:10 rw,bg,soft,intr,vers=3,sec=sys


lsfs -q
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/hd4        --         /                      jfs2  1048576 --         yes  no
/dev/hd1        --         /home                  jfs2  3604480 --         yes  no
/dev/hd2        --         /usr                   jfs2  4980736 --         yes  no
/dev/hd9var     --         /var                   jfs2  2097152 --         yes  no
/dev/hd3        --         /tmp                   jfs2  2097152 --         yes  no
/proc           --         /proc                  procfs --      --         yes  no
/dev/hd10opt    --         /opt                   jfs2  720896  --         yes  no
/dev/fslv00     --         /slac                  jfs2  4194304 rw         yes  no
/shared         xxxxxxx   /shared                nfs   --      rw,bg,soft,intr,vers=3,sec=sys yes  no
/dev/lv245001   --         /u001                  jfs2  62062592 rw         yes  no
/dev/lv245004   --         /u006                  jfs2  20807680 rw         yes  no
/dev/lv245005   --         /u004                  jfs2  418250752 rbrw,rw    yes  no
/dev/fslv01     --         /esm                   jfs2  3375104 rw         yes  no
/dev/lv245002   --         /u005                  jfs2  62259200 rw         yes  no
/dev/lv245003   --         /u015                  jfs2  62259200 rw         yes  no
/dev/lv003      --         /u003                  jfs2  19321585664 rw         yes  no
/dev/lv245010   --         /u010                  jfs2  21466447872 rw         yes  no
/dev/lv245013   --         /u013                  jfs2  2100035584 rw         yes  no
0
 
LVL 68

Accepted Solution

by:
woolmilkporc earned 500 total points
ID: 39786197
No CIO anywhere.
The filesystems shown have all been mounted the standard way, with the exception of /u004 which is mounted with release-behind-when-reading and release-behind-when-writing capabilities (not related to CIO).
0
 
LVL 11

Author Comment

by:it-rex
ID: 39786249
so we do not have this benefit here ummm!!
so what exactly is the difference between concurrent IO and async IO?
is it worth enableing in busy systems?
0
 
LVL 11

Author Comment

by:it-rex
ID: 39786258
is it the same at this system too

mount
  node       mounted        mounted over    vfs       date        options      
-------- ---------------  ---------------  ------ ------------ ---------------
         /dev/hd4         /                jfs2   Oct 19 23:09 rw,log=/dev/hd8
         /dev/hd2         /usr             jfs2   Oct 19 23:09 rw,log=/dev/hd8
         /dev/hd9var      /var             jfs2   Oct 19 23:09 rw,log=/dev/hd8
         /dev/hd3         /tmp             jfs2   Oct 19 23:09 rw,log=/dev/hd8
         /dev/hd1         /home            jfs2   Oct 19 23:09 rw,log=/dev/hd8
         /proc            /proc            procfs Oct 19 23:09 rw              
         /dev/hd10opt     /opt             jfs2   Oct 19 23:09 rw,log=/dev/hd8
       
         /dev/slaclv      /slac            jfs2   Oct 19 23:09 rw,log=/dev/hd8
         /dev/lv2951011   /esm             jfs2   Oct 19 23:09 rw,log=/dev/loglv00
         /dev/lv2951012   /home/axway      jfs2   Oct 19 23:09 rw,log=/dev/loglv00
         /dev/lv2951013   /axway           jfs2   Oct 19 23:09 rw,log=/dev/loglv00
         /dev/lv2951014   /xip             jfs2   Oct 19 23:09 rw,log=/dev/loglv00
         /dev/lv2951015   /u001            jfs2   Oct 19 23:09 rw,log=/dev/loglv00
         /dev/lv2951071   /u020            jfs2   Oct 19 23:09 rw,log=INLINE  

         /dev/lv2951031   /u003            jfs2   Oct 19 23:27 rw,log=/dev/fsfsfsfsloglv02
         /dev/lv2951051   /u010            jfs2   Oct 19 23:27 rw,log=/dev/lv00
         /dev/lv2951021   /u002            jfs2   Oct 19 23:37 rw,log=/dev/loglv01
         /dev/lv2951023   /u004            jfs2   Oct 19 23:37 rw,rbw,rbr,log=/dev/loglv01
         /dev/lv2951024   /u005            jfs2   Oct 19 23:37 rw,log=/dev/loglv01
         /dev/ls2951026   /u007            jfs2   Oct 19 23:37 rw,log=/dev/loglv01
         /dev/lv2951025   /u015            jfs2   Oct 19 23:37 rw,log=/dev/loglv01
         /dev/lv2951061   /x001            jfs2   Oct 19 23:37 rw,log=INLINE  
         /dev/lv2951042   /u102            jfs2   Oct 19 23:37 rw,log=/dev/loglv03
         /dev/lv2951041   /u103            jfs2   Oct 19 23:37 rw,log=/dev/loglv03
         /dev/lv2951043   /u104            jfs2   Oct 19 23:37 rw,rbw,rbr,log=/dev/loglv03
         /dev/lv2951044   /u105            jfs2   Oct 19 23:37 rw,log=/dev/loglv03
         /dev/lv2951046   /u110            jfs2   Oct 19 23:37 rw,log=/dev/loglv03
         /dev/lv2951045   /u115            jfs2   Oct 19 23:37 rw,log=/dev/loglv03
         /dev/lv2951022   /home/        jfs2   Dec 12 13:04 rw,log=INLINE  
         
         
         
         
         

         lsfs -q
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/hd4        --         /                      jfs2  1048576 --         yes  no
/dev/hd4: Permission denied
/dev/hd1        --         /home                  jfs2  5177344 --         yes  no
/dev/hd1: Permission denied
/dev/hd2        --         /usr                   jfs2  7536640 --         yes  no
/dev/hd2: Permission denied
/dev/hd9var     --         /var                   jfs2  3342336 --         yes  no
/dev/hd9var: Permission denied
/dev/hd3        --         /tmp                   jfs2  4194304 --         yes  no
/dev/hd3: Permission denied
/proc           --         /proc                  procfs --      --         yes  no
/dev/hd10opt    --         /opt                   jfs2  2097152 --         yes  no
/dev/hd10opt: Permission denied
/dev/livedump   --         /var/adm/ras/livedump  jfs2  524288  --         yes  no
/dev/livedump: Permission denied
/dev/slaclv     --         /slac                  jfs2  4194304 rw         yes  no
/dev/slaclv: Permission denied
/dev/lv2951011  --         /esm                   jfs2  3145728 rw         yes  no
/dev/lv2951011: Permission denied
/dev/lv2951012  --         /home/axway            jfs2  3145728 rw         yes  no
/dev/lv2951012: Permission denied
/dev/lv2951013  --         /axway                 jfs2  3145728 rw         yes  no
/dev/lv2951013: Permission denied
/dev/lv2951014  --         /xip                   jfs2  3145728 rw         yes  no
/dev/lv2951014: Permission denied
/dev/lv2951015  --         /u001                  jfs2  88342528 rw         yes  no
/dev/lv2951015: Permission denied
/shared         sy02131    /shared                nfs   --      bg,intr,vers=4,sec=sys yes  no
/dev/lv2951021  --         /u002                  jfs2  65011712 rw         no   no
/dev/lv2951021: Permission denied
/dev/lv2951023  --         /u004                  jfs2  591396864 rbrw,rw    no   no
/dev/lv2951023: Permission denied
/dev/lv2951024  --         /u005                  jfs2  60817408 rw         no   no
/dev/lv2951024: Permission denied
/dev/lv2951025  --         /u015                  jfs2  60817408 rw         no   no
/dev/lv2951025: Permission denied
/dev/lv2951041  --         /u103                  jfs2  200015872 rw         no   no
/dev/lv2951041: Permission denied
/dev/lv2951042  --         /u102                  jfs2  40108032 rw         no   no
/dev/lv2951042: Permission denied
/dev/lv2951043  --         /u104                  jfs2  60030976 rbrw,rw    no   no
/dev/lv2951043: Permission denied
/dev/lv2951044  --         /u105                  jfs2  40108032 rw         no   no
/dev/lv2951044: Permission denied
/dev/lv2951045  --         /u115                  jfs2  40108032 rw         no   no
/dev/lv2951045: Permission denied
/dev/lv2951046  --         /u110                  jfs2  200015872 rw         no   no
/dev/lv2951046: Permission denied
/dev/ls2951026  --         /u007                  jfs2  10485760 rw         no   no
/dev/ls2951026: Permission denied
/dev/lv2951061  --         /x001                  jfs2  1046478848 rw         no   no
/dev/lv2951061: Permission denied
/dev/lv2951071  --         /u020                  jfs2  2096103424 --         yes  no
/dev/lv2951071: Permission denied
/dev/lv2951031  --         /u003                  jfs2  8589934592 rw         no   no
/dev/lv2951031: Permission denied
/dev/lv2951051  --         /u010                  jfs2  8589934592 rw         no   no
/dev/lv2951051: Permission denied
/dev/lv2951022  --         /home/mmfeed           jfs2  10485760 rw         no   no
/dev/lv2951022: Permission denied
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 68

Expert Comment

by:woolmilkporc
ID: 39786360
Under CIO, multiple threads may simulteanously perform reads and writes
on a shared file.
Applications must be able to enforce serialization when using CIO,
to avoid possible data corruption or performance issues.
Most, if not all, database servers do serialization on their own and can use CIO for their datafiles and redo logs (NOT for binaries (!) or other regular files and archivelogs).

AIO implements quite a different mechanism.

Synchronous I/O requires a disk operation, and applications cannot continue until the I/O operation is complete.

Asynchronous I/O allows applications to perform read or write operations without being blocked, since all I/O operations are done in background.
I/O operations and application processing can thus run simultaneously which can give a huge performance gain (particularly with Oracle).

Asynchronous I/O on filesystems is handled through kernel processes
(aioserver), and each I/O is handled by a single kernel process. The minimum and maximum numbers of aioserver processes are configurable.

Oracle has ain initialization parameter DISK_ASYNCH_IO, and if this parameter is "TRUE" and if AIO is available Oracle uses AIO transparently without further notification or the like.

Check whether AIO is available and configured with

lsattr -El aio0

"autoconfig" must be "available", otherwise ("defined") AIO is disabled.

To change the state from "defined" to "available" run

chdev -l aio0 -a autoconfig=available
cfgmgr # or "mkdev -l aio0"

On older 5.3 systems you must run

chdev -l aio0 - P -a autoconfig=available

and reboot.

Check the number of running aioservers (if any) with

ps -kf | grep aio

Once AIO is enabled CIO will have (almost) no effect, so, at least for Oracle, forget it.

There might be databases which do not check for or cannot use AIO, so CIO could be an option here.
Please consult the documentation shipped by the manufacturer of your DB system.

And yes, the second system you showed doesn't use CIO either.


wmp
0
 
LVL 11

Author Comment

by:it-rex
ID: 39786526
I will open a new Q about async IO ..so I can give you ,deserved points.
now we do not have CIO on both 1st system 5.3 and 1nd system 7.1
both are Oracle database servers. is it true that although both systems are mounted with no CIO option Oracle can still do CIO on its own if
filesystemio_options='setall'

this issue is scattered over the place and no single assured fact,some say u do not need to set it on the filesystem anymore and some say the opposite.
and even if this is correct is it correct for both
5.3 and 7.1?

thanks alot
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 39786580
The parameter filesystemio_options which in a way replaced the old DISK_ASYNCH_IO initialization parameter governs AIO and Direct I/O, but not Concurrent I/O!

'setall' enables both direct I/O and asynchronous I/O where possible.

And yes, that's the same for AIX 5, 6 and 7.

AIX 6 changed the implementation of AIO (no more device "aio0") and the way how to configure AIO  ("ioo" instead of "chdev") but the underlying mechanisms are still the same.

In regard to DIO and CIO nothing has changed at all.
0
 
LVL 11

Author Comment

by:it-rex
ID: 39786610
So final word no CIO on file system..
no CIO in Oracle although the affored mentioned parameter is set.

Correct?
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 39786640
Yes.
0
 
LVL 11

Author Closing Comment

by:it-rex
ID: 39786743
undisputed  woolmilkporc is the best expert here..
and probably the best AIX admin I have ever came across..
PERIOD.
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Attention: This article will no longer be maintained. If you have any questions, please feel free to mail me. jgh@FreeBSD.org Please see http://www.freebsd.org/doc/en_US.ISO8859-1/articles/freebsd-update-server/ for the updated article. It is avail…
A metadevice consists of one or more devices (slices). It can be expanded by adding slices. Then, it can be grown to fill a larger space while the file system is in use. However, not all UNIX file systems (UFS) can be expanded this way. The conca…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now