RH442-10 内存回收之二
一、Swap
1. 概述
l 会使用swap的页:inactive pagess(脏页)和anonymous pages匿名页。
l swap ache:放在swap页未被修改过;多进程访问同一个页帧时,防止发生混乱,将其写到swap cache
l swap慢的原因:swap太小;swap匿名页更新太快.
l 查看swap回收情况
[root@station10 ~]# vmstat 3
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 0 7187336 208524 559220 0 0 0 1 10 10 0 0 100 0 0
0 0 0 7187336 208524 559220 0 0 0 0 1017 84 0 0 100 0 0
0 0 0 7187336 208524 559220 0 0 0 21 1014 83 0 0 100 0 0
#si:swap in 将内存中信息放到swap中
#so:swap on 将swap中信息放到内存中
2. 提升swap性能的办法
l 将虚拟机的domnU分独立VBD(虚拟块设备)做swap,将虚拟机放在不同的磁盘上。
l 将swap分布在多个设备上,最多32个LUMS(逻辑单元号)即分配在多个不同的分区或磁盘上(要调整swap优先级)。
l 尽量保证swap优先级相同,以保证swap轮询使用,内核会优先使用高优先级的swap分区。
l 尽量使用分区,不要使用文件作为swap。
l 尽量不要将swap放在慢的设备上。
3. Tuning swappiness
搜索inactive pages会消耗过多的cpu和IO资源,需要tuninig swappiness。
l 调整匿名页
vm.swappiness
[root@station10 ~]# sysctl -a|grep vm.swappiness
vm.swappiness = 60
#是否更倾向于使用swap,越大越优先使用swap,越小越优先使用cache。范围0~100。
调整时注意要求:% of memory mapped into page tables+vm.swappiness >=100
4. Tuning swap size
l 注意事项
Ø 内核会在zone_normal中使用2 bytes来跟踪swap里的每个页
Ø 内存交换速度要比磁盘IO更强的话,会导致swaplock,尽量避免swaplock。
Ø 如果内存不足,内核会kill用户进程。
l Tuning方针
Ø 服务器有大量运算:swap > 4xRAM
Ø Database server:swap <= 1GiB
Ø Application server:swap >=0.5xRAM
#同时也考虑如下方针
RAM=1~2G swap = 1.5xRAM
2~8G swap = 1RAM
>8G swap = 0.7xRAM
5. Tuning swap for think time
l swap小量使用
vm.page.cluster
[root@station9 ~]# sysctl -a |grep vm.page.cluster
vm.page-cluster = 3
#一次性性从swap往内存写的页数,2的3次方
l 写入swap的延迟(多久往swap写一次)
vm.sap_token_timeout
[root@station10 ~]# sysctl -a|grep vm.swap_token_timeout
vm.swap_token_timeout = 300
#秒,默认300秒
6. Tuning swap(创建swap)
l 最多可创建32个swap
l 创建swap
mkswap -L myswap /dev/sdb1 #-L:swap名
l 指定swap优先级在/etc/fstab中调整
/dev/sda1 swap swap pri=3 0 0
LABEL=myswap swap swap pri=3 0 0
/dev/sdc1 swap swap pri=3 0 0
/var/swapfile swap swap pri=1 0 0
#pri越大越优先使用
l activate swap
swapon -a
l 查看活动的swap分区
cat /proc/swaps
swapon –s
二、监控内存使用情况
1. 查看内存activity
vmstat -n 1 30
sar -r 1 30
[root@www ~]# sar -r 1 30
Linux 2.6.18-194.el5PAE (www.tuango163.com) 2011年08月30日
06时53分27秒 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
06时53分28秒 2847760 1304008 31.41 165536 982312 8385920 0 0.00 0
06时53分29秒 2847760 1304008 31.41 165536 982312 8385920 0 0.00 0
2. rate of change in memory
sar -R 1 30 #每秒一次,30次
[root@www ~]# sar -R 1 30
Linux 2.6.18-194.el5PAE (www.tuango163.com) 2011年08月30日
06时52分57秒 frmpg/s bufpg/s campg/s
06时52分58秒 0.00 0.00 0.00
3. swap activity
sar -W 1 30
[root@www ~]# sar -W 1 30
Linux 2.6.18-194.el5PAE (www.tuango163.com) 2011年08月30日
06时54分13秒 pswpin/s pswpout/s
06时54分14秒 0.00 0.00
06时54分15秒 0.00 0.00
4. All IO
sar -B 1 30
[root@www ~]# sar -B 1 30
Linux 2.6.18-194.el5PAE (www.tuango163.com) 2011年08月30日
06时55分04秒 pgpgin/s pgpgout/s fault/s majflt/s
06时55分05秒 0.00 0.00 14.00 0.00
06时55分06秒 0.00 44.00 23.00 0.00
本文转自netsword 51CTO博客,原文链接:http://blog.51cto.com/netsword/654900
RH442-10 内存回收之二相关推荐
- 深入理解Java虚拟机(二):Java内存回收及垃圾收集算法
Java内存回收 & 垃圾收集算法 & 垃圾收集器 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 本文重点: 二.对象已死 ...
- Java内存分配与垃圾回收(二)
写在前面:主要为<深入理解Java虚拟机>的读书笔记,加上自己的思考,本篇主要讲垃圾回收,图片主要来自网络,侵删. Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的" ...
- Android内存优化(二)之Bitmap的内存申请与回收(Android N和O的对比)
在Android O上大面积的爆了大量native Bitmap相关的泄漏问题,最大能达到几十MB,开始怀疑是出现了native内存泄漏问题,但经分析后发现是Android N和Android O在处 ...
- linux内存回收(二)--直接内存回收机制
上一章,我们学习了kswapd的内存回收的机制,其本身是一个内核线程,它和调用者的关系是异步的,那么本章就开始学习内核的内存回收的方式.因为在不同的内存分配路径中,会触发不同的内存回收方式,内存回收针 ...
- 释放变量所指向的内存_前端基础突破(二)内存回收与内存泄漏
垃圾回收的必要性? 在程序中,我们定义了许多变量,变量存储的在内存中,这时就需要一套机制来管理内存.在javascript中,并没有提供对应的api给开发者直接手动控制内存的申请和回收,因为javas ...
- java具有自动无用内存回收_Java语言程序设计(一)试卷及答案解释
Java语言程序设计(一)试卷及答案解释 本试卷共6页,满分l00分,考试时间l50分钟. 第一部分选择题 一.单项选择题:本大题共l0小题,每小题l分,共10分.在每小题列出的备选项中只有一项是最符 ...
- .net内存回收与Dispose﹐Close﹐Finalize方法
.net内存回收与Dispose﹐Close﹐Finalize方法 一. net的对象使用一般分为三种情况﹕ 1.创建对象 2.使用对象 3.释放对象 二.创建对象 1.创建对象实际分为两个步骤﹕变量 ...
- JVM自动化的内存分配与内存回收
如何区分一个C++程序员和Java程序员?答案是看他吃饭完收不收拾碗筷,反正我是不收拾,哈哈哈哈哈哈. Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回 ...
- 转.net内存回收与Dispose﹐Close﹐Finalize方法
一. net的对象使用一般分为三种情况﹕ 1.创建对象 2.使用对象 3.释放对象 二.创建对象 1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象 2.变量类型宣告(declare),如﹕ Fi ...
最新文章
- 根据oracle入库数据进行告警,Oracle 启动故障案例之--ORA-600 [4193]错误
- Akka-CQRS(16)- gRPC用JWT进行权限管理
- 【CodeForces - 1020A】New Building for SIS(模拟)
- 周鸿祎回顾IPO一周年:保持创业心态 看好无线
- css div里引用em字体会变斜体_CSS文字加粗斜体[解决代码]
- wsl2启动桌面_WSL2使用xrdp实现图形桌面
- Python统计一个字符串中所有字符在另一个字符串出现的总次数
- 正确使用ArrayList和LinkedList
- Sublime Text编写80×86汇编.asm文件的语法高亮插件
- Ubuntu调整CPU程序调度和CPU频率的几种方法
- python前端工资_前端的工资分布情况-你又拖后退了吗?
- 如何在Kubernetes上部署图形数据库Nebula Graph
- 已知两点坐标求水平距离_知道两个点的坐标X,Y,如何计算出两点间的距离以及角度,公式是什么...
- 20道你必须要背会的微服务面试题,面试一定会被问到
- Android BottomNavigationView的使用
- 上传图片格式一句话木马
- 【ZFNet】Visualizing and Understanding Convolutional Networks (2013) 全文翻译
- 利用 Matlab Simulink 平台搭建双馈风力发电机在电网中的模型
- 美国大学工程计算机排名,美国大学Computer Engineering 计算机工程专业排名
- swap分区、硬盘和磁盘
热门文章
- 产生一定范围随机数的通用算法公式
- python判断字符串是否是数字字母
- rtsp发送主流和辅流
- oracle求某个数的阶乘,Oracle SQL实现阶乘的几个方法
- vue页面数据不显示_PHP7中session_start 使用注意事项,会导致浏览器刷时页面数据不更新...
- python 中cookie_详解Python中的Cookie模块使用
- 6行代码,带你学会Python最有用的小技巧【收藏不后悔】
- Python设计模式面向对象编程
- 梦到计算机坏了无法算账,梦见算账,做梦梦见算账是什么征兆?
- JAVA之门面模式概述