zoukankan      html  css  js  c++  java
  • SWAP

     转自

    https://www.cnblogs.com/coolops/p/12806595.html#commentform

    什么是swap

    swap是磁盘上的一个区域,可以是一个分区,也可以是一个文件,或者是它们的组合,简单点说,当系统物理内存不够时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in。

    swap的主要功能

    其实上面基本已经将swap的主要功能说了,这里再来重述一下:
    (1)、当物理内存不足的时候,将某些在内存中所占用的程序暂时移动到swap当中,让物理内存可以被需要的程序来使用;
    (2)、Linux会将内存中不常访问的数据保存到swap中,当系统需要再次调用的时候,就把它从swap加载到内存;
    (3)、如果你的主机支持电源管理模式,也就是说,你的Linux主机系统可以进入"休眠"模式的话,那么,运行当中的程序状态则会被记录到swap中去,以作为"唤醒"主机状态的依据;
    (4)、在某些程序运行时,本来就会利用swap特性来存放一些数据,比如在装Oracle11g的时候会检查swap size;

    swap给我们带来什么好处

    上面介绍了swap的主要功能,其实就是swap的优点。在说swap给我们带来好处之前先说说swap的缺点。由于swap是磁盘上的一个区域,要么是文件,要么是分区,甚至它们的组合,其实都逃不脱"在磁盘上",那么很明显的一个缺点就是速度,磁盘的速度和内存的速度不是一个量级的,就算现在的SSD磁盘,还是跟不上内存的速度,所以说如果不停的读写swap,对磁盘的性能是有很大的影响的,尤其是在物理内存吃紧,swap读写频率又高的极端情况下,这时候除了加物理内存别无他法了。

    有的小伙伴看到这里可能在想,哇,我还用它干啥,我直接把我内存加够不就行了。骚年莫急,我将慢慢道来。
    来看看下面这些情况:
    (1)、有些应用程序在启动的时候会需要大量内存,但是在启动完成后需要的内存很小,这时候swap就很是时候了,假如全部用物理内存,其实就有点浪费资源了,谁的钱不是钱呢?你说是吧。
    (2)、现在很多小伙伴开发都用Ubuntu,Ubuntu有休眠的功能,如果需要用到休眠的话,也是需要swap的,它会把休眠之前内存中的数据保存到swap中,你下次用的时候,就直接从swap加载到内存中,省的麻烦。
    (3)、有些小公司讲究节约成本,甚至有的把这个当成kpi了,所以就不能把内存搞得蛮大了,我们就需要在保证系统正常运行所需内存的情况下,配备swap,既可以保证业务运行,也可以防患于未然。
    (4)、现在大部分物理内存都够用了,很多公司也完全放弃了swap。但是谁也不知道下一秒会发生什么问题,比如内存泄漏,比如某个进程需要内存超过预期,这时候如果只有物理内存,可能就会直接OOM了,等不到我们收到报警,进行处理。如果这时候有swap,我们收到物理内存不够报警的时候还会有swap顶一下,回滚或者加内存什么的也有足够的时间,避免手忙脚乱发生生产事故。

  • 相关阅读:
    前端之 http
    事务、存储、索引与慢查询及数据库设计的三大范式
    Navcat 软件使用及 pymysql模块
    MySQL单表查询与多表查询
    IO 模型
    Unable to round-trip http request to upstream: read tcp 192.168.xx.xxx:xxxxx->xx.xxx.xxx.x:xxx: read: operation timed out
    恶补计算机基础知识(一)
    2020 年终总结
    自我总结Java并发编程基础篇(一)
    jvm系列(三):GC算法、垃圾收集器
  • 原文地址:https://www.cnblogs.com/karl-python/p/12963621.html
Copyright © 2011-2022 走看看