Node.js操作tmpfs内存文件系统

Node.js操作tmpfs内存文件系统

Tags
文件系统
缓存设计
内存管理
CreatedTime
Aug 19, 2022 08:13 AM
Slug
2020-10-17-tmpfs
UpdatedTime
Last updated August 19, 2022

什么是 tmpfs?

tmpfs 是 Linux 提供的虚拟内存文件系统,可以用于高性能 I/O。
注意:它不是永久的,只是暂时存放。重启 os,tmpfs 中的文件会消失(和内存类似)。
在 linux 下,它默认最大为内存的一半大小,使用df -h命令可以看到,且大小不是固定的,。它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是 0 字节;如果它最大为 1G,里头放有 100M 文件,那剩余的 900M 仍然可为其它应用程序所使用,但它所占用的 100M 内存,是绝不会被系统回收重新划分的

性能对比

用 nodejs 做了下性能对比,测试代码如下:
const fs = require("fs"); const LOOP_TIMES = 5000; main(); function main() { console.time("tmpfs"); for (let i = 0; i < LOOP_TIMES; ++i) { // 1.js: 普通硬盘 readAndWriteFile("./package.json"); // 2.js: tmpfs // readAndWriteFile('/dev/shm/package.json') } console.timeEnd("tmpfs"); } function readAndWriteFile(filepath) { const content = fs.readFileSync(filepath); const copyFilepath = `${filepath}.copy`; fs.writeFileSync(copyFilepath, content); fs.unlinkSync(copyFilepath);
结果如下:
notion image
可以看到,tmpfs 比普通硬盘的 I/O 快了近 3 倍。测试的 package.json 很小,如果文件更大,差距更明显。

参考链接