Mem调优
查看系统内存信息
# free -m
total used free shared buffers cached
Mem: 1010 981 29 0 145 649
-/+ buffers/cache: 186 824
Swap: 2047 0 2047
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-------cpu------
r b swpdfree buff cache si so bi bo in cs us sy id wa st
0 0 0 48584 118300 663564 0 0 12 23 60 240 3 2 95 0 0
procs
r列表示运行和等待cpu时间片的进程数,如果长期大于cpu个数,说明cpu不足,需要增加cpu。
b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
memory
swpd切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free当前的空闲页面列表中内存数量(k表示)
buff作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache:作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi从块设备读入数据的总量(读磁盘)(每秒kb)。
bo块设备写入数据的总量(写磁盘)(每秒kb)
system 显示采集间隔内发生的中断数
in列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
buffer/cache
# cat /proc/sys/vm/dirty_
dirty_background_ratio dirty_ratio
dirty_expire_centisecs dirty_writeback_centisecs
# cat/proc/sys/vm/dirty_writeback_centisecs
499
5秒同步一次脏数据
# cat /proc/sys/vm/dirty_ratio
40
如果单个进程占用的buffer/cache达到内存总量的40%,立刻同步。
# cat /proc/sys/vm/dirty_background_ratio
10
所有进程占用的buffer/cache使得剩余内存低于内存总量的10%,立刻同步
# cat /proc/sys/vm/dirty_expire_centisecs
2999
30秒之内数据必须被同步
释放buffer/cache
# cat /proc/sys/vm/drop_caches
0
1 释放cache
2 释放buffer
3 buffer/cache都释放
使用内存文件系统
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 37G 3.1G 32G 9% /
/dev/sda1 99M 12M 83M 13% /boot
tmpfs 506M 0 506M 0% /dev/shm(共享内存)
/dev/hdc 2.9G 2.9G 0 100% /media/RHEL_5.8 i386 DVD
# mount -t tmpfs -o size=100M tmpfs /mnt/
# mount | grep tmp
tmpfs on /dev/shm type tmpfs (rw)
tmpfs on /mnt type tmpfs (rw,size=100M)
进程间通信(IPC)
Pipe 管道用来连接不同进程之间的数据流。
Socket 套接字(Socket)是由Berkeley在BSD系统中引入的一种基于连接的IPC,是对网络接口(硬件)和网络协议(软件)的抽象。它既解决了无名管道只能在相关进程间单向通信的问题,又解决了网络上不同主机之间无法通信的问题。
SharedMemory 共享内存允许两个或多个进程共享一定的存储区,因为不需要拷贝数据,所以这是最快的一种IPC。
SemaphoreArrays System V的信号量集表示的是一个或多个信号量的集合。
MessageQueues 消息队列保存在内核中,是一个由消息组成的链表。
查看内存使用情况
# sar -r 1 1
内存测试
# yum install memtest86+
# memtest-setup
Setup complete.
重新启动系统是使用memtest86+