Linux System Monitorng 笔记

概念 : 性能优化就是找到系统处理中的瓶颈以及去除这些的过程

———————————————————————————————————-
如何查找出系统性能问题:                                          
                ___I/0应用型(Dbserver)
1.确定应用类型: |___
                   CPU(运算)应用型(例如:webserver,mailserver)

2.确定基准线统计 :建立一个用来比较的准线标准

———————————————————————————————————-
系统高负载的问题:
大量的页调入请求导致内存队列的拥塞
网卡的大吞吐量可能导致更多的 CPU开销
大量的CPU开销又会尝试更多的内存使用请求
大量来自内存的磁盘写请求可能导致更多的 CPU 以及 IO问题

……………………………………………….CPU………………………………………….

概念:
CPU 利用率  : 就是定义CPU 使用的百分比

User Time   : 在user space中被执行进程在CPU 开销时间百分比

System Time : 内核线程以及中断时间

Wait IO     : I/O 请求等待时间

Idle        : 空闲

———————————————————————————————————-

性能指标:

每次内核的上下文切换,资源被用于关闭在CPU寄存器中的线程和放置在队列中.系统中越多的上下文切换,在处理器的调度管理下,内核将得到更多的工作.

一个标准的Linux 内核可以运行50 至 50,000 的处理线程

当运行队列越来越巨大,进程线程将花费更多的时间获取被执行

系统 load 就是指在CPU 队列中有多少数目的线程,以及其中当前有多少进程线程数目被执行的组合.如果一个双核系统执行了2个线程,还有4个在运行队列中,则 load 应该为 6

Run Queues – 每个处理器应该运行队列不超过1-3 个线程

CPU Utiliation – 如果一个CPU 被充分使用,利用率分类之间均衡的比例应该是
65% – 70%  User Time
30% – 35%  System Time
0%  – 5%   Idle Time

———————————————————————————————————

工具应用:

vmstat :vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息

#vmstat 1
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

说明:
r   :当前运行队列中线程的数目,代表线程处于可运行状态,但CPU 还未能执行. (数值超大说明,系统负载高,其实就是load average)
b   :当前进程阻塞并等待I/O请求完成的数目
in  :每秒的中断数,包括时钟中断数目.(中断多,上下文切换少,说明单一进程占用比较大)
cs  :每秒的发生上下文切换的数目
us  :用户CPU利用率
sys :内核和中断利用率
wa  :所有可运行状态线程被阻塞在等待I/O请求的百分比
id  :CPU空闲时间

———————————————————————————————————-

结论:
监控 CPU 性能由以下几个部分组成:

1,检查system的运行队列,以及确定不要超出每个处理器3个可运行状态线程的限制.

2,确定CPU 利用率中user/system比例维持在70/30

3,当CPU 开销更多的时间在system mode,那就说明已经超负荷并且应该尝试重新调度优先级

4,当I/O 处理得到增长,CPU 范畴的应用处理将受到影响

……………………………………………..Memory………………………………………….

概念:

Virtual Memory        :虚拟内存就是采用硬盘对物理内存进行扩展,所以对可用内存的增加是要相对在一个有效范围内的

Virtual Memory Pages  :虚拟内存被分为很多 pages(译注:页),在X86架构中,每个虚拟内存页为 4KB.当内核写内存到磁盘或者读磁盘到内存,这就是一次写内存到页的过程.内核通常是在swap 分区和文件系统之间进行这样的操作

Kernel Memory Paging  :内存分页是指内核会定期将内存中的数据同步到硬盘,这个过程就是Memory Paging

PFRA                  :就是OS 内核用来回收并释放内存空间的算法

kswapd进程 :负责确保内存空间总是在被释放中
pdflush进程:负责将内存中的内容和文件系统进行同步操作

———————————————————————————————————-

命令:

vmstat 1
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

Swapd   :当前虚拟内存使用的总额(单位:KB).空闲内存达到最低的阀值时,更多的数据被转换成页到交换设备中
Free    :当前内存中可用空间字节数
Buff    :当前内存中用于read()和write()操作的缓冲区中缓存字节数
Cache   :当前内存中映射到进程地址空间字节数
So      :写入交换空间的字节数总额
Si      :从交换空间写回内存的字节数总额
Bo      :磁盘块页面从内存到文件或交换设备的总额
Bi      :磁盘块页面从文件或交换设备到内存的总额

……………………………………………..I/O………………………………………….

概念:

MPF       :内核把进程所需要的数据从磁盘读入到缓存

MnPR      :内核把进程所需要的数据在缓存中读取

———————————————————————————————————-
命令:

iostat -x 1

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.78    0.32    3.57    9.56    0.01   85.75

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c0d0        2.50    59.68 105.85 23.11    56.13   209.82     2.06     0.23    1.75   2.86  36.85

rrqm/s  : 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s  : 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s     : 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s     : 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s  : 每秒读扇区数。即 delta(rsect)/s
wsec/s  : 每秒写扇区数。即 delta(wsect)/s
rkB/s   : 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s   : 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。即 delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await   : 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm   : 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util  : 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*