@adobe/cgroup-metrics

中文文档
3.0.6发布于 2022/01/11MITCommonJS近 30 天下载 1.1万

读取组内存数据的节点模块

中文使用文档
文档目录8 节
  1. 氯-金属
  2. 内存计量 :
  3. CPU 度量衡 :
  4. 安装
  5. 使用量
  6. 处理错误
  7. 捐款
  8. 许可证发放

Version License codecov Travis

氯-金属

读取的节点模块 c组 度量衡。 从 /sys/fs/cgroup/。 。 。 .

内存计量 :

内存 从路径读取 /sys/fs/cgroup/memory/memory数字 :

原始值 :

  • stat.rss: # 匿名和互换缓存存储的字节
  • kmem.usage_in_bytes: 当前内核内存分配
  • limit_in_bytes: 内存使用限制

计算值 :

  • containerUsage()数字 : stats.rss + 键 kmem.usage_in_bytes
  • containerUsagePercentage()数字 :stats.rss + 键 kmem.usage_in_bytes 编号 : limit_in_bytes

CPU 度量衡 :

原始 CPU 值 : CPU 软件 从路径读取 /sys/fs/cgroup/数字 :

  • cpuacct.usage: 系统内这个croup获得的容器(所有任务获得CPU时间)开始以来的CPU总时间(以纳米秒计)
  • cpuacct.stat: 报告用户和系统CPU在这个croup中所有任务所消耗的时间(包括等级中较低的任务)
    • user: CPU 时间( 以纳米秒计) 由 cgroup 在用户模式下的任务所花费
    • system: CPU 时间( 纳米秒) 由 cgroup 在内核模式下的任务花费
    • timestamp: 测量时的时间戳

两个调用都会返回包含一个或多个对象 CpuMetric 特定 cpu 任务的对象 :

  • cpuNanosSinceContainerStart: 系统内该组组获得的容器启动以来的CPU总时间(以纳秒计)
  • timestamp: 测量时的时间戳

已计算 CPU 值 :

  • calculateUsage: 需要两次呼叫 cpuacct.usage 或者说 cpuacct.stat 并返回以 CPU 时间百分比计的计算使用量 : second time since container start - first time since container start / total time

安装

npm install cgroup-metrics

使用量

您可以使用每个度量的同步函数分别访问每个度量

内存计量

const cgroup = require('cgroup-metrics');

const memory = cgroup.memory();
const containerUsage = await memory.containerUsage();
console.log(containerUsage);

const containerUsagePercentage = await memory.containerUsagePercentage(containerUsage);
console.log(containerUsagePercentage);

CPU 计量

const cpu = cgroup.cpu();

/* Returns an object like:
* {
*    cpuNanosSinceContainerStart: 120234,
*    timestamp: 153686574
* }
* */
const cpuacct_usage = await cpu.usage();
console.log(`Total CPU time since start of container (ns): ${cpuacct_usage.cpuNanosSinceContainerStart}`);


/* Returns an object like:
* {
*     user: {
*               cpuNanosSinceContainerStart: 120234,
*               timestamp: 153686574
*          },
*    system: {
*               cpuNanosSinceContainerStart: 120234,
*               timestamp: 153686574
*           },
* }
* */
const cpuacct_stats = await cpu.stat();
console.log(`CPU user count object: ${cpuacct_stat.user}`);
console.log(`CPU system count object: ${cpuacct_stat.system}`);

const calculateUsage = await cpu.calculateUsage(cpuacct_usage1, cpuacct_usage2);

所有计量

或者你可以用这个功能 metrics 以获得所有参数的对象:

const metrics = await cgroup.metrics();

console.log(`Container usage: ${metrics.memory.containerUsage}`);
console.log(`Container usage percentage: ${metrics.memory.containerUsagePercentage}`);

console.log(`Total CPU time since start of container (ns): ${metrics.cpuacct.usagecpuNanosSinceContainerStart}`);
console.log(`CPU user count: ${metrics.cpuacct.stat.user}`);
console.log(`CPU system count: ${metrics.cpuacct.stat.system}`);

如果你打电话 metrics 有参数 flatten 设置为 true,它将返回一个平整的(1D) js 对象:

const metrics = await cgroup.metrics(true);
console.log(`Memory usage in the container: ${metrics["memory.containerUsage"]}`)

处理错误

如果没有容器运行或有读取文件路径的问题,函数调用会出错类似的东西:

Error: Error reading file /sys/fs/cgroup/memory/memory.stat, Message: ENOENT: no such file or directory, open '/sys/fs/cgroup/memory/memory.stat'

如果其中一个文件是空的, 它会返回这样的错误 :

Error: Error reading file /sys/fs/cgroup/memory/memory.stat, Message: File is empty

如果文件有错误, 它会返回这样的错误 :

Error: One or more metrics are malformed. containerUsage: 1234, limit: NaN

或者说:

Error reading file /sys/fs/cgroup/cpuacct/cpuacct.stat, Message: Cannot read property 'split' of undefined

捐款

欢迎捐款! 读取 贡献指南 更多信息.

许可证发放

这个项目根据Apache V2许可证获得许可. 见 自由主义 更多信息.

版本与发布记录

@adobe/cgroup-metrics 共发布 7 个版本,首次发布于 2020/04/18;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.6latest2022/01/114 年前
3.0.52021/08/185 年前
3.0.42021/08/055 年前
3.0.32021/03/305 年前
3.0.22021/02/035 年前
3.0.12020/07/226 年前

关于 @adobe/cgroup-metrics 的常见问题

@adobe/cgroup-metrics 是什么?

读取组内存数据的节点模块

如何安装 @adobe/cgroup-metrics?

在项目目录运行 npm install @adobe/cgroup-metrics,或使用 pnpm add / yarn add / bun add。

@adobe/cgroup-metrics 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/adobe__cgroup-metrics 是否存在。

@adobe/cgroup-metrics 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@adobe/cgroup-metrics 可以商用吗?

@adobe/cgroup-metrics 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@adobe/cgroup-metrics 的下载量有多少?

根据 npm 官方下载统计,@adobe/cgroup-metrics 在 2026/10/05 – 2026/11/03 这 30 天内被下载 11,400 次,日均约 380 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@adobe/cgroup-metrics 还在维护吗?

最新版本 3.0.6 发布于 2022/01/11(4 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/04/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。