NodeJS OS模块如何工作

时间:2017-03-22 21:06:48

标签: javascript node.js performance operating-system

Nodejs有一个内置的OS模块,我们可以通过在代码中使用这一行来使用它

setMaximumHeight

有许多功能可供使用,例如获取可用内存,总内存,CPU使用率,平均负载等。

我的问题是如何 nodejs计算此信息?

例如,免费/总RAM内存,如何在窗帘下完成。是否正在调用另一个进程来读取系统中的统计信息?是运行单独的命令,如var os = require('os'); 还是iostat?它是如何实际为我们检索数据的?

1 个答案:

答案 0 :(得分:1)

os.totalmem函数是名为process.binding('os')的{​​{1}}的本机函数。他们的实现可以在Node源代码中找到:

以下代码可在src/node_os.cc中找到:

getTotalMem

static void GetTotalMemory(const FunctionCallbackInfo<Value>& args) { double amount = uv_get_total_memory(); if (amount < 0) return; args.GetReturnValue().Set(amount); } // ... env->SetMethod(target, "getTotalMem", GetTotalMemory); 函数基于主机操作系统several implementations

以下是Linux实施deps/uv/src/unix/linux-core.c

uv_get_total_memory

Linux版本使用uint64_t uv_get_total_memory(void) { struct sysinfo info; if (sysinfo(&info) == 0) return (uint64_t) info.totalram * info.mem_unit; return 0; } 来获取此信息。它不需要生成另一个进程。