文章目录加载中

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);
}

结果如下:

可以看到,tmpfs 比普通硬盘的 I/O 快了近 3 倍。测试的 package.json 很小,如果文件更大,差距更明显。

# 参考链接

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog