[C++]Linux之虚拟文件系统[/proc]中关于CPU/内存/网络/内核等的一些概要性说明

时间:2022-09-04 20:59:10

声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神。也欢迎大家一起探讨,交流,以共同进步~ 0.0

1.Linux虚拟文件系统

  首先要明白,这到底是干啥的。[以下,引用博文linux 计算内存使用率http://blog.csdn.net/u010807846/article/details/40919393的原话,可以作为参考性理解]

  proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的采集流程图。

  其访问目录:/proc/*

[C++]Linux之虚拟文件系统[/proc]中关于CPU/内存/网络/内核等的一些概要性说明

2.深入概述
  PROC:(/proc)读取proc文件系统,获取系统各种性能参数           
  CPU:
    使用率:/proc/stat 或者 /proc/cpuinfo
      用户模式(user),低优先级用户模式(nice),内核模式(system)和空闲的处理器时间(idle)
    计算方法:
      100*( user + nice + system / user + nice + system + idle)    
      备注:多核情况下某一进程cpu使用率是按cpu个数*100%计算的
    总的cpu时间
      totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen  +  guest                
    单位:
      jiffies
      jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数.(C中clock_t和CLOCKS_PER_SEC与此有关)
        在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间
      例子:
        user (38082)    从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。
        nice (627)      从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间
        system (27594)  从系统启动开始累计到当前时刻,处于核心态的运行时间
        idle (893908)   从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间iowait (12256) 从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)
        irq (581)           从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)
        softirq (895)      从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)stealstolen(0)  
  内存:
    使用情况:/proc/meminfo
    当前内存使用量(cmem),内存总量(amem)
    计算方法:100*(cmem / amem)

    详情见博主另一博文:

      Linux之计算内存利用率与辨析 :http://www.cnblogs.com/johnnyzen/p/8011309.html
  网络负载:
    使用情况:/proc/net/dev
    从本机输出的数据包数(output),流入本机的数据包数(input)
    计算方法:(output + input)/2

    详情见博主另一博文:

      Linux之读取计算机网络数据[/proc/net/dev] :http://www.cnblogs.com/johnnyzen/p/8007577.html

      Linux之网络实时检测功能[C编程] :http://www.cnblogs.com/johnnyzen/p/8009053.html
  其他(内核等):
    /proc/sys
      存放所有可读的文件的目录
    /proc/sys/kernel
      包含反通用内核行为的信息
    /proc/sys/net
      修改机器/网络的网络属性
  实例:
    允许IP转发:/proc/sys/net/ipv4/ip_forward
    禁止ping:/proc/sys/net/ipv4/icmp_echo_ignore_all【1:实现配置;0:取消配置】

3.参考文献:

   [操作系统课程设计]:https://max.book118.com/html/2017/0104/79942647.shtm
        [操作系统课程设计报告]:https://wenku.baidu.com/view/1c083c4dc77da26924c5b0c7.html      
        [Linux平台Cpu使用率的计算]:http://www.blogjava.net/fjzag/articles/317773.html
        [Linux系统下输出某进程内存占用信息的c程序实现]:https://www.cnblogs.com/bozhicheng/p/6216667.html
        [关于proc和CPU计算与原理]:https://wenku.baidu.com/view/375b7311f01dc281e53af0c6.html   

[C++]Linux之虚拟文件系统[/proc]中关于CPU/内存/网络/内核等的一些概要性说明的更多相关文章

  1. linux的虚拟文件系统VFS

    虚拟文件系统(virtual file system),别名虚拟文件系统开关,是linux中的一个软件层,向用户空间提供文件系统操作接口. VFS包含的系统调用包括open(2).stat(2).re ...

  2. Linux 的虚拟文件系统(强烈推荐)

    1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系 ...

  3. 从文件 I/O 看 Linux 的虚拟文件系统

    1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系 ...

  4. Linux -- 如何减少IO过程中的CPU copy

    四种I/O方式的对比 1. Buffered I/O read(file, tmp_buf, len); write(socket, tmp_buf, len); 上下文切换:4次 CPU copy: ...

  5. linux 查看CPU内存 网络 流量 磁盘 IO

    使用vmstat命令来察看系统资源情况 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? Q: 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? A: 在命 ...

  6. jmeter监控linux cpu 内存 网络 IO

    下载地址:http://jmeter-plugins.org/downloads/all/ PerfMon: 用来监控Server的CPU.I/O.Memory等情况 ServerAgent-2.2. ...

  7. 使用psutil库监控linux的系统资源和自定义进程的cpu 内存占用。

    #coding=utf8 import time import psutil from pprint import pprint from logger_until import LoggerUnti ...

  8. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

  9. Linux虚拟文件系统

    从文件 I/O 看 Linux 的虚拟文件系统 1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux ...

随机推荐

  1. bzoj2002弹(dan)飞绵羊 分块水过

    据说是道lct求深度的题 但是在小猫大的指点下用分块就n^1.5水过了 = =数据忘记加强系列 代码极其不美观,原因是一开始是听小猫大讲的题意,还以为是弹到最前面... #include <cs ...

  2. MATLAB cell &amp&semi; struct

    CELL cell的每个单元都可以存储任何数据,比如传递函数等.当然,存储矩阵更是没有问题的了.但是用cell数据类型之前,要先初始化. a=cell(n,m) 那么就把a初始化为一个n行m列的空ce ...

  3. Servlet&sol;JSP-01 Servlet及其生命周期

    一.起步 1.新建一个类继承Servlet接口 public class HelloServlet implements Servlet { @Override public void destroy ...

  4. CentOS 安装jdk7

    1.下载jdk​​ http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html​ 选择jdk ...

  5. 【python】Python 3 &plus;pycharm中文支持解决方案

    使用环境:window10 + python 3.5.1 方法:在代码前端增加代码:# -*-coding:gbk-*-

  6. adb设备,根据serial获取vid pid

    使用adb devices命令,可以轻松获取到所有连接到PC的adb设备的serial值. 但是adb命令无法获取adb usb设备的vendor id和product id. 本程序根据adb协议, ...

  7. angular或者js如何确定选中ul中的哪几个li

    刚来新公司接到新的需求做一个知识库页面 红色的是单选    蓝色的是多选     这些都是需要传递到后台的 开始不知道如何解决  下班后在家想到一个很巧妙的办法  不多说上代码 箭头所指就是在li里写 ...

  8. Spring AOP高级——源码实现(2)Spring AOP中通知器(Advisor)与切面(Aspect)

    本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/Spring%20AOP%E9%A ...

  9. 一种dubbo逻辑路由方案

    背景介绍 现在很多的公司都在用dubbo.springcloud做为服务化/微服务的开发框架,服务化之后应用越来越多,链路越来越长,服务环境的治理变的很困难.比如:研发团队的人很多的,同时有几个分支在 ...

  10. zabbix利用orabbix监控oracle

    Orabbix 是一个用来监控 Oracle 数据库实例的 Zabbix 插件.(插件安装在zabbix-server端) 下载地址:http://www.smartmarmot.com/produc ...