zoukankan      html  css  js  c++  java
  • swap和shm的区别

    在使用docker的过程中,发现其有很多内存相关的命令,对其中的swap(交换内存)和shm(共享内存)尤其费解。于是查阅了一些资料,弄明白了二者的基本区别。

    swap

    • 是一个文件,是使用硬盘空间的一部分作为物理内存来扩展RAM空间的
    • 虽然是物理硬盘的一部分,但是仍然属于RAM,并且属于易失性存储,重启机器会使数据丢失;
    • 空间大小在一般情况下,swap的空间大小设置为物理内存的两倍大小;
    • docker中的swap对应于物理机器linux系统中的swap

    shm

    • 在机器上挂载名可以是dev/shm,也可以是tmpfs
    • 是将虚拟内存的一部分挂载为临时文件系统,用于应用程序的加速,原理是允许其中的数据被不同的应用程序访问;
    • tmpfs中创建的文件很自然地也就创建在了虚拟内存中,因此其存储性质同swap,属于易失性存储;
    • 在docker中使用--shm-size命令挂载的分区是/dev/shm,可以在docker的命令行中使用df -h命令查看;同时也能看到本机的物理机器上的tmpfs分区;
    • 如果在运行docker的物理机器上运行df -h命令,内容是类似下面这样的:
      1
      2
      3
      tmpfs           7.8G  115M  7.7G   2% /dev/shm
      tmpfs 5.0M 4.0K 5.0M 1% /run/lock
      tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup

    大专栏  swap和shm的区别不到docker的/dev/shm空间;并且物理机器上的/dev/shm也是挂载在tmpfs下面的;同时物理机器上tmpfs也挂载了其他临时分区;

    • 即在docker中可以看到docker的挂载情况和本地物理机器的挂载情况,而在物理机器上看不到docker中的挂载情况

    总结

    下面参考链接中给出了swapshm (tmpfs)的区别总结:

    • tmpfs使用内存空间而swap使用物理存储空间
    • 使用df命令时,tmpfs可以看做是挂载的文件系统,但是看不到swap(就像使用df命令看不到物理内存一样)
    • swap有经验意义上推荐的大小,而tmpfs没有;tmpfs的大小与所运行系统的目的有关
    • tmpfs可以使当前运行系统中的应用程序运行的更快,而swap是缓解系统物理内存压力的
    • swap空间满了表明系统正在高负荷运转,会造成性能下降甚至死机;而tmpfs满了以后并不一定有上面的情况
    • tmpfs是作为“增强型”功能出现的,而swap是必须有的功能

    https://gerardnico.com/os/linux/shared_memory
    https://kerneltalks.com/linux/difference-between-tmpfs-and-swap/
    https://www.garron.me/en/bits/create-add-swap-file-ubuntu.html
    https://www.experts-exchange.com/questions/27463115/Diffrence-between-swap-and-dev-shm.html

  • 相关阅读:
    需求分析的方法与实践
    系统架构分析与设计方法论
    装修-3
    装修-2
    装修-1
    daikuan
    JAVA容器全面总结
    超图8C iserver启动成功,访问不了网站localhost:8090/iserver/manager,显示404
    Arcgis中给字段添加属性域
    arcgis for server搭建集群环境
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12256376.html
Copyright © 2011-2022 走看看