SSD 与 tmpfs 速度

我tmpfs使用以下命令在 Ubuntu 上的主目录中创建了一个文件系统:


$ mount -t tmpfs -o size=1G,nr_inodes=10k,mode=0777 tmpfs space

$ df -h space .

File system                  Size    Used Avail. Avail% Mounted at

tmpfs                        1,0G    100M  925M   10%   /home/user/space

/dev/mapper/ubuntu--vg-root  914G    373G  495G   43%   /

然后我写了这个Python程序:


#!/usr/bin/env python3


import time

import pickle



def f(fn):

    start = time.time()

    with open(fn, "rb") as fh:

        data = pickle.load(fh)

    end = time.time()

    print(str(end - start) + "s")

    return data



obj = list(map(str, range(10 * 1024 * 1024)))  # approx. 100M



def l(fn):

    with open(fn, "wb") as fh:

        pickle.dump(obj, fh)



print("Dump obj.pkl")

l("obj.pkl")

print("Dump space/obj.pkl")

l("space/obj.pkl")


_ = f("obj.pkl")

_ = f("space/obj.pkl")

结果:


Dump obj.pkl

Dump space/obj.pkl

0.6715312004089355s

0.6940639019012451s

我对这个结果很困惑。tmpfs 不是一个基于 RAM 的文件系统吗?RAM 不应该比任何硬盘(包括 SSD)快得多吗?


此外,我注意到当我将目标文件大小增加到大约时,该程序使用了超过 15GB 的 RAM。1 GB。


这该如何解释呢?


这个实验的背景是我试图找到硬盘和 Redis 的替代缓存位置,这些位置更快并且可供多个工作进程使用。


森林海
浏览 57回答 1
1回答

慕勒3428872

答案来自评论:流逝的时间似乎是Python的事情,而不是选择的媒体。在 Linux 上使用操作系统命令的类似设置(SSD 与 tmpfs)中,写入 100MB 文件的速度差异非常显着:至tmpfs:$ time dd if=/dev/zero of=space/test.img bs=1048576 count=100100+0 records in100+0 records out104857600 bytes (105 MB, 100 MiB) copied, 0.0231555 s, 4.5 GB/sreal    0m0.030suser    0m0.000ssys 0m0.030s至SSD:$ time dd if=/dev/zero of=test.img bs=1048576 count=100100+0 records in100+0 records out104857600 bytes (105 MB, 100 MiB) copied, 0.165582 s, 633 MB/sreal    0m0.178suser    0m0.000ssys 0m0.060s
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python