vmstat
vmstat, Virtual Meomory Statistics(虚拟内存统计), 可对操作系统的虚拟内存、进程、CPU活动进行监视. 它是对系统的整体情况进行统计, 但不能针对某个进程进行深入分析.-a 开启 or 关闭显示 active/inactive 内存
-n 开启 or 关闭周期性循环输出时, 输出的头部信息仅显示一次
delay 两次输出之间的延迟时间
count 按照这个指定的时间间隔统计的次数
-f 开启 or 关闭显示自系统启动后 forks 的数目, 包括(fork, vfork and clone system calls)
-m 显示 slabinfo
-s 开启 or 关闭以表格形式显示的 event counters and memory statistics
-d 显示 disk statistics
-p 显示参数所指定的分区的详细信息
-S (k|K|m|M) 以k|kB|m|MB为单位显示,对应转换(1000|1024|1000000|1048576)
-V 打印版本信息
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
rb swpd free buffcache si so bi bo in cs us sy id wa st
00 28466240 165924 419584 0 0 0 5 2 100 10000
#To output active/inactive memory info
# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
rb swpd freeinact active si so bi bo in cs us sy id wa st
00 2846562086928 833976 0 0 0 5 3 100 10000
#To run vmstat with 2 updates, five seconds apart
# vmstat 5 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
rb swpd free buffcache si so bi bo in cs us sy id wa st
00 28465620 165924 419824 0 0 0 5 3 100 10000
00 28465620 165924 419828 0 0 0 7 1014 6400 10000
procs, 下面三种状态的进程数
r 等待运行的进程数
b 在等待的进程数(通常在等待 IO)
w 可进入运行队列但被替换的进程(Solaris vmstat)
memory, 虚拟内存和实存信息
swpd 虚拟内存使用情况, unit:kb
free 空闲的内存, unit:kb
buff 被用来做 buffer 的内存数, unit:kb
cache 被用来做 cache 的内存数, unit:kb
inactive 闲置的内存,unit:kb, -a显示
active 活动内存, unit:kb,-a显示
swap, 显示磁盘与内存每秒的交换
si 从磁盘交换到内存的交换页数量, unit:kb
so 从内存交换到磁盘的交换页数量, unit:kb
io, 显示块设备每秒发送和收到的块数
bi 发送到块设备的块数, unit: blocks
bo 从块设备接收到的数据, unit:blocks
system
in 每秒的中断数, 包括时钟中断
cs 每秒的环境切换次数
CPU, CPU 故障时间的百分比, 在多处理器系统上, 这是全部处理器的平均值
us CPU 使用时间(except kernel)
sy CPU 系统使用时间(内核)
id 闲置时间
wa 等待 IO 的时间
st
disk, 显示每秒的磁盘操作, s 表示 scsi 盘, 0 表示盘号
pages, 每秒页面调度活动数量的信息(Solaris vmstat)
re 回收的页面
mf 非常严重错误的页面
pi 进入页面数, unit:KB
po 出页面数, unit:KB
fr 空也的页面数, unit:KB
de 提前读入的页面中的未命中数
sr 通过时钟算法扫描的页面
fault, 显示每秒的中断数(Solaris vmstat)
in 设备中断
sy 系统中断
cy cpu交换
准测
r<5, b≈0
如果free < MINFREE, 将会出现连续不断的页面调度, 将导致系统性能问题.
如果在多用户环境中us+sys>80, 进程就会在运行队列中花费等待时间, 响应时间和吞吐量就会下降.
wa > 40, 表明磁盘io没有也许存在不合理的平衡, 或者对磁盘操作比较频繁
如果 r 经常大于 4 , 且 id 经常少于 40, 表示 CPU 的负荷很重
如果 pi, po 长期不等于 0, 表示内存不足
如果 disk 经常不等于 0, 且在 b 中的队列大于 3, 表示 io 性能不好
通过 vmstat 识别 CPU 瓶颈
r(运行队列)展示了正在执行和等待 CPU 资源的任务个数. 当这个值超过了 CPU 数目, 就会出现CPU瓶颈
获得 CPU 个数的命令(Linux):
1
# cat /proc/cpuinfo | grep processor | wc -l
当 r 值超过了CPU个数, 就会出现CPU 瓶颈, 解决办法大体如下
最简单的就是 增加 CPU个数
通过调整任务执行时间, 如大任务放到系统不繁忙的情况下进行执行, 进尔平衡系统任务
调整已有任务的优先级
通过 vmstat 识别 CPU 满负荷
vmstat 中 CPU 的度量是百分比. 当us+sy≈100时, 表示 CPU 正在接近满负荷工作. 但要注意的是, CPU 满负荷工作并不能说明什么, *nix 总是试图要 CPU 尽可能的繁忙, 使得任务的吞吐量最大化. 唯一能够确定 CPU 瓶颈的还是 r(运行队列) 的值.
通过 vmstat 识别 RAM 瓶颈
数据库服务器都只有有限的 RAM, 出现内存争用现象是常见问题
首先察看 RAM 的数量, 命令如下
# free
total used free shared buffers cached
Mem: 1035292 969548 65744 0 165924 419720
-/+ buffers/cache: 383904 651388
Swap: 2096472 284 2096188
也可使用 top 等其他命令来显示RAM.
当内存的需求大于RAM的数量, 服务器启动虚拟内存机制, 通过虚拟内存, 可以将 RAM 段移到 SWAP DISK 的特殊磁盘段上, 这样会出现虚拟内存的页导出和页导入现象, 页导出并不能说明 RAM 瓶颈, 虚拟内存系统经常会对内存段进行页导出, 但页导入操作就表明了服务器需要更多的内存了, 页导入需要从 SWAP DISK 上将内存段复制回 RAM, 导致服务器速度变慢.
解决办法有如下几种
加大 RAM
改小 SGA, 使得对 RAM 需求减少
减少 RAM 的需求(减少 PGA etc) 謝謝分享 學習了:em03: :wink: 嘉哥 我小红帽~
页:
[1]