分类: LINUX
2014-03-19 12:15:37
原文地址:linux内存的使用详情? 作者:woaimaidong
中午吃饭回来,hadoop组的同事让帮忙看看线上集群的监控情况,其中的rrd图有cpu的和内存的,当时就内存的使用监控情况讨论了一番。大多数的监控:nagios,ganglia,cacti等监控软件它们的监控数据跟用系统命令看到的是一样的,也就是说,你对系统命令取道的数值弄清楚后,监控图像里面的各项指标,也就明白了。下面以内存查看命令为例:
详解:
total: 64377 服务器物理内存大小为64377M
used:64077 分配给buffer和cache的总大小。
Free:300未被分配的内存大小。
Shared:0多个进程共享的内存总数
buffers:4034系统分配的但未用的buffer大小
cache::53786 系统分配的但未用的cache大小
-/+buffers/cache行:
Used:6256 实际使用的cache和buffer的总大小,即内存使用的总大小。
Free:58121 未被使用的buffers与cache和未分配的内存之和,系统当前实际可用内存。
对应关系如下:
实际可用的内存大小=58121= Free(Mem)+[buffers(Mem)+Cached(Mem)]
=300+4034+53786
已分配的内存大小=64077= Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)
=6256+4034+53786
物理内存总大小=64377= used(-/+ buffers/cache) + free(-/+ buffers/cache)
=6256+58121
关于Swap的说明:
分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。
通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,一般来说对于4G 以下的物理内存,配置2倍的swap,4G 以上配置1倍。
另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。