查看linux中swap内存的相关参数

内容主要来源于:linux的内存回收和交换

各项命令查看的linux环境是:Linux SUSE-33 2.6.32.12-0.7-defaul

zone?

内存管理的相关逻辑都是以zone为单位的,这里zone的含义是指内存的分区管理。Linux将内存分成多个区,主要有直接访问区(DMA)、一般区(Normal)和高端内存区(HighMemory)。内核对内存不同区域的访问因为硬件结构因素会有寻址和效率上的差别。如果在NUMA架构上,不同CPU所管理的内存也是不同的zone。

/proc/zoneinfo?

查看当前系统的内存水位标记。

[email protected]:/sbin> cat /proc/zoneinfo
Node 0, zone      DMA
  pages free     3929
        min      7
        low      7
        high     10
        scanned  0
        spanned  4096
        present  3832
    nr_free_pages 3929
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
    numa_hit     1
    numa_miss    0
    numa_foreign 0
    numa_interleave 0
    numa_local   1
    numa_other   0
        protection: (0, 3768, 4016, 4016)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 1
  prev_priority:     12
  start_pfn:         0
  inactive_ratio:    1
Node 0, zone    DMA32
  pages free     16200
        min      1898
        low      1898
        high     2847
        scanned  0
        spanned  1044480
        present  964664
    nr_free_pages 16200
    nr_inactive_anon 143811
    nr_active_anon 698860
    nr_inactive_file 18465
    nr_active_file 16433
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 830848
    nr_mapped    2043
    nr_file_pages 46721
    nr_dirty     13
    nr_writeback 0
    nr_slab_reclaimable 5649
    nr_slab_unreclaimable 3655
    nr_page_table_pages 6618
    nr_kernel_stack 371
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 26548123
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     18
    numa_hit     12025255812
    numa_miss    0
    numa_foreign 0
    numa_interleave 0
    numa_local   12025255812
    numa_other   0
        protection: (0, 0, 248, 248)
  pagesets
    cpu: 0
              count: 130
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 133
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         4096
  inactive_ratio:    5
Node 0, zone   Normal
  pages free     153
        min      125
        low      125
        high     187
        scanned  0
        spanned  64512
        present  54158
    nr_free_pages 153
    nr_inactive_anon 11135
    nr_active_anon 9662
    nr_inactive_file 2144
    nr_active_file 2137
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 18039
    nr_mapped    1155
    nr_file_pages 7039
    nr_dirty     26
    nr_writeback 0
    nr_slab_reclaimable 690
    nr_slab_unreclaimable 21507
    nr_page_table_pages 1063
    nr_kernel_stack 205
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 1879470
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     1
    numa_hit     443690329
    numa_miss    0
    numa_foreign 0
    numa_interleave 8539
    numa_local   443690329
    numa_other   0
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 89
              high:  90
              batch: 15
  vm stats threshold: 8
    cpu: 1
              count: 47
              high:  90
              batch: 15
  vm stats threshold: 8
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         1048576
  inactive_ratio:    1
[email protected]:/sbin> 
从上边可看出有DMA、DMA32、Normal这三个内存区。

swappiness?

/proc/sys/vm/swappiness这个文件,这个文件的值用来定义内核使用swap的积极程度,是个可以用来调整跟swap相关的参数。值越高,内核就会越积极的使用swap,值越低就会降低对swap的使用积极性。这个文件的默认值是60,可以的取值范围是0-100。

1)swappiness这个参数实际上是指导内核在清空内存的时候,是更倾向于清空file-backed内存还是更倾向于进行匿名页的交换的。当然,这只是个倾向性,是指在两个都够用的情况下,更愿意用哪个,如果不够用了,那么该交换还是要交换。

2)如果swappiness设置为100,那么匿名页和文件将用同样的优先级进行回收。很明显,使用清空文件的方式将有利于减轻内存回收时可能造成的IO压力。因为如果file-backed中的数据不是脏数据的话,那么可以不用写回,这样就没有IO发生,而一旦进行交换,就一定会造成IO。所以系统默认将swappiness的值设置为60,这样回收内存时,对file-backed的文件cache内存的清空比例会更大,内核将会更倾向于进行缓存清空而不是交换。

3)如果这个值为0,那么内存在free和file-backed(文件映射页的大小)使用的页面总量小于高水位标记(high water mark)之前,不会发生交换。有剩余内存的情况下可能发生交换。

[email protected]33:/proc/sys/vm> cat /proc/sys/vm/swappiness 60 

min_free_kbytes?

/proc/sys/vm/min_free_kbytes,这个参数本身决定了系统中每个zone的watermark[min]的值大小,然后内核根据min的大小并参考每个zone的内存大小分别算出每个zone的low水位和high水位值。

[email protected]33:/proc/sys/vm> cat /proc/sys/vm/min_free_kbytes
8127

zone_reclaim_mode?

zone_reclaim_mode模式是在2.6版本后期开始加入内核的一种模式,可以用来管理当一个内存区域(zone)内部的内存耗尽时,是从其内部进行内存回收还是可以从其他zone进行回收的选项,我们可以通过/proc/sys/vm/zone_reclaim_mode文件对这个参数进行调整。

[email protected]33:/proc/sys/vm> cat /proc/sys/vm/zone_reclaim_mode
0

在申请内存时,内核在当前zone内没有足够内存可用的情况下,会根据zone_reclaim_mode的设置来决策是从下一个zone找空闲内存还是在zone内部进行回收。这个值为0时表示可以从下一个zone找可用内存,非0表示在本地回收。这个文件可以设置的值及其含义如下:

  1. echo 0 > /proc/sys/vm/zone_reclaim_mode:意味着关闭zone_reclaim模式,可以从其他zone或NUMA节点回收内存。
  2. echo 1 > /proc/sys/vm/zone_reclaim_mode:表示打开zone_reclaim模式,这样内存回收只会发生在本地节点内。
  3. echo 2 > /proc/sys/vm/zone_reclaim_mode:在本地回收内存时,可以将cache中的脏数据写回硬盘,以回收内存。
  4. echo 4 > /proc/sys/vm/zone_reclaim_mode:可以用swap方式回收内存。

不同的参数配置会在NUMA环境中对其他内存节点的内存使用产生不同的影响。默认情况下,zone_reclaim模式是关闭的。这在很多应用场景下可以提高效率,比如文件服务器,或者依赖内存中cache比较多的应用场景。这样的场景对内存cache速度的依赖要高于进程本身对内存速度的依赖,所以我们宁可让内存从其他zone申请使用,也不愿意清本地cache。

如果确定应用场景是内存需求大于缓存,而且尽量要避免内存访问跨越NUMA节点造成的性能下降的话,则可以打开zone_reclaim模式。此时页分配器会优先回收容易回收的可回收内存(主要是当前不用的page cache页),然后再回收其他内存。

打开本地回收模式的写回可能会引发其他内存节点上的大量的脏数据写回处理。如果一个内存zone已经满了,那么脏数据的写回也会导致进程处理速度收到影响,产生处理瓶颈。这会降低某个内存节点相关的进程的性能,因为进程不再能够使用其他节点上的内存。但是会增加节点之间的隔离性,其他节点的相关进程运行将不会因为另一个节点上的内存回收导致性能下降。

min_unmapped_ratio

这个参数只在NUMA架构的内核上生效。这个值表示NUMA上每个内存区域的pages总数的百分比。在zone_reclaim_mode模式下,只有当相关区域的内存使用达到这个百分比,才会发生区域内存回收。在zone_reclaim_mode设置为4的时候,内核会比较所有的file-backed和匿名映射页,包括swapcache占用的页以及tmpfs文件的总内存使用是否超过这个百分比。其他设置的情况下,只比较基于一般文件的未映射页,不考虑其他相关页。

[email protected]33:/proc/sys/vm> cat /proc/sys/vm/min_unmapped_ratio
1

page-cluster

page-cluster是用来控制从swap空间换入数据的时候,一次连续读取的页数,这相当于对交换空间的预读。这里的连续是指在swap空间上的连续,而不是在内存地址上的连续。因为swap空间一般是在硬盘上,对硬盘设备的连续读取将减少磁头的寻址,提高读取效率。这个文件中设置的值是2的指数。就是说,如果设置为0,预读的swap页数是2的0次方,等于1页。如果设置为3,就是2的3次方,等于8页。同时,设置为0也意味着关闭预读功能。

文件默认值为3。我们可以根据我们的系统负载状态来设置预读的页数大小。

[email protected]33:/proc/sys/vm> cat /proc/sys/vm/page-cluster
3
时间: 2024-08-08 07:10:08

查看linux中swap内存的相关参数的相关文章

查看linux中的TCP连接数【转】

转自:http://blog.csdn.net/he_jian1/article/details/40787269 查看linux中的TCP连接数 本文章已收录于:  计算机网络知识库  分类: 安全测试总结(2)  性能经验总结(107)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数ps

linux中tomcat内存溢出解决办法

用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出解决办法 常见的一般会有下面三种情况:1.OutOfMemoryError: Java heap space2.OutOfMemoryError: PermGen space3.OutOfMemoryError: unable to create new native thread.前两种通常一起进

Linux 网络(连接)相关参数作用

参考: [1] http://bbs.chinaunix.net/thread-2318039-1-1.html net.core.netdev_max_backlog = 1000 TCP KeepAlive net.ipv4.tcp_keepalive_time = 7200 net.ipv4.tcp_keepalive_probes = 9 net.ipv4.tcp_keepalive_intvl = 75 Linux 网络(连接)相关参数作用,布布扣,bubuko.com

使用Visual VM 查看linux中tomcat运行时JVM内存

前言:在生产环境中经常发生服务器内存溢出,假死或者线程死锁等异常,导致服务不可用.我们经常使用的解决方法是通过分析错误日记,然后去寻找代码到底哪里出现了问题,这样的方式也许会奏效,但是排查起来耗费时间比较多,或者说本身代码本身就没有错,而是访问量大时候消耗内存太多,垃圾对象没有及时回收等等其他情况导致的,这样排查异常起来异常困难,那么有没有一些可视化的工具,帮助我们可以详细地查看当前应用服务的内存情况,从而为我们在解决异常.优化代码.优化服务等方面提供一些建议呢?幸好,jdk为我们免费提供一个这

free:一个在 Linux 中检查内存使用情况的标准命令

摘要: 我们都知道, IT 基础设施方面的大多数服务器(包括世界顶级的超级计算机)都运行在 Linux 平台上,因为和其他操作系统相比, Linux 更加灵活.有的操作系统对于一些微乎其微的改动和补丁更新都需要重启,但是 Linux 不需要,只有对于一些关键补丁的更新, Linux 才会需要重启. 我们都知道, IT 基础设施方面的大多数服务器(包括世界顶级的超级计算机)都运行在 Linux 平台上,因为和其他操作系统相比, Linux 更加灵活.有的操作系统对于一些微乎其微的改动和补丁更新都需

Linux中inotify软件部署及参数事件演示

声明:博主使用的是CentOS6.9的系统 参考资料: https://github.com/rvoicilas/inotify-tools/wiki http://www.ibm.com/developerworks/cn/linux/l-inotifynew/ inotify--Linux 2.6内核中的文件系统变化通知机制 参考资料 安装inotify须知 首先,在安装inotify软件之前一定要确认系统中,必须要存在的三个文件 [[email protected] ~]# ll /pro

Linux中检查内存使用情况的命令

Linux操作系统包含大量工具,所有这些工具都可以帮助您管理系统.从简单的文件和目录工具到非常复杂的安全命令,在Linux上没有太多不能做的事情.而且,虽然普通桌面用户可能不需要在命令行熟悉这些工具,但他们对于Linux管理员来说是强制性的.为什么?首先,你需要在某个时候使用无GUI的Linux服务器.其次,命令行工具通常比其替代方案提供更多的功能和灵活性. 确定内存使用率是一项技能,您可能需要一个特定的应用程序和系统内存.发生这种情况时,知道您有多种工具可以帮助您排除故障,这很方便.或者,也许

在Linux 中如何从进程相关的文件描述中恢复数据

在Linux中误删除了某个文件,但是 ps-ef|grep 文件名 发现某个进程还在使用该文件,那么可以通 过以下方式恢复文件. 例如:创建一个简单文件/tmp/test.txt, 随便向里面写点内容 两个client模拟,client1 负责打开文件less /tmp/test.txt(模拟占用线程) client2 负责恢复文件,恢复步骤(均在client2上执行) 1. 查看/tp/test.txt被占用的进程id [[email protected] tmp]# ps -ef|grep

Linux中如何配置IP相关文件

Linux中如何配置IP 与网络相关的文件:1) /etc/sysconfig/network   设置主机名称及能否启动Network2) /etc/sysconfig/network-scripts/ifcfg-eth0   设置网卡参数的文件3) /etc/modprobe.conf   开机时用来设置加载内核模块的文件4) /etc/resolv.conf   设置DNS IP(解析服务器)的文件5) /etc/hosts   记录计算机IP对应的主机名称或主机别名6) /etc/pro