跳到文章

共享内存

进程间通信最快的方式是什么?

通过共享内存

那么共享内存是什么?

简单说,就是可以被多个进程访问的同一块内存。

具体使用上,在 Linux 中,有个设备,路径是 /dev/shm,这个路径不在硬盘上,而是在内存上,程序如果需要使用共享内存,直接使用这个目录就可以了。

这个目录默认大小是内存大小的一半。

但是在容器环境下,有了些不同。无论内存多大,/dev/shm 的默认大小是 64MB,在一般情况下,这个大小是够用的。

但是在某些场景下,例如 AI 的分布式训练中,对共享内存的需求很高,这时就需要扩大 /dev/shm 的大小。

我们可以通过挂载 emptyDir 来增大 /dev/shm,例如

        volumeMounts:
        - mountPath: /dev/shm
          name: cache-volume
      volumes:
      - emptyDir:
          medium: Memory
          sizeLimit: 500G
        name: cache-volume