电脑技术学习

Linux操作系统高性能集群监控管理之道

dn001

值得注意的是,每次某个/proc被读时,一个句柄函数都被内核或特有模块调用,来产生数据。数据在运行中产生,不管是读一个字符还是一个大的字块,整个文件都将被重建。这对效率是至关重要的一点,因为使用/proc的任何系统监控器将吞下整个文件,而不是一点一点地处理它。

Java提供了丰富的文件I/O类集,包括基于类的流、基于类的块设备,以及J2SDK 1.4提供的新的I/O库。实验表明,一般而言,对基本的块读写文件操作,用RandomAccessFile类进行I/O是最佳的。例如,块读文件操作如下:

mFile = new RandomAccessFile( "/proc/meminfo", "r" );

//以读方式打开文件

mFile.read( mBuffer ); //读文件块

结论

本文讨论了如何将Java语言有效地用于Linux集群结点上的高性能监控。在程序设计中,要注意以下方面:

◆ 采用/proc文件系统;

◆ 以块形式读/proc文件,而不是以行或字符形式;

◆ 在读文件期间保持文件打开;

◆ 消除不必要的数据转换;

◆ 在结点上合并数据;

◆ 以压缩形式传输数据;

◆ 注意与性能问题相关的语言或库。

对高性能监控而言,内核模块不是必要条件,这点很重要,因为它在Linux版本和分类之间提供了很大程度的可移植性,在监控器实现语言上有很多的选择。但是,/proc文件系统的性能却很依赖内核代码的效率,因此,适当地理解有关的机制将对以任何语言编写的监控器性能有非常大的影响。

标签: linux