Linux编程:Linux功能监控(1)仓酷云
按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统:linux功能监控,就是要监控体系的各个子体系是不是一般。linux次要的子体系包含:CPU、Memory、IO和Network,它们之间互相依附,一个出成绩大概会影响其他的。好比:网卡流量很年夜会招致更多的CPU开支,由于频仍的呼应中止实行协定栈。
功能监控时,起首要断定使用的范例,然后有的放矢,能够将使用分红:
CPU麋集型:CPU开支很高,好比大批的CPU运算、迷信盘算等。一般webserver属于这类。
IO麋集型:大批的磁盘读写,高负荷的内存利用。IO麋集型不会对CPU倡议更多的哀求,它占用CPU只是为了发生IO哀求然后sleep。一般数据库属于这一范例。
1.CPU
1.高低文切换
高低文切换(ContextSwitch)是多义务操纵体系的基石,每一个历程都有本人的实行情况就是历程的高低文,这些高低文就是以后历程利用的存放器,好比PC、栈指针%esp、帧指针%ebp等。每一个处置器中心在恣意时候只能实行一个历程或线程,当线程的工夫片用尽大概线程堵塞(好比线程实行磁盘io或收集io时),历程调剂器会依据必定的划定规矩(好比选择运转工夫加权以后起码的)选择一个线程占据处置器。由于CPU的存放器汇合只要一份,一切必需要保留上一个历程利用的存放器,同时恢复被调剂的历程的存放器形态。
高低文切换时有消耗的。一样平常地,当体系中线程过量大概io负载太高时,高低文切换会对照频仍,此时CPU工夫过量的损耗在高低文切换。
2.运转行列
内核中的历程调剂器保护着运转行列(runqueue),而每一个堵塞源保护着本人的堵塞行列(waitqueue,好比一个文件形貌符,正在读写该文件的历程会被堵塞在其堵塞行列上)。恣意一个历程要末处于可实行形态,要末堵塞形态。一切的可实行形态的历程都处于运转行列,假如以后体系CPU负载很高,那末运转行列的长度很年夜,历程调剂器就不会实时呼应体系哀求。当运转行列愈来愈年夜时,历程或线程将消费更多的工夫来猎取CPU工夫。
[*]>cat/proc/loadavg
[*]0.020.050.051/27923903
上述命令能够显现体系负载,分离是:已往1分钟、5分钟、15分钟的体系负载、以后正在实行的历程数/体系的一切历程数、最初实行的历程的pid。top命令也能够如今体系负载。
3.vmstat
vmstat供应一种低开支的体例统计体系功能数据。
[*]>vmstat11
[*]procs-----------memory----------------------swap-------io-----system------cpu----
[*]rbswpdfreebuffcachesisobiboincsussyidwa
[*]00015403044979721631008000450020971
与CPU相干的各个列的意义:
r:以后运转行列中的历程的数量,就是那些处于可实行形态,可是得不到CPU的历程。
b:以后处于堵塞形态,并守候IO哀求完成的历程的数量。
in:以后处置的中止数量。
cs:以后体系产生的高低文切换次数。
us:CPU在用户空间实行的工夫的百分比。
sy:CPU在内核空间实行的工夫的百分比。
id:CPU余暇工夫的百分比。
wa:因为一切可运转历程守候IO哀求完成被堵塞招致的CPU余暇工夫的百分比。
4.pidstat
pidstat用于检察历程所属的线程的CPU的利用情形。
[*]>pidstat-p2036-t11
[*]Linux2.6.32-5-xen-amd64(vzw51173.puppetclient.163.com)2012年10月12日_x86_64_(4CPU)
[*]16时09分17秒TGIDTID%usr%system%guest%CPUCPUCommand
[*]16时09分18秒2036-0.002.000.002.003python
[*]16时09分18秒-20360.000.000.000.003|__python
[*]16时09分18秒-20410.000.000.000.003|__python
[*]16时09分18秒-56390.000.000.000.002|__python
[*]16时09分18秒-56500.001.000.001.001|__python
[*]均匀工夫:TGIDTID%usr%system%guest%CPUCPUCommand
[*]均匀工夫:2036-0.002.000.002.00-python
[*]均匀工夫:-20360.000.000.000.00-|__python
[*]均匀工夫:-20410.000.000.000.00-|__python
[*]均匀工夫:-56390.000.000.000.00-|__python
[*]均匀工夫:-56500.001.000.001.00-|__python
Linux中是不辨别历程和线程的,线程就是能够共享资本的历程。TID就是线程的PID,这里能够检察各个线程的CPU利用情形。
5.总结
vmstat->top->pidstat
经由过程vmstat检察全体CPU利用情形,top检察CPU占用高的几个历程,pidstat检察这几个历程对应的线程。
监控CPU功能包含以下几个部分:
a.反省CPU的runqueue,每一个CPU的runqueue最好不要凌驾3个历程。
b.断定CPU使用率在usr/sys=65%/35%~70%/30%之间。
c.当CPU的处置工夫更多的是在system空间,申明已超负荷。
d.当I/O增加时,CPU麋集型的使用将遭到影响。
e.当CPU的IOWait占用对照年夜的比例时,申明IO呈现非常。
2.Memory
1.假造内存
假造内存就是在硬盘上划出一部分地区做为内存利用,当体系可用的内存低于某个值时,内核就会将以后不再活泼的内存块写进磁盘,然后这块内存能够作为其他用处利用。当cpu必要会见被写进磁盘的数据时,再把它读进到内存中。上述操纵对用户来讲是通明的,磁盘的读写是很慢的,比内存要慢几万万倍(磁盘10ms,内存100-200ns),以是要只管把数据放在内存中,程序才会运转的更快。硬盘顶用作替换内存的部分就是假造内存,成为swapspace。
2.页高速缓存
Linux内核经由过程页高速缓存来加速磁盘操纵。当体系存在大批的余暇内存时,内核会把余暇内存的一部分做为页高速缓存。当某个磁盘块被缓存以后,关于这个磁盘块的读写就相称于内存操纵。读操纵时间接读对应的page,写操纵时将内容写进对应的page,然后将该page标志为脏页,会有背景线程flush(linux2.6内核)完成将脏页同步回磁盘。flush在脏页比例年夜于某个阈值,大概修正凌驾必定工夫以后举行写回。
[*]>psaxu|grepflush
[*]root9270.00.000?SMay232:34
[*]root144130.00.010200856pts/2S+16:530:00grepflush
3.vmstat
vmstat能够检察体系的内存相干信息。
[*]>vmstat1
[*]procs-----------memory-----------------swap----------io-----system------cpu----
[*]rbswpdfreebuffcachesisobiboincsussyidwa
[*]00600438264995523741240000400001000
[*]006004373649955237412440000156590600990
内存相干列的意义:
swpd:以后利用的假造内存的总额(KB),当余暇内存到达更低的阈值时,更多的页会被互换到磁盘。
free:以后内存中的余暇空间的巨细(KB)。
buff:以后内存顶用于read和write操纵的缓冲区的巨细(KB)。
cache:页高速缓存巨细(KB)。
si:从swap写回内存的巨细(KB)。
so:写进swap的巨细(KB)。
bi:从文件体系或互换设备读的磁盘块的巨细(KB)。读磁盘。
bo:从内存写进文件体系或互换设备的巨细(KB)。写磁盘。
4.pidstat
检察历程的缺页情形。
[*]>pidstat-r-p3167911
[*]Linux2.6.32-5-xen-amd64(debian-org)2012年10月12日_x86_64_(4CPU)
[*]
[*]17时10分02秒PIDminflt/smajflt/sVSZRSS%MEMCommand
[*]17时10分03秒316791292.000.008713481078522.58node
[*]均匀工夫:316791292.000.008713481078522.58node
各个列寄义:
minflt/s:历程均匀每s酿成的minorfault,这些毛病不会招致从磁盘加载内存页。
majflt/s:历程均匀每s酿成的majorfault,这些毛病会招致从磁盘加载内存页。
VSZ:历程利用的一切假造内存的巨细(KB)。
RSS:历程利用的物理内存巨细(KB)。
%MEM:占用物理内存百分比。
5.sar
a.检察页统计信息
[*]>sar-B
[*]Linux2.6.32-5-xen-amd64(debian-org)2012年11月17日_x86_64_(4CPU)
[*]
[*]00时00分01秒pgpgin/spgpgout/sfault/smajflt/spgfree/spgscank/spgscand/spgsteal/s%vmeff
[*]00时05分01秒0.00200.84364.650.00538.940.000.000.000.00
[*]00时15分01秒0.00184.84353.720.00396.330.000.000.000.00
[*]……
[*]09时45分01秒0.001822.521175.530.009406.760.000.000.000.00
[*]09时55分01秒0.003401.991556.250.0010269.710.000.000.000.00
[*]均匀工夫:0.00319.68429.480.001036.330.000.000.000.00
各个列的寄义:
pgpgin/s:每s从磁盘换进的页的巨细(KB)
pgpgout/s:每s换出到磁盘的页的巨细(KB)
fault/s:每s产生的缺页毛病的次数,包含minorfault和majorfault。
majflt/s:每s产生的majorfault的次数,majorfault会招致从磁盘载进内存页(即便用了swap分区)。
pgfree/s:每s放进余暇列表中的页的个数。
pgscank/s:每s被kswapd背景历程扫描的页的个数。
pgscand/s:每s间接被扫描的页的个数。
pgsteal/s:为了满意内存请求,每s从cache(pagecache和swapcache)接纳的页的个数。
%vmeff:即是pgsteal/pgscan,用于盘算页接纳(pagereclaim)的效力。
b.检察内存利用信息
对于linux命令,一定要学会用man和info去查他们的解释; 这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。? 眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。 我想即使Linux高手也很难快速准确精练的回答你。 Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。 眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。 工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。 尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。 熟读Linux系统有关知识,如系统目录树,有关内容可购书阅读或搜索论坛。 发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。 甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。 你需要提供精确有效的信息。Linux这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。 让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。? 选择一些适于初学者的Linux社区。 工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。
页:
[1]