新闻中心

EEPW首页>嵌入式系统>设计应用> 高性能的Linux集群监控之道

高性能的Linux集群监控之道

作者: 时间:2016-09-12 来源:网络 收藏

◆ 有效压缩

数值数据的文本表示由来自个字节集中的字符组成而不是二进制下的个字节集它们产生的数字及模式的相对频率允许有效地使用基于压缩算法的字典及熵(平均信息量)

/proc虚拟文件系统

/proc虚拟文件系统(也叫procfs)是Unix操作系统所使用的虚拟文件系统的实现包括Sun SolarisBSD在/proc开始时它以一个标准文件系统出现并包含与正在运行的进程IDs同样名字的文件然而在/proc中的文件不占用磁盘空间它们存在于工作存储器(内存)中/proc最初的目的是便于进程信息的存取但是现在在中它可被内核的每一部分使用来报告某些事情

在/proc文件系统提供的成百上千的值当中我们将集中考虑所需的最小集它们包括

◆ /proc/loadavg包含系统负载平均值;

◆ /proc/meminfo包含存储管理统计量;

◆ /proc/net/dev包含网卡度量;

◆ /proc/stat包含内核统计量;

◆ /proc/uptime包含总的系统正常工作时间及空闲时间

每个文件提供的值的数量是不同的这些文件的完整有效值列表如下

◆ /proc/loadavg提供以下数据

秒钟平均负载;

秒钟平均负载;

秒钟平均负载;

总作业数;

正在运行的作业总数

◆ /proc/meminfo提供的存储器信息包括

活动存储器;

不活动存储器;

缓冲存储器;

高速缓冲存储器;

总的自由存储器;

总的高位存储器;

自由高位存储器;

总的低位存储器;

自由低位存储器;

共享存储器;

交换存储器;

交换高速缓冲存储器;

交换自由存储器;

总存储器

◆ /proc/net/dev中包括每个网卡的如下数据

接收到的字节;

接收到的压缩字节;

收到的误码数;

收到的漏失误码;

收到的FIFO误码;

收到的帧误码;

收到的多播误码;

收到的总包数;

已传输的字节;

已传输的压缩字节;

传输误码总数;

传输载波误码;

传输冲突误码;

传输漏失误码;

传输FIFO误码;

传输的总包数

◆ /proc/stat提供

引导时间;

上下文切换数量;

中断总量;

进页面总数;

出页面总数;

进程总数;

换入总数;

换出总数;

合计CPU空闲时间;

合计CPU nice时间;

合计CPU系统时间;

合计CPU用户时间

同时提供对每个CPU的:

单个CPU空闲时间;

单个CPU nice时间;

单个CPU系统时间;

单个CPU用户时间

以及对每个磁盘驱动器的如下数据

单个磁盘块读;

单个磁盘块写;

单个磁盘I/O总数;

单个磁盘I/O读;

单个磁盘I/O写

◆ /proc/uptime中包括

系统总工作时间;

系统总空闲时间

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

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

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

//以读方式打开文件

mFileread( mBuffer ); //读文件块

结论

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

◆ 采用/proc文件系统;

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

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

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

◆ 在结点上合并数据;

◆ 以压缩形式传输数据;

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

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


上一页 1 2 下一页

关键词:Linux集群监控

评论


相关推荐

技术专区

关闭