我正在尝试使用/ dev/shm tmpfs来编写我的文件.默认值是没有交换的物理RAM的一半.当我写出超出此挂载大小的内容时,会出现错误"磁盘上没有剩余空间".
我的问题是,它不应该使用交换空间而不是错误输出吗?有没有办法可以通过一个选项让我的应用程序耗尽比为tmpfs分配的更多?
如果我的某个进程正在运行并且几乎占用了/ dev/shm中的所有空间并且我有另一个正在运行的进程(在/ dev/shm之外),它还使用了超过50%的RAM空间,会发生什么?换了哪一个?
例如,假设我的总物理内存为40 GB,tmpfs为20 GB.其中一个进程是使用/ dev/shm,大约是20GB.现在还有另一个进程正在运行,大约需要30GB.换出哪一个进程?还是无法确定?
在我的应用程序中,我有一个进程分叉一个子进程,例如 child1,并且该子进程在磁盘上写入一个巨大的二进制文件并退出。然后,父进程派生出另一个子进程 child2,该子进程读取这个巨大的文件以进行进一步的处理。
文件转储和重新加载使我的应用程序变慢,我正在考虑完全避免磁盘 I/O 的可能方法。我已经确定的可能方法是 ram-disk 或 tmpfs。我可以以某种方式从我的应用程序中实现 ram-disk 或 tmpfs 吗?或者有没有其他方法可以完全避免磁盘 I/O 并可靠地跨进程发送数据。