Lunix:硬件概念
CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制
查看指令:cat/proc/cpuinfo
内存:大脑中的记忆区块,像皮肤、眼睛等所收集到的信息记录起来的地方,以供CPU进行判断
查看指令:cat/proc/meminfo
swap:相当于windows下的虚拟内存,唯一和windows不同的是window的虚拟内存可以与内存同事使用,而swap的空间(系统会把物理内存里的访问频率低的内存对象移动到swap中,再在物理内存里产生新的链接指swap里的那个对象)
cache:高速缓存,是位于cpu与主内存间的一种容量很小但速度很快的存储器,由于cpu的速度远高于主内存,cpu直接从内存中存取数据要等待一定时间周期,cache中保存着cpu刚用过或循环使用的一部分数据,当cpu再次使用该部分数据时可从cache中直接调用,这样减少了cpu的等待时间,提高了系统的效率
buffer:缓冲区,一个用于存储速度不同步骤,设备或优先级不同的设备之间传输数据的区域
监控:cpu:;mem:内存;io:cpu与外设的磁盘交互;load:负载队列;networl:网络
cpu:好:user%+sys%<70%
一般:user%+sys%=85%
不好:user%+sys%>=90%
User time:(程序操作的cpu):非内核操作消耗cpu的时间持续超过90%可能是系统中使用了大量的算法或者复杂的计算亦或是不合理的代码导致该值比较大
Sys time(操作程序的cpu):是内核操作消耗cpu的时间。如果这个值一上去了,整个系统的性能就下来了,它能反映系统本身的情况
命令:top 查进程。
Load average: 后面三个数 1分钟 10分钟 15分钟
Load average: (负载):之一短时间内cpu正在处理的进程数之和的统计信息,即cpu使用队列的长度的统计信息。
它包含的信息不是cpu的使用率情况,反映了cpu的使用情况及申请情况,说白了load average就是cpu的排队信息,排队越小压力越小,
理想的load average(cpu个数*核数*0.7)
Cpu个数: grep’physical id’/proc/cpuinfo|sort -u
Cpu核数: grep’physical id’/proc/cpuinfo|sort -u|wc _1
Cpu(s):0.1% us,0.1% sy
99% id,0.69% wa
Id:空闲
Wa:io等待cpu的时间
对于多核cpu来说,cpu 0是最关键的,因为cpu各核之间的调度都是通过cpu0完成,那么cpu0的负载高,就会影响其它核的性能
Windows下:任务管理器》进程右上角》设置相关性能
Linu下:利用tasket命令设置并限制这个进程被运行在其他那些核上,
命令:taskset -cp|进程号(pid)
怎么看cpu利用率:在top中按数字键1就能看cpu的利用率(cpu(s)s变成数字)
命令:vmstart 1:每1秒 打印1次vmstat信息
r:表示运行队列,如果该值过大,CPU可能会比较忙,使用率高
b:堵塞并等待IO的进程数
swpd:虚拟内存的使用情况
free:空闲的内存
buff:被用来作为设备缓存的内存数
cache:被用来做为高速缓存
si(从磁盘分页到内存的数据)so(从内存分页到磁盘的数量)两列,表示内存交换的频繁程度,如果数值长期很大,表示内存不够
bi:读磁盘
bo:写磁盘
注释:swpd和free:看的是内存
buff和cache:看的是缓存
linux内存管理机制
linux有自己的内存管理机制,linux会尽可能使用内存来提升IO效率。如果系统的free不够用,达到触发机制后,系统会自己释放cache和buffer的内存仅供程序使用(cache和buffer是由内核进行动态管理的)
如果used很多,而cache和buffer所占比率很小,那说明可能存在不够用了,不能单看free的大小来判断,所以你可以理解为cache和buffer也是free的一部分(可用的memory=free memory+buffers+cached)
公式解释:可用内存=空闲的内存+被用来作为设备缓存的内存数+被用来作为缓存的数
swap实在磁盘上开辟的虚拟内存,所以他的变化有可能导致与IO的交互也会增加
用wmstat来判断内存不足的表现:
free memory急剧减少,回收buffer和cache无济于事,大量使用交换分区(swap),读写磁盘数量(io)增多,等待io的进程数(bi)增多,大量cpu时间等于等待io(wa),
建议:memory测试期间保证内存充足,可用内存不少于20% 之后so si趋于0
用vmstat来判断io的瓶颈
cpu>wa过大(参考值,超过20)
system>bi&bo(参考值,超过2000)
最后怎么去看那个进程
vmstat监控如果us很高,将近100%就需要使用top命令来看是哪个进程导致的,然后分析进程
如果是sy很高,可以尝试strance来看系统内核的调用情况
如果是IO异常,可以尝试使用iostat来查看
io : io的瓶颈是系统常见的问题,还没有得到良好的解决方案。
好 iowait%<20%
一般 iowait%=35%
糟糕 iowait%>=50%
*以上仅供参考
命令:iostat
单独执行iostat,显示的结果为从系统开机到当前执行的统计信息
avg-cpu:总体cpu使用情况信息,对于多核cpu,这里为所有cpu的平均值
device:个磁盘设备的io统计信息
tps:每秒io次数
kb—read/s:每秒设备(driver expressed)读取的数据量
kb-wrtn/s:每秒向设备的写入量
kb—read:读取的总数据量
kb—wrtn:写入的数据总量
命令2:iostat -k 5 2
-k : 以kb为单位显示
5:统计间隔为5秒
2:统计次数为2
命令3:iotat -x 显示更加详细的信息,
r/s:每秒读取的请求数(rio)
w/s:每秒写入请求数(wio)
avaqu—sz:平均I/o队列长度
await:平均每次设备I/O操作的等待时间(毫秒)
svctm:平均每次设备I/O操作的服务时间(毫秒)//svcm越接近于await则说明等待时间越少
%util:表示了设备的繁忙程度,80%表示设备已经很忙了
IO瓶颈的症状:
1.%until很高
2.await远大于svctm
3.avgqu-sz比较大
网络流量(了解)
命令:watch -n l "/sbin/ifconfig eth0 | grep bytes"
命令iptraf(提前安装yum install iptraf)
命令iftop参考
参数解答:tx是发送(transport)rx是接收(receive)
外网中:一般RX指的是下载,TX指的是上传
内网:以上内容相反