我正在使用/dev/shm
tmpfs 编写大量临时文件。
一组 8-10 个文件/秒,每组包含的文件范围为 70kB .. 750kB。这些文件集的大小都大致相同,并且大约每秒定期写入一次。
编写这些文件的代码是 python 调用一个用于fwrite()
编写的库。
应用程序启动时,写入时间从 30 毫秒到超过 400 毫秒不等。通常它是最大的(700k)文件,可能需要 400 毫秒才能写入,但它会有所不同。
这是一组 8 的示例,以 ms 为单位给出:42,30,320,76,66,72,102,440。
看来写到的标准偏差/dev/shm
是相当大的。
应用程序运行几分钟后,写入时间直线下降,方差小得多(例如 7、8、15、23、24、32、51、71)——这种行为是稳定的,我已经运行了应用程序几个小时。
没有其他后果应用程序同时运行,并且有足够的空间/dev/shm
。
似乎 Linux 内核正在动态调整应用程序对 /dev/shm
. 我的问题是:我对 linux 内核的怀疑是否正确?如果是这样,是否有任何方法可以提前配置或通知内核以在我的应用程序启动时使用所需的行为?(更快的写入/dev/shm
)
我正在使用 Ubuntu 12.04 LTS
$ uname -a
Linux devsb02 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64
x86_64 GNU/Linux
$ ls -l /dev/shm
lrwxrwxrwx 1 root root 8 Aug 23 12:19 /dev/shm -> /run/shm
$ mount
....
none on /run/shm type tmpfs (rw,nosuid,nodev)