Did this article resolve your question/issue?



Does OpenEdge run on AIX systems configured for Concurrent I/O (CIO)?

« Go Back


TitleDoes OpenEdge run on AIX systems configured for Concurrent I/O (CIO)?
URL NameP125521
Article Number000130084
EnvironmentProduct: OpenEdge
Version: All Supported Versions
Question/Problem Description
Does OpenEdge 10.x run on AIX systems configured for Concurrent I/O (CIO)?
Is OpenEdge certified to run on AIX with Concurrent I/O?
Is option Cio for mount file system recommended ?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Running OpenEdge on an AIX system configured for Concurrent I/O (CIO) has not been certified, since we certify the O/S and not the underlying hardware.

CIO is an operating system feature that is available in modern versions of AIX (JFS2 file systems). It is built into the AIX software and can be specified for a file either through the mount command (mount -o cio) or via the open() system call with O_CIO as the OFlag parameter. It enables improved I/O efficiency and concurrency for databases stored in the filesystem. Concurrent IO works by eliminating certain filesystem provided locking protocols that are also performed by the database management system in its buffer pool. The two locking protocols are redundant. CIO eliminates the one provided by the O/S and this allows for multiple I/O operations to take place at the same time.

The OpenEdge database will work with CIO, since this can be configured at the OS level and since the OpenEdge code uses standard OS calls to open and write to files, the type of I/O is transparent to the code and should not cause any problems.

Additional Considerations:

1. Write performance to data extents can be a bit better because of the increased write concurrency CIO allows. Most writing should be being done by pagewriters, which implies the necessity for an ENTERPRISE database license in use.

2. You will need more pagewriters with CIO because writes to data extents will be synchronous and not written to the filesystem cache. Thus pwrite() system calls will take longer than just copying the data to the filesystem cache (which is what normally happens).

3. Read performance may be lower because nothing is buffered in the fileystem cache, only in the database's buffer pool. So you probably have to make the buffer pool larger and the filesystem cache smaller. Then again Read performance can be greatly improved by making use of the alternate buffer pool (-B2) for static data for example (since OE 10.2B+)

4. When CIO is in effect, the fdatasync() calls which occur at checkpoint end should need to do nothing. This means checkpoint end processing will be slightly faster /if there are no buffers to flush/!

5. Concurrent IO should only be used with filesystems containing databases. It is not a general purpose use and it will confuse some kinds of software that do not enforce data consistency and data integrity.

From the foregoing, it is hard to tell whether CIO will improve overall performance or not. Moreover, while we believe that running with CIO should not cause any problems, (since cio can be configured at the OS level, and since the OpenEdge code uses standard OS calls to open and write to files, the type of I/O is transparent to the code and should not cause any problems while it is known to give performance improvement by removing yet another buffer between shared-memory and the disk subsystem) without running a standard certification process using CIO, we cannot be absolutely sure. These would need to be verified by for example using the ATM Benchmark from to form an independent comparison and of course your particular application test environment.
References to Other Documentation:
ATM Benchmark Tool

Progress Article:
 AIX Performance Issues: -directio and syncd  
Last Modified Date11/20/2020 7:34 AM
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.