AIX 5L 磁盘性能优化: 第 1 部分
2008-09-06 08:21:10 来源:WEB开发网直接 I/O
让我们回到前面提到的一些概念,如直接 I/O。那么,什么是直接 I/O?它在 AIX Version 4.3 中首次引入,这种 I/O 方法不经过虚拟内存管理器(Virtual Memory Manager,VMM),从用户缓冲区直接与磁盘进行数据传输。根据您的应用程序的类型,在实现这种技术时可以提高性能。例如,那些具有糟糕的缓存使用率的文件,是使用直接 I/O 的很好的候选对象。直接 I/O 还可以提高那些使用同步写入操作的应用程序的效率,因为这些写入操作的对象是磁盘。直接 I/O 降低了CPU 使用率,这是因为消除了双重数据副本。将磁盘的数据复制到缓冲区缓存,然后再复制文件数据时会出现多余的副本。直接 I/O 的一个主要性能开销是,尽管它可以降低 CPU 使用率,但是它可能导致进程长时间等待较小请求的完成。请注意,这种方式适用于在磁盘上具有持久存储位置的持久段文件。当使用 IBM Enhanced Journaled File System for AIX 5L™ (JFS2) 不通过直接 I/O 访问文件时,文件作为本地页面缓存,并且将数据复制到 RAM 中。直接 I/O 可以在许多方面为您提供与使用原始逻辑卷类似的性能,同时还保留了使用 JFS 文件系统的优点(例如,易于管理)。在使用直接 I/O 装入文件系统时,您应该避免使用支持大文件的 JFS 文件系统。
并发 I/O
并发 I/O 又如何呢?它在 AIX Version 5.2 中首次引入,这个特性调用了直接 I/O,所以它具有与直接 I/O 相关联的所有其他性能注意事项。使用标准的直接 I/O,会对索引节点(与文件相关联的数据结构)加锁,以防止出现多个线程试图同时更改一个文件的内容的情况。并发 I/O 绕过了索引节点锁,这样可以允许多个线程并发地读写相同文件的数据。这是因为 JFS2 在实现时使用了写独占 (write-exclusive) 索引节点锁,允许多个用户同时读取相同的文件。可以想象,直接 I/O 可能使得不断地从相同文件读取数据的数据库产生很大的问题。并发 I/O 则解决了这一问题,这正是该特性主要用于关系数据库的原因。与直接 I/O 类似,您可以通过 open 系统调用或者通过装入文件系统来实现这种方式,如下所示:# mount -o cio /u
更多精彩
赞助商链接