Linux系统性能之内存(memory)
2015-07-15 13:10
441 查看
在安装Linux系统的时候,通常会选择这么个分区,这个交换分区(swap space)是用来干啥的呢?
交换分区就是使用硬盘的一部分作为内存RAM的扩展。内核会将当前不使用内存数据写到硬盘的这部分,腾出内存的这部分空间用以其他的使用。当需要使用这部分数据的时候,重新再读回到内存。读写硬盘比起使用真正的内存要慢地多,所以程序运行不是很快。
swap分区作为一个虚拟的内存,其存储方式和内存一致,采用页式存储的方式,在X86的机器上每一个页的大小为4KB。当内核将内存的数据写入时,其写入数据到页内。内核同时向swap设备和文件系统写内存数据。内存分页是内存交换的一个操作,内存分页就是同步内存数据到硬盘以正常的时间间隔。一段时间过后,应用程序必定会增长到消耗完内存,所以内核每隔一段时间需要扫描内存,进行内存分页,然后重新声明未使用的页面分配给其他的应用程序。这里使用的算法叫做PFRA(The Page Frame Reclaim Algorithm
)算法。其主要是用来释放内存的,此算法以页为单位选择内存中的那些页面需要被释放。有两种方式实现PFRA,其中一个是内核进程kswapd,另一个是“Low On Memory Reclaiming”函数。
kswapd进程,监控内核的两个参数pages_high和pages_low。如果空闲内存在pages_low以下,那么kswapd进程开始扫描并释放32个页面。这个过程会一直持续。直到空闲内存的在pages_high之上。
pdflush进程是用来同步任何和文件系统相关的页。也就是说当一个文件在内存中被修改的话,pdflush进程会将修改写回到硬盘。
然后我们来看vmstat的结果:
free: 当前可用的物理内存大小。
buff: 缓存区内存的大小。
cache:映射到进程地址空间的物理内存的大小。
so: 写入swap分区的数据大小。
si: 从swap分区写回RAM的数据大小。
bo: 写入文件系统或者swap设备的内存页面数。
bi: 从文件系统或者swap设备写回内存的页面数。
关于swap的总结:
1、减少系统主要页面错误,由于系统是利用内存缓存磁盘cache,故而能够获得更好地响应时间。
2、空闲内存数量很少是一个很不错的信号,缓存去被有效地利用,除了持久地写入swap设备和硬盘。
3、如果一个系统报告任何频繁的swap设备操作,这就意味着此系统内存不够用了。
交换分区就是使用硬盘的一部分作为内存RAM的扩展。内核会将当前不使用内存数据写到硬盘的这部分,腾出内存的这部分空间用以其他的使用。当需要使用这部分数据的时候,重新再读回到内存。读写硬盘比起使用真正的内存要慢地多,所以程序运行不是很快。
swap分区作为一个虚拟的内存,其存储方式和内存一致,采用页式存储的方式,在X86的机器上每一个页的大小为4KB。当内核将内存的数据写入时,其写入数据到页内。内核同时向swap设备和文件系统写内存数据。内存分页是内存交换的一个操作,内存分页就是同步内存数据到硬盘以正常的时间间隔。一段时间过后,应用程序必定会增长到消耗完内存,所以内核每隔一段时间需要扫描内存,进行内存分页,然后重新声明未使用的页面分配给其他的应用程序。这里使用的算法叫做PFRA(The Page Frame Reclaim Algorithm
)算法。其主要是用来释放内存的,此算法以页为单位选择内存中的那些页面需要被释放。有两种方式实现PFRA,其中一个是内核进程kswapd,另一个是“Low On Memory Reclaiming”函数。
kswapd进程,监控内核的两个参数pages_high和pages_low。如果空闲内存在pages_low以下,那么kswapd进程开始扫描并释放32个页面。这个过程会一直持续。直到空闲内存的在pages_high之上。
pdflush进程是用来同步任何和文件系统相关的页。也就是说当一个文件在内存中被修改的话,pdflush进程会将修改写回到硬盘。
然后我们来看vmstat的结果:
# vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 104300 16800 95328 72200 0 0 5 26 7 14 4 1 95 0 0 0 104300 16800 95328 72200 0 0 0 24 1021 64 1 1 98 0 0 0 104300 16800 95328 72200 0 0 0 0 1009 59 1 1 98 0swpd:当前交换分区的使用总量,单位是KB。因为空闲内存达到其阈值,数据写到swap设备中。
free: 当前可用的物理内存大小。
buff: 缓存区内存的大小。
cache:映射到进程地址空间的物理内存的大小。
so: 写入swap分区的数据大小。
si: 从swap分区写回RAM的数据大小。
bo: 写入文件系统或者swap设备的内存页面数。
bi: 从文件系统或者swap设备写回内存的页面数。
关于swap的总结:
1、减少系统主要页面错误,由于系统是利用内存缓存磁盘cache,故而能够获得更好地响应时间。
2、空闲内存数量很少是一个很不错的信号,缓存去被有效地利用,除了持久地写入swap设备和硬盘。
3、如果一个系统报告任何频繁的swap设备操作,这就意味着此系统内存不够用了。
相关文章推荐
- vsftpd创建匿名Linux FTP服务器
- UNIX/Linux下C语言的学习路线
- Linux 文件系统
- Linux 文件系统
- Linux 文件系统
- Linux 文件系统
- redhat linux iptables (NAT)
- [转][linux(ubuntu14.04)+GPU+cuda6.5+caffe+openCV2.4.9+matlab2013b+python2.7的新手配置转]
- Linux软连接必须写绝对路径
- SecureCRT连接linux设置vim显示颜色
- linux下目录的作用
- 详解Linux命令行下常用svn命令
- 虚拟机Linux----Ubuntu1404----root登录设置
- Linux-支持中文
- linux下重新定位SVN URL方法
- Linux性能之CPU性能
- Oz制作CentOS镜像
- 在Linux下通过rpm打包发布Java程序
- Webrtc Intro - Compile Steps on Linux Generally
- u-boot启动画面制作