zoukankan      html  css  js  c++  java
  • linux free 内存计算的核心处理代码

    如果大家使用了node exporter 进行系统的监控,肯定会存在关于系统可用内存以及内存使用率的问题
    node exporter 提供了好多指标,但是关于内存的基本都是通过/pro/meminfo 获取的,但是不同linux 内核
    对于数据的处理是不一样的,以下是关于free 命令内存计算的核心规则,看看还是比较有用的,至少对于
    如果计算会清晰很多

    计算核心方法

     
     if (!kb_main_available) {
        if (linux_version_code < LINUX_VERSION(2, 6, 27))
          kb_main_available = kb_main_free;
        else {
          FILE_TO_BUF(VM_MIN_FREE_FILE, vm_min_free_fd);
          kb_min_free = (unsigned long) strtoull(buf,&tail,10);
          watermark_low = kb_min_free * 5 / 4; /* should be equal to sum of all 'low' fields in /proc/zoneinfo */
          mem_available = (signed long)kb_main_free - watermark_low
          + kb_inactive_file + kb_active_file - MIN((kb_inactive_file + kb_active_file) / 2, watermark_low)
          + kb_slab_reclaimable - MIN(kb_slab_reclaimable / 2, watermark_low);
          if (mem_available < 0) mem_available = 0;
          kb_main_available = (unsigned long)mem_available;
        }
      }

    参考资料

    https://access.redhat.com/solutions/406773
    https://gitlab.com/procps-ng/procps

  • 相关阅读:
    最大子数组
    链表插入排序
    链表求和
    有效回文串
    排球比赛计分系统
    超市收银系统
    三层架构
    Wpf+数据库代码封装+策略模式封装
    封装逻辑用策略模式实现
    代码封装
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13619181.html
Copyright © 2011-2022 走看看