AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 590124
Accepted
Ivan Kovacevic
Ivan Kovacevic
Asked: 2014-04-20 09:44:24 +0800 CST2014-04-20 09:44:24 +0800 CST 2014-04-20 09:44:24 +0800 CST

ramfs 和 tmpfs 之间的性能差异

  • 772

我需要为大约 10 GB 的数据设置一个内存存储系统,其中包含许多 100 kb 的单个文件(图像)。会有很多读取和相当周期性的写入(添加新文件,删除一些旧文件)。
现在,我知道tmpfs的行为类似于常规文件系统,例如,您可以使用df检查可用/已用空间,这是一个不错的功能。但是,如果ramfs会在 IO 操作的速度方面提供一些优势,我很感兴趣。我知道在使用ramfs时我无法控制消耗的内存大小,并且如果它完全消耗了可用 RAM,我的系统可能会挂起,但这在这种情况下不会成为问题。

总而言之,我很感兴趣:
- 性能方面,哪个更快:ramfs或tmpfs(可能是为什么)?
- tmpfs何时使用交换空间?它是否将已保存的数据移动到交换(为当前正在运行的其他程序释放 RAM)或仅在当时没有可用 RAM 的情况下移动新数据?

linux
  • 4 4 个回答
  • 31432 Views

4 个回答

  • Voted
  1. Best Answer
    ewwhite
    2014-04-20T10:56:24+08:002014-04-20T10:56:24+08:00

    我的建议:

    在正常条件下测量和观察现实生活中的活动。

    这些文件不太可能一直都需要并从缓存中提供。但是有一个名为vmtouch的好工具可以告诉您在给定时刻缓存中的内容。您还可以使用它将某些目录或文件锁定到缓存中。所以看看一些经常使用后的情况。对于这种情况,不需要使用 tmpfs 和 ramfs。

    请参阅:http ://hoytech.com/vmtouch/

    我想您会惊讶地发现最活跃的文件可能已经驻留在缓存中。


    就 tmpfs 与 ramfs 而言,没有明显的性能差异。存在操作上的差异。一个真实的用例是 Oracle,其中 ramfs 用于允许 Oracle 管理 RAM 中的数据,而不会有被交换的风险。tmpfs 数据可以在内存压力下被换出。在动态调整大小和修改设置方面也存在差异。

    • 31
  2. EEAA
    2014-04-20T09:46:54+08:002014-04-20T09:46:54+08:00

    不要想太多。在您的系统中放置足够的 RAM,并让内核的磁盘缓存为您处理一切。通过这种方式,您可以获得直接从内存读取的好处,同时仍然能够将数据持久保存在磁盘上。

    • 13
  3. Michael Martinez
    2014-04-22T11:12:21+08:002014-04-22T11:12:21+08:00

    1) 性能基准。

    使用这个页面作为参考,我在 tmpfs 和 ramfs 之间进行了 I/O 比较,结果是它在性能方面几乎相同:

    # !mount
    mount | grep -E "tmp|ram"
    tmpfs on /dev/shm type tmpfs (rw)
    ramfs on /mnt/ram type ramfs (rw,size=1G)
    
    # dd bs=1M count=1024 if=/dev/zero of=/dev/shm/test conv=fdatasync
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB) copied, 0.634054 s, 1.7 GB/s
    
    # dd bs=1M count=1024 if=/dev/zero of=/mnt/ram/test conv=fdatasync
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB) copied, 0.559557 s, 1.9 GB/s
    
    # dd bs=1M count=4096 if=/dev/zero of=/dev/shm/test conv=fdatasync
    4096+0 records in
    4096+0 records out
    4294967296 bytes (4.3 GB) copied, 2.5104 s, 1.7 GB/s
    
    # dd bs=1M count=4096 if=/dev/zero of=/mnt/ram/test conv=fdatasync
    4096+0 records in
    4096+0 records out
    4294967296 bytes (4.3 GB) copied, 2.36923 s, 1.8 GB/s
    

    2)根据this page,tmpfs使用swap,而ramfs不使用swap。

    • 8
  4. jlliagre
    2014-04-25T12:58:21+08:002014-04-25T12:58:21+08:00

    如果您安装了足够数量的 RAM 来托管各种内核缓冲区、应用程序堆栈和堆、常规文件系统缓存以及您打算放入其中的所有文件,那么ramfs速度永远不会比它慢,tmpfs因为不会有以下风险物理 I/O 设计。物理 I/O 无疑是该领域性能下降的主要原因。

    但是,如果您没有安装那么多 RAM,则使用ramfs可能并且可能会比tmpfs后者使用虚拟内存启发式方法来决定磁盘上(即交换区域)和 RAM 上的内容更好使用 时tmpfs,您的文件系统数据卡在 RAM 上,这可能会浪费资源。

    要回答您的第二个问题,是的,tmpfs将首先将旧数据移动到交换区域,而不是最后一个“热”数据。

    • 3

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve