• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Just enjoy programming

            【操作系統(tǒng)】Linux性能監(jiān)控——CPU、Memory、IO、Network(轉(zhuǎn)載)

            【操作系統(tǒng)】Linux性能監(jiān)控——CPU、Memory、IO、Network
            by illidan

            (綜合了幾篇文章和自己的實踐)

             

            一、CPU

            1、良好狀態(tài)指標

            • CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%
            • 上下文切換:與CPU利用率相關(guān)聯(lián),如果CPU利用率狀態(tài)良好,大量的上下文切換也是可以接受的。
            • 可運行隊列:每個處理器的可運行隊列<=3個線程

            2、監(jiān)控工具

            • vmstat

            $ 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

            14  0    140 2904316 341912 3952308  0    0     0   460 1106 9593 36 64  1  0  0

            17  0    140 2903492 341912 3951780  0    0     0     0 1037 9614 35 65  1  0  0

            20  0    140 2902016 341912 3952000  0    0     0     0 1046 9739 35 64  1  0  0

            17  0    140 2903904 341912 3951888  0    0     0    76 1044 9879 37 63  0  0  0

            16  0    140 2904580 341912 3952108  0    0     0     0 1055 9808 34 65  1  0  0

            重要參數(shù):

            r,run queue,可運行隊列的線程數(shù),這些線程都是可運行狀態(tài),只不過CPU暫時不可用;

            b,被blocked的進程數(shù),正在等待IO請求;

            in,interrupts,被處理過的中斷數(shù)

            cs,context switch,系統(tǒng)上正在做上下文切換的數(shù)目

            us,用戶占用CPU的百分比

            sys,內(nèi)核和中斷占用CPU的百分比

            id,CPU完全空閑的百分比

            上例可得:

            sy高us低,以及高頻度的上下文切換(cs),說明應(yīng)用程序進行了大量的系統(tǒng)調(diào)用;

            這臺4核機器的r應(yīng)該在12個以內(nèi),現(xiàn)在r在14個線程以上,此時CPU負荷很重。

            • 查看某個進程占用的CPU資源

            $  while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep 'test_command'; sleep 1; done

              PID  NI PRI %CPU PSR COMMAND

            28577   0  23  0.0   0 test_command

            28578   0  23  0.0   3 test_command

            28579   0  23  0.0   2 test_command

            28581   0  23  0.0   2 test_command

            28582   0  23  0.0   3 test_command

            28659   0  23  0.0   0 test_command

            …… 

            二、Memory

            1、良好狀態(tài)指標

            • swap in (si) == 0,swap out (so) == 0
            • 應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存 <= 70%

            2、監(jiān)控工具

            • vmstat

            $ 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

            0  3 252696   2432    268   7148 3604 2368  3608  2372  288  288  0  0 21 78  1

            0  2 253484   2216    228   7104 5368 2976  5372  3036  930  519  0  0  0 100  0

            0  1 259252   2616    128   6148 19784 18712 19784 18712 3821 1853  0  1  3 95  1

            1  2 260008   2188    144   6824 11824 2584 12664  2584 1347 1174 14  0  0 86  0

            2  1 262140   2964    128   5852 24912 17304 24952 17304 4737 2341 86 10  0  0  4

            重要參數(shù)

            swpd,已使用的 SWAP 空間大小,KB 為單位;

            free,可用的物理內(nèi)存大小,KB 為單位;

            buff,物理內(nèi)存用來緩存讀寫操作的buffer大小,KB 為單位;

            cache,物理內(nèi)存用來緩存進程地址空間的 cache 大小,KB 為單位;

            si,數(shù)據(jù)從 SWAP 讀取到 RAM(swap in)的大小,KB 為單位;

            so,數(shù)據(jù)從 RAM 寫到 SWAP(swap out)的大小,KB 為單位。

            上例可得:

            物理可用內(nèi)存 free 基本沒什么顯著變化,swapd逐步增加,說明最小可用的內(nèi)存始終保持在 256MB(物理內(nèi)存大小) * 10% = 2.56MB 左右,當臟頁達到10%的時候就開始大量使用swap。

            • free

            $ free -m

            total used free shared buffers cached

            Mem: 8111 7185 926 0 243 6299

            -/+ buffers/cache: 643 7468

            Swap: 8189 0 8189

             

            三、磁盤IO

            1、良好狀態(tài)指標

            • iowait % < 20%

            提高命中率的一個簡單方式就是增大文件緩存區(qū)面積,緩存區(qū)越大預(yù)存的頁面就越多,命中率也越高。

            Linux 內(nèi)核希望能盡可能產(chǎn)生次缺頁中斷(從文件緩存區(qū)讀),并且能盡可能避免主缺頁中斷(從硬盤讀),這樣隨著次缺頁中斷的增多,文件緩存區(qū)也逐步增大,直到系統(tǒng)只有少量可用物理內(nèi)存的時候 Linux 才開始釋放一些不用的頁。

            2、監(jiān)控工具

            • 查看物理內(nèi)存和文件緩存情況

            $ cat /proc/meminfo

            MemTotal:      8182776 kB

            MemFree:       3053808 kB

            Buffers:        342704 kB

            Cached:        3972748 kB

            這臺服務(wù)器總共有 8GB 物理內(nèi)存(MemTotal),3GB 左右可用內(nèi)存(MemFree),343MB左右用來做磁盤緩存(Buffers),4GB左右用來做文件緩存區(qū)(Cached)。

            • sar

            $ sar -d 2 3

            Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU)

            11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

            11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

            11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

            11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00

            11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

            11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05

            Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

            Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02

            重要參數(shù):

            await表示平均每次設(shè)備I/O操作的等待時間(以毫秒為單位)。

            svctm表示平均每次設(shè)備I/O操作的服務(wù)時間(以毫秒為單位)。

            %util表示一秒中有百分之幾的時間用于I/O操作。

            如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高于svctm的值,則表示I/O隊列等待太長,系統(tǒng)上運行的應(yīng)用程序?qū)⒆兟?/span>

            如果%util接近100%,表示磁盤產(chǎn)生的I/O請求太多,I/O系統(tǒng)已經(jīng)滿負荷的在工作,該磁盤可能存在瓶頸。

             

            四、Network IO

            對于UDP

            1、良好狀態(tài)指標

            接收、發(fā)送緩沖區(qū)不長時間有等待處理的網(wǎng)絡(luò)包

            2、監(jiān)控工具

            • netstat

            對于UDP服務(wù),查看所有監(jiān)聽的UDP端口的網(wǎng)絡(luò)情況

            $ watch netstat -lunp

            Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

            udp        0      0 0.0.0.0:64000           0.0.0.0:*                           -

            udp        0      0 0.0.0.0:38400           0.0.0.0:*                           -

            udp        0      0 0.0.0.0:38272           0.0.0.0:*                           -

            udp        0      0 0.0.0.0:36992           0.0.0.0:*                           -

            udp        0      0 0.0.0.0:17921           0.0.0.0:*                           -

            udp        0      0 0.0.0.0:11777           0.0.0.0:*                           -

            udp        0      0 0.0.0.0:14721           0.0.0.0:*                           -

            udp        0      0 0.0.0.0:36225           0.0.0.0:*                           -

            RecvQ、SendQ為0,或者不長時間有數(shù)值是比較正常的。

             

            對于UDP服務(wù),查看丟包情況(網(wǎng)卡收到了,但是應(yīng)用層沒有處理過來造成的丟包)

            $ watch netstat -su

            Udp:

                278073881 packets received

                4083356897 packets to unknown port received.

                2474435364 packet receive errors

                1079038030 packets sent

            packet receive errors 這一項數(shù)值增長了,則表明在丟包。

            這里有對“packet receive errors”的稍微詳細些的解釋,它包含了7種錯誤,and通常表明是checksum錯誤。不過我們通常通過這個數(shù)值的變化來判斷UDP服務(wù)是否丟包(第2項錯誤),不知道是否有其他什么方法來判斷UDP的丟包?

            "packet receive errors" usually means:

            1) data is truncated, error in checksum while copying

            2) udp queue is full, so it needs to be dropped

            3) unable to receive udp package from encapsulated socket

            4) sock_queue_rcv_skb() failed with -ENOMEM

            5) it is a short packet

            6) no space for header in udp packet when validating packet

            7) xfrm6_policy_check() fails

            many times it means the checksum is not right.

             

            對于TCP(來自david的經(jīng)驗,thx~~

            1、良好狀態(tài)指標

            對于TCP而言,不會出現(xiàn)因為緩存不足而存在丟包的事,因為網(wǎng)絡(luò)等其他原因,導(dǎo)致丟了包,協(xié)議層也會通過重傳機制來保證丟的包到達對方。

            所以,tcp而言更多的專注重傳率

            2、監(jiān)控工具

            # cat /proc/net/snmp | grep Tcp:

            Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts

            Tcp: 1 200 120000 -1 78447 413 50234 221 3 5984652 5653408 156800 0 849

            重傳率 = RetransSegs / OutSegs

            至于這個值在多少范圍內(nèi),算ok的,得看具體的業(yè)務(wù)了。

            業(yè)務(wù)側(cè)更關(guān)注的是響應(yīng)時間。


            本文原創(chuàng)自無線技術(shù)運營空間: http://wireless.qzone.qq.com 及 http://blog.csdn.net/wireless_tech (專注無線技術(shù)運營——無線技術(shù)(操作系統(tǒng)/數(shù)據(jù)庫/WEB前端/負載均衡/系統(tǒng)容災(zāi)/系統(tǒng)安全/短信接入/WAP接入/3G等)、無線業(yè)務(wù)運營、無線開放平臺、統(tǒng)計分析(用戶行為分析/數(shù)據(jù)挖掘)、CP合作,聯(lián)系我們:1780551083@qq.com)

            posted on 2012-12-26 22:02 周強 閱讀(1383) 評論(0)  編輯 收藏 引用 所屬分類: linux

            久久综合综合久久97色| 国内精品久久久久久久久| 日本免费久久久久久久网站| 久久精品国产亚洲AV香蕉| 精品久久久久香蕉网| 久久99亚洲综合精品首页| 久久国产免费直播| 久久美女人爽女人爽| 免费一级做a爰片久久毛片潮| 亚洲av日韩精品久久久久久a| 久久成人精品视频| 亚洲熟妇无码另类久久久| 国产香蕉97碰碰久久人人| 久久香综合精品久久伊人| 亚洲日本va午夜中文字幕久久| 久久亚洲欧美日本精品| 久久久婷婷五月亚洲97号色 | 国产91久久综合| 亚洲AV无码久久精品蜜桃| 亚洲精品乱码久久久久久不卡| 99久久精品国产麻豆| 天天躁日日躁狠狠久久| 国产69精品久久久久APP下载| 国产成人AV综合久久| 久久香蕉一级毛片| 日韩欧美亚洲综合久久影院d3| 99久久无色码中文字幕人妻| 久久这里都是精品| 久久久久青草线蕉综合超碰| 久久久久久av无码免费看大片| 一本一道久久精品综合| 91秦先生久久久久久久| 国产精品久久久久影院色| 久久精品国产亚洲麻豆| 996久久国产精品线观看| 国产成人精品白浆久久69| 69久久夜色精品国产69| 国产午夜久久影院| 国产女人aaa级久久久级| 久久久久亚洲AV无码专区桃色| 热久久国产欧美一区二区精品|