精华内容
下载资源
问答
  • 但是,出于经济方面和技术方面的一些原因,物理内存在过去一时期内,一直是比较“稀缺”的资源。对操作系统而言,如果存在物理内存不足的情况,通常使用硬盘空间进行弥补,这也就是我们常看到的虚拟内存技术。...

    在Unix/Linux环境下,Swap是比较重要的空间配置内容。Swap出现的背景源于对物理内存的使用特性。相对于外存储器(硬盘)而言,内存速度具有很强的优势。但是,出于经济方面和技术方面的一些原因,物理内存在过去一个时期内,一直是比较“稀缺”的资源。

    对操作系统而言,如果存在物理内存不足的情况,通常使用硬盘空间进行弥补,这也就是我们常看到的虚拟内存技术。Window环境中,我们称为虚拟内存。在Unix/Linux环境中,也就是Swap空间。

    我们非常熟悉一个经典的Swap设置规则:如果物理内存大小小于2G,设置的Swap分区大小为物理内存的两倍。如果物理内存大小大于等于2G,可以考虑设置Swap分区等于物理内存或者1.5倍内存大小。

    从性能上看,Swap是不能和物理内存相比的,临时性充当分页职能其实也是无奈之举。很多时候的性能问题,都是由于Swap设置不足或者错误设置有关。

    本篇主要介绍如何在系统中动态调整Swap空间大小。

    1、环境介绍

    当前我们采用Linux内核版本2.6,Swap空间情况如下。

    [root@SimpleLinux ~]# uname -r

    2.6.18-128.el5

    [root@SimpleLinux ~]# free

    totalusedfreesharedbufferscached

    Mem:918380292904625476047108192936

    -/+ buffers/cache:52860865520

    Swap:153419601534196

    查看系统中Swap可以使用free命令或者查看/proc/swaps文件。

    [root@SimpleLinux ~]# cat /proc/swaps

    FilenameTypeSizeUsedPriority

    /dev/sda2partition1534196 0-1

    此时的Swap是通过分区/dev/sda2来进行支持。目前很多时候,我们存储都是使用LVM(Logical Volume Manager)来进行管理,当前系统中lv情况如下。

    [root@SimpleLinux ~]# lvs

    LVVGAttrLSizeOrigin Snap%Move Log Copy%Convert

    lv1VolGrp01 -wi-ao 192.00M

    lv2VolGrp01 -wi-a- 600.00M

    从Red Hat官方提供的Swap设置方式看,有三种可选择的策略,分别为LVM空间调整、LVM空间设置和Swap文件。下面笔者从两大类LVM和Swapfile来介绍。

    2、LVM Swap设置

    默认的Linux分区策略中,LVM已经成为标准分区方案。使用LVM的优点是可以进行灵活的空间配置使用和动态调节。对于Swap空间而言,使用LVM也是同样有好处的。

    Swap空间认可的一个专门的磁盘分区,使用LVM的Logical Volume对象,恰恰可以帮助实现这个功能。

    我们首先创建出专门用于Swap的Logical Volume。

    [root@SimpleLinux ~]# lvcreate VolGrp02 -n lvswap01 -L 1000M

    Logical volume "lvswap01" created

    [root@SimpleLinux ~]# lvs

    LVVGAttrLSizeOrigin Snap%Move Log Copy%Convert

    lv1VolGrp01 -wi-ao192.00M

    lv2VolGrp01 -wi-a-600.00M

    lvswap01 VolGrp02 -wi-a- 1000.00M

    同格式化一样,我们需要对新生成的lv进行swap“格式化”处理。

    [root@SimpleLinux ~]#mkswap /dev/VolGrp02/lvswap01

    Setting up swapspace version 1, size = 1048571 kB

    在/etc/fstab中添加上对swap空间的设置。

    [root@SimpleLinux ~]# cat /etc/fstab

    LABEL=//ext3defaults1 1

    tmpfs/dev/shmtmpfsdefaults0 0

    devpts/dev/ptsdevptsgid=5,mode=6200 0

    sysfs/syssysfsdefaults0 0

    proc/procprocdefaults0 0

    UUID="5e007a89-326d-4a71-9744-8cd7d36a90a7"/voltest01ext3defaults1 1

    /dev/VolGrp02/lvswap01swapswapdefaults0 0

    LABEL=SWAP-sda2swapswapdefaults0 0

    加载上swapon空间。

    [root@SimpleLinux ~]# swapon -va

    swapon on /dev/VolGrp02/lvswap01

    [root@SimpleLinux ~]# cat /proc/swaps

    FilenameTypeSizeUsedPriority

    /dev/sda2partition1534196 0-1

    /dev/mapper/VolGrp02-lvswap01partition1023992 0-2

    [root@SimpleLinux ~]# free

    totalusedfreesharedbufferscached

    Mem:918380294152624228047424193544

    -/+ buffers/cache:53184865196

    Swap:255818802558188

    注意,系统的swap空间已经添加上,容量已经增加。重启之后,我们依然可以看到对应空间的存在。

    [root@SimpleLinux ~]# free

    totalusedfreesharedbufferscached

    Mem:918380204772713608014620152980

    -/+ buffers/cache:37172881208

    Swap:255818802558188

    3、LVM Swap情况下,空间调整

    进行Swap调整时非常常见的动作,我们平时可能根据系统运行情况进行动态调整。基于LVM的调整要注意一个问题,就是需要先swapoff空间,之后调整,最后再加载上。

    我们先试验下如何进行swap缩小。先进行swap关闭。

    [root@SimpleLinux ~]# swapoff -v /dev/VolGrp02/lvswap01

    swapoff on /dev/VolGrp02/lvswap01

    [root@SimpleLinux ~]# free

    totalusedfreesharedbufferscached

    Mem:918380204856713524014724153064

    -/+ buffers/cache:37068881312

    Swap:153419601534196(已经缩小)

    [root@SimpleLinux ~]# lvs

    LVVGAttrLSizeOrigin Snap%Move Log Copy%Convert

    lv1VolGrp01 -wi-ao192.00M

    lv2VolGrp01 -wi-a-600.00M

    lvswap01 VolGrp02 -wi-a- 1000.00M

    缩小lv对象。

    [root@SimpleLinux ~]# lvreduce /dev/VolGrp02/lvswap01 -L -400M

    WARNING: Reducing active logical volume to 600.00 MB

    THIS MAY DESTROY YOUR DATA (filesystem etc.)

    Do you really want to reduce lvswap01? [y/n]: y

    Reducing logical volume lvswap01 to 600.00 MB

    Logical volume lvswap01 successfully resized

    [root@SimpleLinux ~]# lvs

    LVVGAttrLSizeOrigin Snap%Move Log Copy%Convert

    lv1VolGrp01 -wi-ao 192.00M

    lv2VolGrp01 -wi-a- 600.00M

    lvswap01 VolGrp02 -wi-a- 600.00M

    之后再使用swapon进行启动。

    [root@SimpleLinux ~]#mkswap /dev/VolGrp02/lvswap01(重新格式化,通知下File System)

    Setting up swapspace version 1, size = 629141 kB

    [root@SimpleLinux ~]# swapon -va

    swapon on /dev/VolGrp02/lvswap01

    swapon on /dev/sda2

    swapon: /dev/sda2: Device or resource busy

    [root@SimpleLinux ~]# free

    totalusedfreesharedbufferscached

    Mem:918380205340713040014852153244

    -/+ buffers/cache:37244881136

    Swap:214858802148588

    [root@SimpleLinux ~]# cat /proc/swaps

    FilenameTypeSizeUsedPriority

    /dev/mapper/VolGrp02-lvswap01partition6143920-3

    /dev/sda2partition1534196 0-2

    [root@SimpleLinux ~]#

    下面实验拓展lv动作。

    [root@SimpleLinux ~]# swapoff -v /dev/VolGrp02/lvswap01

    swapoff on /dev/VolGrp02/lvswap01

    [root@SimpleLinux ~]# lvresize /dev/VolGrp02/lvswap01 -L 900M

    Extending logical volume lvswap01 to 900.00 MB

    Logical volume lvswap01 successfully resized

    [root@SimpleLinux ~]#mkswap /dev/VolGrp02/lvswap01

    Setting up swapspace version 1, size = 943714 kB

    [root@SimpleLinux ~]# swapon -va

    swapon on /dev/VolGrp02/lvswap01

    swapon on /dev/sda2

    swapon: /dev/sda2: Device or resource busy

    [root@SimpleLinux ~]# free

    totalusedfreesharedbufferscached

    Mem:918380205336713044014928153248

    -/+ buffers/cache:37160881220

    Swap:245578802455788

    [root@SimpleLinux ~]# cat /proc/swaps

    FilenameTypeSizeUsedPriority

    /dev/mapper/VolGrp02-lvswap01partition9215920-4

    /dev/sda2partition1534196 0-2

    删除swap lv比较简单,就是进行卸载之后从/etc/fstab中删除行信息即可。

    [root@SimpleLinux ~]#swapoff -v /dev/VolGrp02/lvswap01

    swapoff on /dev/VolGrp02/lvswap01

    [root@SimpleLinux ~]# cat /etc/fstab

    LABEL=//ext3defaults1 1

    tmpfs/dev/shmtmpfsdefaults0 0

    devpts/dev/pts devptsgid=5,mode=6200 0

    sysfs/syssysfsdefaults0 0

    proc/procprocdefaults0 0

    /dev/VolGrp01/lv1/voltest01ext3defaults0 0

    LABEL=SWAP-sda2swapswapdefaults0 0

    4、使用文件拓展swap空间

    在windows下,虚拟内存表现为系统目录中的一个文件。Swap也可以这样实现。首先,swap空间如下:

    [root@SimpleLinux ~]# free

    totalusedfreesharedbufferscached

    Mem:918380204436713944014680153000

    -/+ buffers/cache:36756881624

    Swap:153419601534196

    使用dd创建一个空文件,在文件系统上。

    [root@SimpleLinux ~]#dd if=/dev/zero f=/swapfile bs=1024 count=65536

    65536+0 records in

    65536+0 records out

    67108864 bytes (67 MB) copied, 0.305277 seconds, 220 MB/s

    [root@SimpleLinux ~]# mkswap /swapfile

    Setting up swapspace version 1, size = 67104 kB

    [root@SimpleLinux ~]# cd /

    [root@SimpleLinux /]# ls -l | grep swapfile

    -rw-r--r--1 rootroot67108864 Oct 10 17:02 swapfile

    再通过swapon命令进行加载动作。

    [root@SimpleLinux /]#swapon /swapfile

    [root@SimpleLinux /]# free

    totalusedfreesharedbufferscached

    Mem:918380271580646800014884218564

    -/+ buffers/cache:38132880248

    Swap:159972401599724

    [root@SimpleLinux /]# cat /proc/swaps

    FilenameTypeSizeUsedPriority

    /dev/sda2partition1534196 0-1

    /swapfilefile655280-2

    删除swap文件,就可以实现卸载动作。不过要注意首先需要进行swapoff。

    [root@SimpleLinux /]# swapoff /swapfile

    [root@SimpleLinux /]# free

    totalusedfreesharedbufferscached

    Mem:918380271580646800014920218564

    -/+ buffers/cache:38096880284

    Swap:153419601534196

    [root@SimpleLinux /]# rm -r swapfile

    rm: remove regular file `swapfile'? y

    [root@SimpleLinux /]# cat /proc/swaps

    FilenameTypeSizeUsedPriority

    /dev/sda2partition1534196 0-1

    5、结论

    Swap是我们进行性能调优过程中,经常使用的手段方法。掌握Swap的设置手段,对日常工作很有帮助。

    展开全文
  • 低配服务器通常会使用swap来缓解服务器内存压力,但是很设置之后即使内存已经跑爆了 swap使用量也不过才100MB左右的使用量。此时我们可以通过调整swappiness的值来提高使用优先级。 在ubunt系统中swappiness...

    低配服务器通常会使用swap来缓解服务器内存压力,但是很多设置之后即使内存已经跑爆了 swap使用量也不过才100MB左右的使用量。此时我们可以通过调整swappiness的值来提高使用优先级。

    在ubunt系统中swappiness默认60 而在centos中默认10 所有在centos中swap内存的使用率是很低的。

    1.查看当前swappiness值
     $ cat /proc/sys/vm/swappiness
    2.修改swappiness值为10(临时修改,重启后即还原为默认值)
     $ sudo sysctl vm.swappiness=10

    3.永久修改swappiness默认值(重启生效)
    $ sudo gedit /etc/sysctl.conf
    在文档的最后加上:
      vm.swappiness=10
    保存重启,搞定收工!

    不过设置之后mysql的内存使用大部分都到了swap但是php的还是停留在内存上,200MB的内存只会使用3-5MB的虚拟内存

    同理如果需要优先使用内存 则调低swappiness的值即可

    展开全文
  • 前言5277c29a-22a8-4ec2-ac72-85c76c4e1d11.png最近折腾android系统比较,也有了些心的,故有了这篇文章。 android的swap分区与linux相同,都是用于数据交换的,类似于windows上的虚拟内存。合理设置swap能提升...

    前言

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    5277c29a-22a8-4ec2-ac72-85c76c4e1d11.png

    最近折腾android系统比较多,也有了些心的,故有了这篇文章。  android的swap分区与linux相同,都是用于数据交换的,类似于windows上的虚拟内存。合理设置swap能提升系统的速度,降低系统因内存不足而关闭后台程序的频率。但如果设置不当,反而会拖慢系统速度,影响使用体验。

    本文就从android内存管理机制出发,介绍合理设置swap的方法。由于本人并不是开发者,对android的内存管理机制的理解可能有偏差的地方,欢迎指证,废话不多,lets go。

    一、android的内存管理机制

    我们知道android的程序都是没有关闭键的,所有大部分程序推出后还是有一部分数据驻留在内存里。但内存不可能无限大,打开程序一多,又都不完全退出,时间一长,再大的内存也是不够用的,更何况hero的可用内存仅192mb(总内存288mb,96mb被radio占用,另外的192mb系统可用),去掉os占掉的部分,真正可获得的内存不到140mb,随便用用,内存就耗完了。

    当系统内存不足时内存管理机制就开始起作用了,会在程序列表里选择长时间空闲的程序予以关闭,以保证系统的运行速度。这种机制在大部分时间里都运行得不错。但有些比较让人恼火的地方在于,并不是所有的程序被关闭时都保存现场的,比如浏览器。

    在最坏的情况里,你正在浏览器里更新你的博客,这时突然来了个电话,打完电话后你发现浏览器因为内存不足而被强制关闭了,当你再打开浏览器时,赫然出现的是浏览器主页的时候,那真是叫天天不应,叫地地不灵了。当然这种情况不会经常发生,即便发生了有时你的损失也仅仅是那些打开的标签页,但这种问题是切实存在的。

    二、什么是swap?swap有什么用?

    前文说道,swap分区类似于windows的虚拟内存,是将sd卡上的空间作为系统内存的补充。它的优缺点也跟虚拟内存类似,可以让系统同时运行很多的程序或者对内存需求更大的程序,但读写的速度大大低于物理内存。

    由于sd卡的速度较慢,在卡内的swap主要作用是建立一个交换空间,当有较大内存需求的软件(如电话、相机等)突然运行时,可以将后台程序先暂存在swap分区里,待该软件使用完毕,内存又有空余的时候,再将swap内的程序数据转到内存里,以降低程序被关闭的可能。

    有一点需要注意的是,开启swap后,并不是说程序不会被关闭了,而是说被关闭的几率变小了。

    三、给sd卡分区

    使用swap的花需要给sd卡分区,1.5.2的RA Recovery就自带给sd卡分区的功能,直接选择Partition sdcard,并一路按home即可。

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    a1571b50-2b34-4d60-b0d0-512ede79dec1.png

    recovery主界面,选择Partition sdcard即可对sd卡进行分区

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    be71e19b-df46-460d-ad2f-f2bf4af878fb.png

    在子菜单里,选择Partiton SD即开始对SD卡分区操作

    第一个32mb是设置swap分区大小,第二个512mb是设置ext分区的大小,用作app2sd。

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    0ac4666a-2910-4fb0-9c44-cd3e1c4f44bb.png

    第一个Swap-size的大小即Swap分区的大小。使用轨迹球上下滚动即可调节分区大小。设置为0即不分此分区。一般使用默认即可。

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    f54dba55-00bd-4df0-9ae2-6df297e8de76.png

    第二个Ext2-size即ext分区的大小,用来将程序装在卡上,也可以用轨迹球上下滚动调节大小,一般也是默认即可。

    分区完成后,选择ext2 to ext3升级拉的文件系统,以加快卡的读取速度。

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    5251ff2f-ddf3-4e70-badd-27acee5fafa3.png

    注意不要升级到ext4分区,1.5.2的recovery对ext4的支持不好,会导致手机无法通过nand备份和恢复系统,所以只要升级到ext3即可

    升级结束后,选择reboot system now重启系统即可。

    四、swapper软件的使用

    要开始使用swap分区的话,需要先下载swapper软件,在电子市场里直接有下载,免费的,直接搜索即可。

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    5277c29a-22a8-4ec2-ac72-85c76c4e1d11.png

    Swapper软件图标

    swapper软件除了可以开启使用swap分区外,还能在卡上建立swap文件,方便sd卡没分区的用户使用。但由于在卡内使用swap时,每次连接电脑加载sd卡后,再次取消加载就会显示sd卡损坏,必须重启才能恢复,较为麻烦,所以还是建议使用swap分区。

    swapper默认使用卡内swap需要在设置,高级设置里勾选使用swap分区。选中后返回swap的主界面,选择打开swap即可。至此,你已经成功建立并开始了swap。

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    6cb634ce-f38b-4743-a85c-6b8ca08ac9ad.png

    swapper软件的主界面,由于默认不是使用swap分区,故点击设置进行更改

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    1b467c27-e5da-47cb-a8f4-9280c26f138d.png

    点击设置后会出现Swapper的首选项界面,点击高级选项

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    e9ef4aab-d514-4778-90e1-c7507988ae1d.png

    在高级设置里,勾选“使用SWAP”分区,即可开启SD卡里的SWAP分区的使用

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    631683c6-6625-49d9-963b-b983825e2370.png

    回到主界面,点击Swap ON,出现All done后,即可开启swap分区

    7a562e50adfe?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    362629d4-714b-44f6-a4b1-261a79b43e34.png

    点击获取信息,即出现了Swap分区和内存使用情况的信息,这里看到swap分区总大小32MB

    后记

    swap分区不宜过大,因为sd卡的读取速度实在太慢,设置太大的话,会有太多数据滞留在卡内,拖慢慢系统速度。笔者曾经就设置过288mb的swap,应用程序是很少关闭了,但使用时间一长,会导致机器卡到完全无法操作,因为太多数据滞留在SD卡里,SD卡的读卡速度是系统的最大瓶颈,这时必须手动关闭程序释放内存才能正常使用,这样就得不偿失了,所以大家还是要按照自己的使用需求,合理设置swap大小和swappness的数值。

    展开全文
  • Linux - Swap

    2021-05-18 06:48:18
    swap简介swap是啥首先,swap是硬盘上的一块空间。其次,当内存没有多余空间的时候,可以将一部分数据交换到swap空间。...但是,硬盘的速度比内存慢太了。因此swap只是对内存的一种补充,是在内存不足时对内...

    swap简介

    swap是啥

    首先,swap是硬盘上的一块空间。

    其次,当内存没有多余空间的时候,可以将一部分数据交换到swap空间。也就是将内存中的一部分数据放到硬盘中,并释放内存空间。这样,释放出的内存空间就又可以被利用来存储其他数据了。

    这样,本来只有4G的内存,如果swap有2G的话,可使用的内存可以认为是6G。

    但是,硬盘的速度比内存慢太多太多了。因此swap只是对内存的一种补充,是在内存不足时对内存的扩充,但是不能代替内存使用。

    swap与内存的交换策略

    内存不足时,操作系统会选择最久没被使用的内存数据,交换到swap空间。

    注意,交换操作是由操作系统来进行的。

    什么时候使用swap

    系统在什么情况或条件下才会使用Swap分区的空间呢? 其实是Linux通过一个参数swappiness来控制的。当然还涉及到复杂的算法。

    这个参数值可为 0-100,控制系统 swap 的使用程度。

    0告诉内核尽可能的不要将内存数据移到swap中,也即只有在迫不得已的情况下才这么做,而100告诉内核只要有可能,尽量的将内存中不常访问的数据移到swap中。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法

    查看当前系统中swappiness的值

    cat /proc/sys/vm/swappiness

    修改当前系统中swappiness的值

    sudo sysctl vm.swappiness=10

    上面通过sysctl修改的swappiness值在系统重启后会失效,要想重启后继续生效,需要修改配置文件/etc/sysctl.conf,将下面这行修改成10,如果文件中找不到这行的话,在文件末位加上这行就可以了

    vm.swappiness=10

    swap设置

    swap大小

    既然配置swap对桌面系统有帮助,那么配置多少大小的swap比较合适呢?下面是ubuntu给出的建议:

    当物理内存小于1G且不需要休眠时,设置和内存同样大小的swap空间即可;当需要休眠时,建议配置两倍物理内存的大小,但最大值不要超过两倍内存大小

    当物理内存大于1G且不需要休眠时,建议大小为round(sqrt(RAM)),其中RAM为物理内存大小;当需要休眠时,建议大小是RAM+round(sqrt(RAM)),但最大值不要超过两倍内存大小

    如果两倍物理内存大小的swap空间还不够用,建议增加内存而不是增加swap

    开启/关闭swap

    Linux下有两种类型的swap空间,swap分区和swap文件,他们有各自的特点:

    swap分区上面由于没有文件系统,所以相当于内核直接访问连续的磁盘空间,效率相对要高点,但由于swap分区一般安装系统时就分配好了了,后期要缩减空间和扩容都很不方便。

    swap文件放在指定分区的文件系统里面,所以有可能受文件系统性能的影响,但据说2.6版本以后的内核可以直接访问swap文件对应的物理磁盘地址,相当于跳过了文件系统直接访问磁盘,不过如果swap文件在磁盘上的物理位置不连续时,还是会对性能产生不利影响,但其优点就是灵活,随时可以增加和移除swap文件。

    查看系统中已经配置的swap

    dev@dev:~$ swapon -s

    Filename Type Size Used Priority

    /dev/dm-1 partition 524284 0 -1

    #注:如果没有任何输出的话,说明没有swap

    如果配置有多个swap分区或者文件的话,这里将会有多行,每行代表一个正在被系统使用的swap分区或文件,下面是每个字段的意思:

    Filename:如果swap类型是分区,这里将是分区的路径,如果swap类型是文件,这里将是文件的路径

    Type:swap的类型,partition代表这是一个swap分区,file代表这是一个swap文件

    Size:swap的大小,单位是k,这里524284表示的差不多是512M

    Used:已经被使用的大小,这里0表示还没有被使用到

    Priority:优先级,优先级高的swap将会被优先使用,同等优先级的swap将会被均匀的使用(round-robin算法),优先级可以通过“swapon -p”命令来设置

    查看系统中swap in/out的情况

    并不是swap空间占用多就一定性能下降,真正影响性能是swap in和out的频率,频率越高,对系统的性能影响越大,我们可以通过vmstat命令来查看swap in/out的频率

    #参数2表示每两秒统计一次,si和so两列就是每秒swap in和out的次数

    dev@ubuntu:~$ vmstat 2

    procs------------memory--------------swap----io-----system-----------cpu-----

    r b swpd free buff cache si so bi bo in cs us sy id wa st

    0 0 70232 75620 7940 209476 0 0 0 0 111 180 0 1 99 0 0

    0 0 70232 75620 7940 209476 0 0 0 0 116 186 1 1 99 0 0

    0 0 70228 75620 7940 209476 2 0 2 0 120 193 1 1 98 1 0

    0 0 70228 75620 7940 209476 0 0 0 0 117 186 0 0 100 0 0

    0 0 70228 75620 7940 209476 0 0 0 0 113 184 0 1 99 0 0

    添加swap分区

    在添加swap分区前,首先得有一个空闲的分区,如果是一块新的磁盘,可以用fdisk来创建一个新的分区用于swap。

    注意:磁盘分区操作一定要小心,弄不好就会造成数据丢失、系统挂掉的后果。磁盘分区操作不是本篇要介绍的内容,所以这里不会讨论fdisk怎么用。

    #本篇使用的测试环境是虚拟机,/dev/sdb是一块新加的硬盘并且已经用fdisk创建好了一个分区

    #本例中将使用/dev/sdb1这个分区

    dev@dev:~$ sudo fdisk -l /dev/sdb

    Device Boot Start End Sectors Size Id Type

    /dev/sdb1 2048 4194303 4192256 2G 83 Linux

    #创建swap分区

    dev@dev:~$ sudo mkswap /dev/sdb1

    Setting up swapspace version 1, size = 2 GiB (2146430976 bytes)

    no label, UUID=d69621de-618a-4bea-9a96-b8e8b0d0ea40

    #查看系统中现在正在使用的swap,以便于和添加后做比较

    dev@dev:~$ swapon -s

    Filename Type Size Used Priority

    /dev/dm-1 partition 524284 0 -1

    #将新的分区加入到系统中

    dev@dev:~$ sudo swapon /dev/sdb1

    #这时候可以看到新的swap分区已经被加入到系统中了,并且优先级比原来的要低

    dev@dev:~$ swapon -s

    Filename Type Size Used Priority

    /dev/dm-1 partition 524284 0 -1

    /dev/sdb1 partition 2096124 0 -2

    #为了保证系统重启后会自动加载我们新的swap分区,需要修改/etc/fstab文件

    dev@dev:~$ sudo sh -c 'echo "/dev/sdb1 none swap sw 0 0" >> /etc/fstab'

    #查看一下,确保写入成功,这里的第一条是原来的系统的swap分区,第二条是我们刚添加的

    dev@dev:~$ grep swap /etc/fstab

    /dev/mapper/dev--vg-swap_1 none swap sw 0 0

    /dev/sdb1 none swap sw 0 0

    添加swap文件

    添加swap文件就简单多了,也没有分区操作那么有风险。

    #先创建一个新的512M的文件,用来作为swap文件,文件路径可以随便

    #fallocate这个命令依赖于文件系统,有些老的文件系统不支持这个命令,比如ext2,

    #这种情况下可以用dd来实现同样的效果:

    #sudo dd if=/dev/zero of=/mnt/512MiB.swap bs=1024 count=524288

    #fallocate和dd的区别在于:

    #fallocate是先声明这么多,然后在具体用到的时候文件系统才分配真正的物理磁盘空间,就是用一点分配一点,

    #而dd是一开始就实实在在的写了512m的数据到物理磁盘空间。

    #所以作为测试来说fallocate方便些,因为刚开始不用写任何数据,要快

    dev@dev:~$ sudo fallocate -l 512m /mnt/512MiB.swap

    #修改文件的权限,避免其他用户对这个文件进行误操作

    dev@dev:~$ sudo chmod 600 /mnt/512MiB.swap

    #格式化为swap文件

    dev@dev:~$ sudo mkswap /mnt/512MiB.swap

    #将新的文件加入到系统中

    dev@dev:~$ sudo swapon /mnt/512MiB.swap

    #这时候可以看到新的swap文件已经被加入到系统中了,类型为file

    #这里可以看到由于优先级最高,第一个swap分区/dev/dm-1已经被使用了24K

    dev@dev:~$ swapon -s

    Filename Type Size Used Priority

    /dev/dm-1 partition 524284 24 -1

    /dev/sdb1 partition 2096124 0 -2

    /mnt/512MiB.swap file 524284 0 -3

    #从free命令的输出可以看到,经过前面两轮添加swap分区和文件,

    #现在系统的交换空间已经变成3G(3144692K)了

    dev@dev:~$ free

    total used free shared buff/cache available

    Mem: 500192 39112 9564 1996 451516 430820

    Swap: 3144692 24 3144668

    #同样为了保证系统重启后会自动加载我们新的swap文件,需要修改/etc/fstab文件

    dev@dev:~$ sudo sh -c 'echo "/mnt/512MiB.swap none swap sw 0 0" >> /etc/fstab'

    关闭swap

    #停掉所有系统正在使用的swap

    dev@dev:~$ sudo swapoff -a

    #swapon -s命令没有任何输出,free命令显示swap空间为0,说明swapoff成功

    dev@dev:~$ swapon -s

    dev@dev:~$ free

    total used free shared buff/cache available

    Mem: 500192 35924 348888 2004 115380 433924

    Swap: 0 0 0

    #当然我们还需要修改/etc/fstab,否则下次重启后,系统又会重新挂载相应的swap分区和文件

    #使用自己喜欢的编辑器,将/etc/fstab中跟swap相关的三行删掉即可(本例中是三行,请根据实际情况调整)

    如何查哪些进程使用了Swap

    通过如下命令,能查看所有进程的使用swap情况

    cat /proc/$(pid)/smaps

    查看某个进程swap占用内存大小脚本:

    grep "Swap" /proc/$pid/smaps | awk -F':' '{print $2}' | awk -F' ' 'BEGIN{sum=0}{if($1>0)sum+=$1} END{print sum}'

    查看所有进程使用swap情况脚本:

    pids=$(cd /proc; ls | grep "^[0-9]")

    for pid in $pids;

    do

    if [[ $pid -lt 100 ]];then

    continue

    fi

    echo -n "pid=$pid====="

    grep "Swap" /proc/$pid/smaps | awk -F':' '{print $2}' | awk -F' ' 'BEGIN{sum=0}{if($1>0)sum+=$1} END{print sum}'

    done

    参考

    展开全文
  • Linux SWAP详解

    2021-01-27 05:36:23
    Linux内存管理是一套非常复杂的系统,而swap只是其中一很小的处理逻辑。希望本文能让读者了解Linux对swap的使用大概是什么样子。阅读完本文,应该可以帮你解决以下问题:1、swap到底是干嘛的?2、swappiness到底是...
  • linux 中swap 原理简介

    2021-11-22 14:35:26
    1.什么是swap 从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到 swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。 也就是说,当内存不够用时,我们使用 swap 分区...
  • 「Linux」SWAP 深度解读

    2021-05-16 13:17:29
    Linux内存管理是一套非常复杂的系统,而swap只是其中一很小的解决逻辑。主要是:swap、swappiness及kswapd原理,swap分区优先级的妙用。处理以下问题:1、 swap究竟是干嘛的?2、 什么是内存水位标记?3、 swap...
  • 往往会给系统建设一个适中大小的SWAP大小,但实际生产系统中,也经常发现有一些,因为SWAP设置过小的原因,而导致物理内存、SWAP全部1、swap的作用系统管理和DBA都知道,在Linux和UNIX系统上都有一个SWAP分区,,该...
  • linux中增加swap分区文件的步骤方法:1、检查当前的分区情况(使用free -m或cat /proc/swaps ):[root@db2 root]# free -mtotal used free shared buffers cachedMem: 1006 84 922 0...
  • 我就是认真:Linux SWAP 深度解读(必须收藏)http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097&idx=1&sn=a3d38e3af2c9d8d431c46fe7680b428d&scene=2&srcid=0606f21oK1jm1...
  • 刚好想深入探讨一波,考察点应该是值传递和引用传递,和c不一样,但因为这,也意识到了java的骚操作更。自己的实现:两种方式://数组public static void swap (int[] arr) {int temp = arr[0];arr[0] = arr[1];...
  • 一、swap分区简介 ...众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每进程的安全保
  • 原文:centos磁盘安装与磁盘分区方案详解这里只摘录了该文中分区方案和swap大小等内容,跳过了具体的命令和设置步骤原文1作者:不详CentOS分区方案( 1 )最基本分区方案:/ :建议大小在 5GB 以上。swap :即交换分区...
  • swap 介绍

    2021-10-21 15:42:01
    Swap简介: Linux系统的Swap分区,即交换区, Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。 那些被释放的空间可能来自一些很长...
  • 目录 一、什么是swap? 二、为什么需要swap? 三、swap的缺点? ...四、到底要不要swap?...五、怎么配置swap?...六、查看系统中已经配置的swap ...如果一定要设置,设置大比较合适? swap space是...
  • 1.背景介绍这篇文章介绍一下Linux中swap与memory。对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一量级,可是高于磁盘不止一量级。因此,程序和数据若是在内存的话,会有很是快的读写速度。可是,...
  • 查看占用服务器要多swap内存的进程命令:for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr |...
  • Linux SWAP 深度解读

    2021-01-17 13:57:40
    Linux内存管理是一套非常复杂的系统,而swap只是其中一很小的处理逻辑。希望本文能让读者了解Linux对swap的使用大概是什么样子。阅读完本文,应该可以帮你解决以下问题:1、swap到底是干嘛的?2、swappiness到底是...
  • SWaPSWAP分区分析

    2021-01-27 05:36:24
    展开全部SWAP就是LINUX下的虚拟内存分区,它62616964757a686964616fe78988e69d8331333361303030的作用是在物理内存使用完之后,...需要注意的是,虽然这个SWAP分区能够作为虚拟的内存,但它的速度比物理内存可是慢了...
  • swap(什么是swap)

    千次阅读 2021-05-21 09:36:19
    由于低端安卓手机配备的运行内存往往比较小,以中兴V880国行版为例,该机配备的运行内存只有256.swap函数一般是一程序员自定义函数。通常是实现两变量数值的交换。比如 int a = 2; int b =3; swap(a,b); //一般...
  • Linux Swap 介绍

    2021-03-25 00:18:04
    如下图所示,swap分区内部会以page大小为单位划分出多个swap slot,同时通过swap_map对每个slot的使用情况进行记录,为0代表空闲,大于0则代表该slot被map的进程数量。 图3 swap info 发生内存回收时,一个内存页会...
  • 但是数组有所不同,数组是一包括有很元素的数据类型,不能像处理基本数据类型那样直接对数组进行操作,需要借助指针。所以之间的区别也体现在了这三交换函数的使用上面; (1)基本数据类型可以使用swap、...
  • 提到交换两数a, b的值,一定可以想起很方法,a = a+b;b = a - b; a = a - b;借助temp的方法等等,但是如果食用swap方法的话,这问题可是很有研究的了,要求使用swap(Integer a, Integer b)签名,交换a,b的值...
  • linux调整swap大小

    2021-05-19 09:39:05
    方法一:如果磁盘有剩余的空间,用分区工具新建一个swap分区.并写到/etc/fstab里面.再 #swapon -a方法二:可以用一个文件做交换分区.1、建立swap文件,比如在/tmp下建立swapfree作为交换文件。建立#dd if=/dev/zero ...
  • linux下创建swap分区

    2021-05-20 17:23:06
    两种不同的方式创建swap分区第一种方法:fdisk /dev/sdan (新建一分区为/dev/sda6)t (修改分区的id)82 (swap的id为82)w (重写分区表)partprobe (同步内存和分区表信息)mkswap /dev/sda6 (格式化成swap分区)swapon /...
  • linux下调整swap空间

    2021-05-10 06:55:33
    SWAP空间不够用的情况下,如何手工添加SWAP空间以下的操作都要在root用户下进行,首先先建立一分区,采用dd命令比如dd if=/dev/zero of=/home/swap bs=1024 count=1024000这样就会创建/home/swap这么一分区...
  • 【Linux】Swap与Memory

    2021-05-17 23:06:02
    背景介绍Memory指机器物理内存,读写速度低于CPU一量级,但是高于磁盘不止一量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,且内存的断电丢失数据也是不能把...
  • 在我们使用Linux命令查看内存空间的时候,会看到有swap数据,那么swap究竟是什么的?他起到什么作用呢? swap的作用 我们在安装系统的时候已经建立了 swap 分区。swap 分区通常被称为交换分区,这是一块特殊的硬盘...
  • 一系统使用的swap比较[root@localhost~]#free-mtotalusedfreesharedbufferscachedMem:395239054704171342-/+buffers/cache:21...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 285,896
精华内容 114,358
关键字:

多个swap