2013-08-04 回答
linux查看虚拟内存和cpu占用率主要有以下命令:
top
free
cat /proc/meminfo
cat /proc/cpuinfo
[root@centerlisdb proc]# dmidecode |grep -a16 "memory device" | more 查看内存频率
========================================================================================
top的基本视图,我们来结合这个视图讲解各个数据的含义。
第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑cpu的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
6.7% us — 用户空间占用cpu的百分比。
0.4% sy — 内核空间占用cpu的百分比。
0.0% ni — 改变过优先级的进程占用cpu的百分比
92.9% id — 空闲cpu百分比
0.0% wa — io等待占用cpu的百分比
0.0% hi — 硬中断(hardware irq)占用cpu的百分比
0.0% si — 软中断(software interrupts)占用cpu的百分比
在这里cpu的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了。
第四行:内存状态
8306544k total — 物理内存总量(8gb)
7775876k used — 使用中的内存总量(7.7gb)
530668k free — 空闲内存总量(530m)
79236k buffers — 缓存的内存量 (79m)
第五行:swap交换分区
2031608k total — 交换区总量(2gb)
2556k used — 使用的交换区总量(2.5m)
2029052k free — 空闲交换区总量(2gb)
4231276k cached — 缓冲的交换区总量(4gb)
计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7gb。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行是空行
第七行以下:各进程(任务)的状态监控
pid — 进程id
user — 进程所有者
pr — 进程优先级
ni — nice值。负值表示高优先级,正值表示低优先级
virt — 进程使用的虚拟内存总量,单位kb。virt=swap+res
res — 进程使用的、未被换出的物理内存大小,单位kb。res=code+data
shr — 共享内存大小,单位kb
s — 进程状态。d=不可中断的睡眠状态 r=运行 s=睡眠 t=跟踪/停止 z=僵尸进程
%cpu — 上次更新到现在的cpu时间占用百分比
%mem — 进程使用的物理内存百分比
time+ — 进程使用的cpu时间总计,单位1/100秒
command — 进程名称(命令名/命令行)
多u多核cpu监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑cpu的状况:
==============================================================
一般我们查看系统性能主要是在以下几个方面
1.用户使用cpu情况 展现为 %user
2.系统使用cpu情况 展现为 %sys
3.wio或iowait
展现为 %iowait 进程由于等待磁盘io而使cpu处于空闲状态的比率
4.cpu的空闲率
5.cpu上下文的交换的比率,也有说明为cpu上下文的切换。即内存和寄存器中数据的切换
6.nice 这个还不是很明白是啥意思
7.real-time 还是未知
8.运行队列的长度
9.平均负载
二 常用命令
1.mpstat
2.top
3.vmstat
4.sar
5.iostat
6.uptime