Linux下的 /dev/shm

关于/dev/shm

  • 它是linux下一个目录,不在磁盘上,而是在内存里。
  • 它的效率非常高,直接写进内存,无磁盘IO。
  • 它默认最大为内存的一半大小,使用df -h命令可以看到。
  • 它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节。
  • 默认系统就会加载/dev/shm ,就是所谓的tmpfs。
  • tmpfs是一个内存之上构建的文件系统(低内存下也可能会落在swap分区)。
  • Oracle 11g的amm内存管理模式就是使用/dev/shm。

调整shm大小

  1. 临时调整

    mount -o remount,size=1500000k /dev/shm
    
  2. 永久生效

    在/etc/fstab里面添加

    none      /dev/shm        tmpfs   defaults,size=8G        0 0
    
  3. 调整tmpfs大小

    mount -t tmpfs -o size=5G,nr_inodes=5k,mode=700 tmpfs /disk2/tmpfs
    
    • remount 重新加载,数据不丢。(如果umount,数据直接丢失!)
    • size=8G或者50% 指定/dev/shm文件系统字节数。默认为内存容量的一半。
    • nr_blocks作用和size类似,指定文件系统大小,但是指定的是多少个PAGE_CACHE_SIZE
    • nr_inodes=5k 最大inode数量,默认上限为物理内存页数量的一半。
    • mode=700 设置跟目录的初始权限

参考资料


linux inode 简单理解 Nginx 流速限制