hin*_*tze 6 memory linux performance
这个问题询问是否使用/dev/shmor /tmp。在提供的答案中,总体印象是比写入 RAM 而不是写入磁盘/dev/shm更快。/tmp搜索有关该主题的网络模糊地证实了这一印象。不幸的是,我无法找到可靠的来源,毫无疑问地显示哪个性能更高,例如通过测量。
例如,引用第一个答案:
由于 RAM 比磁盘存储快得多,因此如果您的进程是 I/O 密集型并且大量使用临时文件,则可以使用 /dev/shm 而不是 /tmp 来提高性能。
链接的文章指出:
/dev/shm只不过是传统共享内存概念的实现。它是在程序之间传递数据的有效方法。一个程序将创建一个内存部分,其他进程(如果允许)可以访问该内存部分。这将加快 Linux 上的速度。
这既没有证实引用该网站的答案,也没有比较/dev/shm与的性能/tmp。它只是对现状的描述/dev/shm。
尽管如此,第一个答案中有一条评论,指出(截至今天):
使用 /dev/shm 不会提高性能。/dev/shm 是由磁盘(交换)支持的内存(tmpfs)。/var/tmp 是磁盘(磁盘文件系统)支持的内存(磁盘缓存)。实际上,性能大致相同(tmpfs 有轻微优势,但不足以影响)。/tmp 可能是 tmpfs,也可能不是,具体取决于管理员如何配置它。没有充分的理由在脚本中使用 /dev/shm。
由于此评论仍然没有受到质疑,并且其他答案和评论表明并非如此,所以问题仍然是是否/dev/shm更快/tmp?
注意:我很清楚答案很可能是“视情况而定”。SU:SE 上有一个关于使用哪个文件系统的问题/tmp。SO也有一个相关的问题。
当你使用时,/dev/shm你并不是直接写入RAM。它是一个tmpfs文件系统,tmpfs将所有文件保存在虚拟内存(作为 RAM 扩展的磁盘)中。
来自kernel.org:
\n\n\n如果将其与 ramfs(这是创建 tmpfs 的模板)进行比较,您将获得交换和限制检查。另一个类似的东西是 RAM 磁盘 (/dev/ram*),它在物理 RAM 中模拟固定大小的硬盘,您必须在上面创建一个普通的文件系统。Ramdisk 无法交换,并且您无法调整它们的大小。
\n由于 tmpfs 完全存在于页面缓存和交换中,因此所有 tmpfs\n页面将在 /proc/meminfo 和 \xe2\x80\x9cShared\xe2\x80\x9d 中显示为 \xe2\x80\x9cShmem\xe2\x80\x9d在\n自由(1) 中。请注意,这些计数器还包括共享内存(shmem,\n请参阅 ipcs(1))。获取计数的最可靠方法是使用 df(1)\n 和 du(1)。
\n
ramfs是一个基于 RAM 的文件系统:
\n\n\nRamfs 是一个非常简单的文件系统,它将 Linux\xe2\x80\x99s 磁盘缓存机制(页面缓存和 dentry 缓存)导出为基于 RAM 的可动态调整大小的文件系统。
\n
因此,回答您的问题,由于(/dev/shm 和 /tmp)都使用磁盘,因此性能没有提升。
\n您可以通过以下示例验证何时写入 RAM:
\nmkdir /mnt/ram\nmount -t ramfs -o size=2g ramfs /mnt/ram\n# Create random file of 2GB\ndd if=/dev/urandom bs=1024 count=2000000 of=/tmp/testfile conv=notrunc\n# Check ram usage\nfree\ncp /tmp/testfile /mnt/ram\n# Check ram usage again\nfree\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4121 次 |
| 最近记录: |