我正在使用/dev/shm
tmpfs来编写大量临时文件。
一组8-10个文件/秒,每组包含70kB到750kB的文件。文件集的大小大致相同,并且每秒定期写入一次。
编写这些文件的代码是python调用一个使用fwrite()
进行写入的库。
当应用程序启动时,写入时间从30秒到超过400毫秒。通常它是最大的(700k)文件,可能需要400ms才能写入,但随后会有所不同。
这是一组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)