Nodejs有一个内置的OS模块,我们可以通过在代码中使用这一行来使用它
setMaximumHeight
有许多功能可供使用,例如获取可用内存,总内存,CPU使用率,平均负载等。
我的问题是如何 nodejs计算此信息?
例如,免费/总RAM内存,如何在窗帘下完成。是否正在调用另一个进程来读取系统中的统计信息?是运行单独的命令,如var os = require('os');
还是iostat
?它是如何实际为我们检索数据的?
答案 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;
}
来获取此信息。它不需要生成另一个进程。