/proc虚拟文件系统
来源:互联网 发布:程序员与架构师 编辑:程序博客网 时间:2024/05/17 14:19
/proc虚拟文件系统(也叫procfs)是Unix操作系统所使用的虚拟文件系统的Linux实现,包括Sun Solaris、LinuxBSD。在/proc开始时,它以一个标准文件系统出现,并包含与正在运行的进程IDs同样名字的文件。然而,在/proc中的文件不占用磁盘空间,它们存在于工作存储器(内存)中。/proc最初的目的是便于进程信息的存取,但是现在,在Linux中,它可被内核的每一部分使用来报告某些事情。
在/proc文件系统提供的成百上千的值当中,我们将集中考虑集群监控所需的最小集,它们包括:
◆ /proc/loadavg:包含系统负载平均值;
◆ /proc/meminfo:包含存储管理统计量;
◆ /proc/net/dev:包含网卡度量;
◆ /proc/stat:包含内核统计量;
◆ /proc/uptime:包含总的系统正常工作时间及空闲时间。
每个文件提供的值的数量是不同的。这些文件的完整有效值列表如下。
◆ /proc/loadavg提供以下数据:
1秒钟平均负载;
5秒钟平均负载;
15秒钟平均负载;
总作业数;
正在运行的作业总数。
◆ /proc/meminfo提供的存储器信息包括:
活动存储器;
不活动存储器;
缓冲存储器;
高速缓冲存储器;
总的自由存储器;
总的高位存储器;
自由高位存储器;
总的低位存储器;
自由低位存储器;
共享存储器;
交换存储器;
交换高速缓冲存储器;
交换自由存储器;
总存储器。
◆ /proc/net/dev中包括每个网卡的如下数据:
接收到的字节;
接收到的压缩字节;
收到的误码数;
收到的漏失误码;
收到的FIFO误码;
收到的帧误码;
收到的多播误码;
收到的总包数;
已传输的字节;
已传输的压缩字节;
传输误码总数;
传输载波误码;
传输冲突误码;
传输漏失误码;
传输FIFO误码;
传输的总包数。
在/proc文件系统提供的成百上千的值当中,我们将集中考虑集群监控所需的最小集,它们包括:
◆ /proc/loadavg:包含系统负载平均值;
◆ /proc/meminfo:包含存储管理统计量;
◆ /proc/net/dev:包含网卡度量;
◆ /proc/stat:包含内核统计量;
◆ /proc/uptime:包含总的系统正常工作时间及空闲时间。
每个文件提供的值的数量是不同的。这些文件的完整有效值列表如下。
◆ /proc/loadavg提供以下数据:
1秒钟平均负载;
5秒钟平均负载;
15秒钟平均负载;
总作业数;
正在运行的作业总数。
◆ /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类集,包括基于类的流、基于类的块设备,以及J2SDK 1.4提供的新的I/O库。实验表明,一般而言,对基本的块读写文件操作,用RandomAccessFile类进行I/O是最佳的。例如,块读文件操作如下:
mFile = new RandomAccessFile( "/proc/meminfo", "r" );
//以读方式打开文件
mFile.read( mBuffer ); //读文件块
结论
本文讨论了如何将Java语言有效地用于Linux集群结点上的高性能监控。在程序设计中,要注意以下方面:
◆ 采用/proc文件系统;
◆ 以块形式读/proc文件,而不是以行或字符形式;
◆ 在读文件期间保持文件打开;
◆ 消除不必要的数据转换;
◆ 在结点上合并数据;
◆ 以压缩形式传输数据;
◆ 注意与性能问题相关的语言或库。
引导时间;
上下文切换数量;
中断总量;
进页面总数;
出页面总数;
进程总数;
换入总数;
换出总数;
合计CPU空闲时间;
合计CPU nice时间;
合计CPU系统时间;
合计CPU用户时间。
同时提供对每个CPU的:
单个CPU空闲时间;
单个CPU nice时间;
单个CPU系统时间;
单个CPU用户时间。
以及对每个磁盘驱动器的如下数据:
单个磁盘块读;
单个磁盘块写;
单个磁盘I/O总数;
单个磁盘I/O读;
单个磁盘I/O写。
◆ /proc/uptime中包括:
系统总工作时间;
系统总空闲时间。
值得注意的是,每次某个/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文件,而不是以行或字符形式;
◆ 在读文件期间保持文件打开;
◆ 消除不必要的数据转换;
◆ 在结点上合并数据;
◆ 以压缩形式传输数据;
◆ 注意与性能问题相关的语言或库。
- /proc虚拟文件系统
- proc虚拟文件系统
- linux /proc虚拟文件系统
- linux虚拟文件系统proc
- 虚拟文件系统proc
- EXT2文件系统、虚拟文件系统、proc文件系统
- 深入理解 /proc 虚拟文件系统
- /proc——虚拟文件系统
- linux的proc虚拟文件系统
- Linux虚拟文件系统vfs及proc详解
- linux 内核编程之proc虚拟文件系统
- Fedora运行级别及其虚拟文件系统/proc
- linux 内核编程之proc虚拟文件系统
- PROC : 虚拟的进程文件系统 (Linux的/proc目录)
- 使用/proc虚拟文件系统查看优化WEB程序
- PROC虚拟文件系统自制kmsg文件存储打印信息
- /proc虚拟文件系统与系统内核参数修改方法
- proc文件系统
- js实现页面跳转的几种方式
- 请教: 这样的myCmd.ExecuteNonQuery()竟返回-1
- Linux必学的60个命令
- dos关机命令
- 今天很累
- /proc虚拟文件系统
- 一个学习JAVA的好网站
- 【Java】纯底层SMTP实现邮件发送核心源码
- (JSP)在文本域中显示超链接——小应用程序部分
- 数据库连接封装类2
- 敏捷宣言
- 数据库的通用访问代码
- ORACLE 本地读写文件---ORA WRITE WEBSHELL
- java console with basic