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

 #siswap in  将内存中信息放到swap

 #soswap on  swap中信息放到内存中

 

2.   提升swap性能的办法

l  将虚拟机的domnU分独立VBD(虚拟块设备)做swap,将虚拟机放在不同的磁盘上。

l  swap分布在多个设备上,最多32LUMS(逻辑单元号)即分配在多个不同的分区或磁盘上(要调整swap优先级)。

l  尽量保证swap优先级相同,以保证swap轮询使用,内核会优先使用高优先级的swap分区。

l  尽量使用分区,不要使用文件作为swap

l  尽量不要将swap放在慢的设备上。

 

3.   Tuning swappiness

搜索inactive pages会消耗过多的cpuIO资源,需要tuninig swappiness

l  调整匿名页

  vm.swappiness

[root@station10 ~]# sysctl -a|grep vm.swappiness

vm.swappiness = 60

#是否更倾向于使用swap,越大越优先使用swap,越小越优先使用cache。范围0100

 调整时注意要求:% 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 serverswap <= 1GiB

Ø  Application serverswap >=0.5xRAM 

#同时也考虑如下方针

RAM1~2G   swap = 1.5xRAM

         28G  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往内存写的页数,23次方

 

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  最多可创建32swap

 

l  创建swap

   mkswap -L myswap /dev/sdb1   #Lswap

 

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)     20110830

065327 kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad

065328   2847760   1304008     31.41    165536    982312   8385920         0      0.00         0

065329   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)     20110830

065257   frmpg/s   bufpg/s   campg/s

065258      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)     20110830

065413  pswpin/s pswpout/s

065414      0.00      0.00

065415      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)     20110830

065504  pgpgin/s pgpgout/s   fault/s  majflt/s

065505      0.00      0.00     14.00      0.00

065506      0.00     44.00     23.00      0.00


本文转自netsword 51CTO博客,原文链接:http://blog.51cto.com/netsword/654900

相关文章
|
7天前
|
算法 安全 Java
内存分配与回收策略
内存分配与回收策略
14 0
内存分配与回收策略
|
30天前
|
NoSQL 应用服务中间件 Linux
Redis的内存回收机制
Redis的内存回收机制
24 2
|
1月前
|
SQL Java 关系型数据库
flink cdc 内存问题之不会回收如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
3月前
|
存储 NoSQL Redis
|
9月前
|
存储 监控 算法
优化内存利用:深入了解垃圾回收算法与回收器(二)
优化内存利用:深入了解垃圾回收算法与回收器(二)
87 0
|
4月前
|
存储 算法 安全
Come on ! Java对象内存分配与回收策略
Come on ! Java对象内存分配与回收策略
42 0
|
4月前
|
存储 缓存 算法
百度搜索:蓝易云【彻底理解linux的内存回收】
总的来说,Linux的内存回收是一个复杂的过程,涉及到页面回收、页面交换、内存压缩和匿名页面丢弃等机制。这些机制的目标是在内存不足时释放不再使用的页面,并优化内存资源的利用,以提高系统的性能和响应速度。
120 1
|
5月前
|
缓存 Java 程序员
如何写出高性能代码(三)优化内存回收(GC)
可复用性在这里指的是,大多数的对象都是可以被复用的,这些可以被复用的对象就没必要每次都新建出来,浪费内存空间了。 处了巧用数据特性 中的例子,我这里再个Java中已经被用到的例子,这个还得从一段奇怪的代码说起。
30 0
|
7月前
|
安全 Java
JVM(四)内存回收策略
JVM(四)内存回收策略
54 0
|
9月前
|
算法 NoSQL Redis
介绍一下 Redis 内存回收算法?
介绍一下 Redis 内存回收算法?
54 0