返回顶部
首页 > 资讯 > 操作系统 >Linux下Swap的用法
  • 313
分享到

Linux下Swap的用法

2024-04-02 19:04:59 313人浏览 薄情痞子
摘要

这篇文章主要讲解了“linux下Swap的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下Swap的用法”吧! L

这篇文章主要讲解了“linux下Swap的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下Swap的用法”吧!

Linux操作系统性能分析主要包含磁盘IO、CPU、内存以及网络流量,而这里主要针对系统内存的使用进程情况做个分析。
一、如何查看系统内存使用情况
1、根据常用命令查看系统内存使用概况
free  -g
                   total       used       free     shared    buffers     cached
Mem:            31           31          0          0          0          3
-/+ buffers/cache:         28          3
Swap:           15             7          7
(根据free命令可以看到,系统使用了28G的物理内存,3G的剩余内存,其中swap总15G,已使用7G

top  (f p M)
top - 14:18:50 up 1280 days,  7:15,  1 user,  load average: 1.05, 1.25, 1.12
Tasks: 229 total,   1 running, 227 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.2%us,  0.1%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32949816k total, 32848840k used,   100976k free,   169308k buffers
Swap: 16771776k total,  8384616k used,  8387160k free,  3276360k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP DATA COMMAND                                                      
12428 Mysql     15   0 22.2g  20g 3964 S  3.3 66.5  91946:06 1.3g  22g mysqld                                                       
22840 cyldj     15   0 9059m 6.7g 9012 S  0.0 21.5  22:05.42 2.1g 8.7g DBAgent                                                      
28689 root      15   0  358m  30m 3036 S  0.0  0.1 187:37.41 328m 137m salt-miNIOn                                                  
30768 cyldj     21   0  462m  10m 1908 S  0.0  0.0  10:44.60 451m 373m java                                                         
22567 root      15   0 86004 3292 2576 S  0.0  0.0   0:00.01  80m  688 sshd                                                         
28690 root      20   0  267m 2188  704 S  0.0  0.0   0:00.00 264m  47m salt-minion                                                  
  661 root      18   0 16340 1836 1632 S  0.0  0.0   0:47.42  14m  308 zabbix_agentd                                                
22569 root      15   0 68156 1520 1188 S  0.0  0.0   0:00.02  65m  408 bash                                                         
 2901 root      18   0  197m 1336  884 S  0.0  0.0   4:04.57 196m 174m AxisAgent                                                    
11236 root      15   0 60672 1324  760 S  0.0  0.0   2:01.21  57m  608 sshd                                                         
  665 root      15   0 18432 1260  992 S  0.0  0.0  11:39.82  16m  308 zabbix_agentd                                                
  662 root      15   0 18432 1256  992 S  0.0  0.0  11:43.36  16m  308 zabbix_agentd
(根据top命令可以看到使用内存最大的进程是mysql进程,其次是dbagent,其中dbagent使用的交换分区较多)

nmon (m)

nmon下载地址:
https://sourceforge.net/projects/nmon/files/nmon_x86_64_rhel5/download  (RHEL5)
Https://sourceforge.net/projects/nmon/files/nmon_linux_14i_newer_Linux_versions.tar.gz/download (RHEL6)
(通过nmon可以看到内存的详细分配情况,其中总内存为32177.6 MB,总swap 16378.7 MB ,空闲93.4 MB,可回收3188.2+166.5 MB,已使用交换分区7273.6MB,已使用的活动数据大小为30099.9MB,可以被交换出内存的数据大小为1590.7  MB)

2、根据系统监控查看系统内存使用情况

(近7天的内存使用情况)
3、查看指定进程的系统内存使用信息
cat /proc/22840/statm
#virt    res     shr  text lib data dt  
2319113 1768037 2253 3836 0 2292997 0
(上述是查看dbagent的内存使用信息,其中单位是页数,所以要看系统页大小4K,第一列是虚拟内存2319113页,第二列是驻留内存1768037页,第三列是共享内存2253页,进程独占内存大小为res-shr)
getconf  PAGESIZE
4096
awk '/^Swap:/ {SWAP+=$2}END{print SWAP" KB"}' /proc/${pid}/smap
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 ;done |sort -k2nr
(上述命令可以查看进程虚拟内存使用情况)
cat /proc/22840/status |grep Vm
VmPeak:  9341632 kB
VmSize:  9276452 kB
VmLck:         0 kB
VmHWM:   7074296 kB
VmRSS:   7073540 kB
VmData:  9171904 kB
VmStk:        84 kB
VmExe:     15344 kB
VmLib:      4728 kB
VmPTE:     15596 kB
(上述命令可以查看指定进程的内存使用情况VmSize表示虚拟内存大小,VmRSS表示驻留内存大小)
二、综合分析MYsql数据库内存使用情况
sh show_mem_usage.sh
全局内存大小:18592.00 MB
线程最大内存:25.18 MB
最大线程占用内存: 8815.62 MB
历史最大线程占用内存: 5213.81 MB
Innodb Buffer Pool使用率: 99.00%
从mysql的内存使用和总的物理内存使用来看,服务器的内存使用已经基本达到上限(mysql驻留内存大约是21G,dbagent大约为7G,物理总内存为31G,缓存了3G,大约有2G左右的非活动区内存),当mysql进程、dbagent使用超过5G内存,物理内存不够,就会使用到了swap分区。
三、什么情况下会使用swap分区
1、物理内存确实不够用的情况下,会使用到swap分区。
2、物理内存还有足够的内存使用,比如cache,buffer的剩余较多的情况下使用了swap分区
四、使用swap分区扩展
如果有足够的物理内存,依旧使用了swap分区,可以从以下几方面查看为什么使用了swap分区
1、swap分区比例调整
cat /etc/sysctl.conf  |grep swap    
vm.swappiness=0
设置为0表示优先最大限度的使用物理内存缓存数据,而不是磁盘作为分区,值越大越不利于物理内存的充分利用
2、numa陷阱

为了提高cpu和内存的数据访问速度、并发度,设计了numa架构,但如果numa的内存分配策略不合理,那么将会严重影响到内存的使用,尤其是对大内存块使用的数据库服务器。
#nuMactl --hardware   
available: 2 nodes (0-1)
node 0 size: 16160 MB
node 0 free: 15 MB
node 1 size: 16131 MB
node 1 free: 78 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10
(上述命令可以查看各个node节点的物理内存分配情况,可以看到两节点的内存分配比例基本平均,如果node0节点free和和node1的free值相差较大,说明分配策略存在问题,很大可能会带来swap使用,而物理内存空闲的状态)
也可以通过查看numastat查看numa的miss和hit比例来进一步确认
#numastat
                           node0           node1
numa_hit             39150779957     38736256884
numa_miss             2658848763      8851827358
numa_foreign          8851827296      2658848763
interleave_hit         122652306       137287417
local_node           39096884744     38598664497
other_node            2712743976      8989419745
3、解决方案
(1)启用大页管理
(2)关闭numa
***BiOS关闭NUMA
***启动内核关闭:
vi /boot/grub/grub.conf
kernel /boot/vmlinuz-2.6.18-128.1.16.0.1.el5 root=LABEL=DBSYS ro bootarea=dbsys rhgb quiet console=ttyS0,115200n8 console=tty1 crashkernel=128M@16M numa=off
重启操作系统,通过cat /proc/cmdline和numactl --hardware查看是否关闭
(3)调整内核参数
内核参数:zone_reclaim_mode,如果为0的话,那么系统会倾向于从其他节点分配内存,如果是1表示系统会倾向于从本地节点回收Cache内存多数时候
               vm.swappiness=0

echo 0 > /proc/sys/vm/zone_reclaim_mode ; echo "vm.zone_reclaim_mode = 0" >> /etc/sysctl.conf
(4)调整内核参数
Mysql可以调整相关参数、交叉启动方式来改善numa,例如numactl --interleave=all  /etc/init.d/mysql start
localalloc规定进程从当前node上请求分配内存;
preferred比较宽松地指定了一个推荐的node来获取内存,如果被推荐的node上没有足够内存,进程可以尝试别的node。
membind可以指定若干个node,进程只能从这些指定的node上请求分配内存。
interleave规定进程从指定的若干个node上以RR(Round Robin 轮询调度)算法交织地请求分配内存。

#NUMA support

numa_interleave = 1
innodb_buffer_pool_populate = 1
flush_caches=1

感谢各位的阅读,以上就是“Linux下Swap的用法”的内容了,经过本文的学习后,相信大家对Linux下Swap的用法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Linux下Swap的用法

本文链接: https://lsjlt.com/news/59503.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux下Swap的用法
    这篇文章主要讲解了“Linux下Swap的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下Swap的用法”吧! L...
    99+
    2024-04-02
  • Linux添加swap分区的方法
    建立一个普通的linux分区(主分区、逻辑分区均可) fdisk /dev/sdb Command (m for help): p Disk /dev/sdb: 8589 MB, 8589934592 bytes...
    99+
    2022-06-04
    linux 添加swap分区 swap分区
  • linux清理swap和cache的方法
    这篇文章主要介绍“linux清理swap和cache的方法”,在日常操作中,相信很多人在linux清理swap和cache的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux清理swap和cache...
    99+
    2023-06-13
  • Linux swap分区的扩展方法
    这篇文章主要介绍“Linux swap分区的扩展方法”,在日常操作中,相信很多人在Linux swap分区的扩展方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux swap分区的扩展方法”的疑惑有所...
    99+
    2023-06-16
  • Linux怎么禁用swap
    这篇文章主要介绍“Linux怎么禁用swap”,在日常操作中,相信很多人在Linux怎么禁用swap问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux怎么禁用swap”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-28
  • swap和zram swap怎么在Linux系统中使用
    swap和zram swap怎么在Linux系统中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。磁盘 swap:是把磁盘的一部分作为内存, 对应用来说完全是...
    99+
    2023-06-12
  • linux swap分区的使用指南
    本篇内容主要讲解“linux swap分区的使用指南”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux swap分区的使用指南”吧!Linux中SWAP交换分区概述交换分区。我们如果没有足...
    99+
    2023-06-13
  • linux swap交换内存扩容的方法
    swap交换内存主要是指当物理内存不够用时,系统会启用硬盘的一部分空间来充当服务器内存,而默认情况下swap内存会有一些设置标准,它与物理内存的大小也是有关系的,具体标准如下: Ram大小 Swap大小 激活...
    99+
    2022-06-03
    linux swap交换内存扩容 linux swap 内存扩容
  • linux swap是怎么触发的
    今天小编给大家分享一下linux swap是怎么触发的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。linux swap指的...
    99+
    2023-06-29
  • Linux swap的扩展和删除方法是什么
    本篇内容介绍了“Linux swap的扩展和删除方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!wap space是磁盘上的一块区域...
    99+
    2023-06-27
  • 【swap】例出使用swap进程的信息
    #for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '&...
    99+
    2023-06-05
  • Linux swap分区的示例分析
    Linux swap分区的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是swapswap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者...
    99+
    2023-06-28
  • linux swap交换内存扩容的方法是什么
    这篇文章主要为大家分析了linux swap交换内存扩容的方法是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“linux swap交换内存扩容的方法是什...
    99+
    2023-06-28
  • linux如何启用两个swap分区
    ...
    99+
    2024-04-02
  • LINUX下Bash-Script的用法
    本篇内容介绍了“LINUX下Bash-Script的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一个Bash-ScriptLINUX...
    99+
    2023-06-19
  • Linux下缓存机制free及清理buffer/cache/swap的示例分析
    这篇文章给大家分享的是有关Linux下缓存机制free及清理buffer/cache/swap的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(1)缓存机制为了提高文件系...
    99+
    2024-04-02
  • Linux Swap空间利用率过高问题
    目录什么是swap为什么需要swapswap的缺点到底要不要swap?内存不够用内存勉强够用内存充裕那我们的mysql的服务器为什么会发生swap呢?InnoDB的缓冲池缓存什么?有什么用?设置多大合适呢?总结在单独部署...
    99+
    2023-04-06
    Linux Swap Swap空间利用率 Swap空间利用率过高
  • linux如何显示哪些swap被使用
    ...
    99+
    2024-04-02
  • Linux系统下Found a swap file by the name “xxx.swp“问题出现的原因及解决方法
    情景再现 我在一次使用vim编辑文件的时候,习惯性的按了ctrl+s想保存,然后屏幕就卡住了,最后我使直接暴力推出了终端,再次编辑想保存的时候就出了下面的警告提示: E325: ATTENTIONFound a swap file by t...
    99+
    2023-08-25
    linux 服务器 运维
  • linux如何启用一个新的swap文件系统
    ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作