系統技術非業餘研究 » nicstat 網路流量統計利器
前段時間看到brendangregg的 Linux Performance Analysis and Tools PPT裡面提到的nicstat,研究了下是個不錯的東西,分享給大家。
nicstat is to network interfaces as “iostat” is to disks, or “prstat” is to processes.
nicstat原本是Solaris平臺下顯示網絡卡流量的工具,Tim Cook將它移植到linux平臺,官方網站見 這裡。 相比netstat, 他有以下關鍵特性:
- Reports bytes in & out as well as packets.
- Normalizes these values to per-second rates.
- Reports on all interfaces (while iterating)
- Reports Utilization (rough calculation as of now)
- Reports Saturation (also rough)
- Prefixes statistics with the current time
我們來體驗下,首先安裝之,原始碼在 這裡 下, 目前最新的版本是1.92。
解開後,由於這個版本預設是在32位linux下編譯,所以需要改下Makefile.Linux:
$ uname -r 2.6.32-131.21.1.tb477.el6.x86_64 $ diff Makefile.Linux64 Makefile.Linux 17c17 < CFLAGS = $(COPT) -m32 --- > CFLAGS = $(COPT) $ sudo make -f Makefile.Linux install sudo install -o root -g root -m 4511 `./nicstat.sh --bin-name` /usr/local/bin/nicstat sudo install -o bin -g bin -m 555 enicstat /usr/local/bin sudo install -o bin -g bin -m 444 nicstat.1 /usr/local/share/man/man1/nicstat.1
enicstat就安裝好可以使用了。
使用文件在這裡: man nicstat
由於在linux下需要獲取網絡卡的speed等資訊,需要以特權使用者執行。
$ sudo enicstat -l Int Loopback Mbit/s Duplex State lo Yes - unkn up eth0 No 1000 full up bond0 No 0 unkn up $ sudo enicstat Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat 13:04:10 lo 161.1 161.1 489.2 489.2 337.3 337.3 0.00 0.00 13:04:10 eth0 601.9 589.1 1868.1 1894.1 330.0 318.5 0.98 0.00 13:04:10 bond0 601.9 589.1 1868.1 1894.1 330.0 318.5 0.00 0.00
上面很特色的一個選項就是網絡卡的Util(利用率)以及Saturation(This the number of errors/second seen for the interface)在實踐中用途挺大的。
通過strace和原始碼進行簡單的分析:
open(“/proc/net/dev”, O_RDONLY) = 3
open(“/proc/net/snmp”, O_RDONLY) = 5
open(“/proc/net/netstat”, O_RDONLY) = 6
open(“/proc/uptime”, O_RDONLY) = 9
大部分網絡卡相關的統計資訊是從上面3個檔案獲取到的,其中snmp檔案提供了tcp和udp的統計資訊。
預設統計資訊是以KB為單位,-M選項可以更改為以M為單位,演習如下:
$ sudo enicstat -M Time Int rMbps wMbps rPk/s wPk/s rAvs wAvs %Util Sat 13:14:51 lo 1.26 1.26 489.1 489.1 337.3 337.3 0.00 0.00 13:14:51 eth0 4.70 4.60 1868.0 1894.0 330.0 318.5 0.98 0.00 13:14:51 bond0 4.70 4.60 1868.0 1894.0 330.0 318.5 0.00 0.00
nicstat還提供了tcp連結外聯和內聯的個數,重置,Drops資訊還有包重傳率等資訊,這些資訊對於診斷tcp問題挺有用的。
$ sudo enicstat -t 13:09:40 InKB OutKB InSeg OutSeg Reset AttF %ReTX InConn OutCon Drops TCP 0.00 0.00 2123.7 2251.7 1.84 0.79 0.000 7.16 2.95 0.00
最後需要注意的是, 解讀輸出資訊的時候:
NOTES
On Linux, the NoCP, Defer, TCP InKB, and TCP OutKB statistics are always reported as zero.The way that saturation is reported is a best effort, as there is no standardized naming to capture
all errors related to an interface’s inability to receive or transmit a packet. Monitoring %Util and
packet rates, along with an understanding of the specific NICs may be more useful in judging whether
you are nearing saturation.
祝玩得開心!
Post Footer automatically generated by wp-posturl plugin for wordpress.
相關推薦
系統技術非業餘研究 » nicstat 網路流量統計利器
前段時間看到brendangregg的 Linux Performance Analysis and Tools PPT裡面提到的nicstat,研究了下是個不錯的東西,分享給大家。 nicstat is to network interfaces as “iostat” is to disks,
系統技術非業餘研究 » Erlang 網路密集型伺服器的瓶頸和解決思路
最近我們的Erlang IO密集型的伺服器程式要做細緻的效能提升,從每秒40萬包處理提升到60萬目標,需要對程序和IO排程器的原理很熟悉,並且對行為進行微調,花了不少時間參閱了相關的文件和程式碼。 其中最有價值的二篇文章是: 1. Characterizing the Scalability of
系統技術非業餘研究 » Erlang網路多程序模型的實驗
在做網路程式的時候我們會經常用到多程序模式. 主程序執行bind呼叫得到控制代碼後, 同時fork N個子程序, 把控制代碼傳遞給子程序, 多程序同時accept來處理. 這個模型在erlang下很有現實意義的. 在之前的測試中,我們演示了erlang的單處理器模式的威力,最多的時候在單cpu上可
系統技術非業餘研究 » dropwatch 網路協議棧丟包檢查利器
在做網路伺服器的時候,會碰到各種各樣的網路問題比如說網路超時,通常一般的開發人員對於這種問題最常用的工具當然是tcpdump或者更先進的wireshark來進行抓包分析。通常這個工具能解決大部分的問題,但是比如說wireshark發現丟包,那深層次的原因就很難解釋了。這不怪開發人員,要怪就怪lin
系統技術非業餘研究 » erlsnoop erlang訊息監聽器(除錯erlang網路程式利器,支援最新的R13B04)
由於R13B以後, Erlang的分佈協議修改了格式, 添加了Atom Cache, erlsnoop在新版本下無法使用, 我特地打了patch, 使得它支援最新的版本,原始碼在附件中下載. 在erlang的郵件列表上看到: Have you tried putting a snoop to se
系統技術非業餘研究 » blktrace未公開選項網路儲存擷取資料
我們透過blktrace來觀察io行為的時候,第一件事情需要選擇目標裝置,以便分析該裝置的io行為。具體使用可以參考我之前寫的幾篇:這裡 這裡 這裡 blktrace分為核心部分和應用部分,應用部分收到我們要捕捉的裝置名單,傳給核心。核心分佈在block層的各個tracepoint就會開始工作,把
系統技術非業餘研究 » 巧用Netcat方便網路程式開發
首先介紹下NC,這個號稱網路瑞士軍刀的工具。 What is Netcat? Netcat is a featured networking utility which reads and writes data across network connections, using the TC
系統技術非業餘研究 » qperf測量網路頻寬和延遲
我們在做網路伺服器的時候,通常會很關心網路的頻寬和延遲。因為我們的很多協議都是request-reponse協議,延遲決定了最大的QPS,而頻寬決定了最大的負荷。 通常我們知道自己的網絡卡是什麼型號,交換機什麼型號,主機之間的物理距離是多少,理論上是知道頻寬和延遲是多少的。但是現實的情況是,真正的
系統技術非業餘研究 » 網路棧記憶體不足引發程序掛起問題
我們知道TCP socket有傳送緩衝區和接收緩衝區,這二個緩衝區都可以透過setsockopt設定SO_SNDBUF,SO_RCVBUF來修改,但是這些值設多大呢?這些值和協議棧的記憶體控制相關的值什麼關係呢? 我們來解釋下: $ sysctl net|grep mem net.core.wme
系統技術非業餘研究
ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼
系統技術非業餘研究 » MySQL資料庫架構的演化觀察
MySQL資料庫架構的演化觀察 December 14th, 2017 Categories: 資料庫 Tags: mysql
系統技術非業餘研究 » inet_dist_connect_options
Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke
系統技術非業餘研究 » 推薦工作機會
最後更新時間:2014/11/28 請賜簡歷至:[email protected], 感謝您對加入我們公司有興趣,我們希望能早日和您共事。 以下幾個職位1年內有效,歡迎內部轉崗: 資深資料工程師 公司:阿里(核心系統資料庫組) 工作地點:杭州(西溪園區) 崗位描述: 分析雲服務產生的海
系統技術非業餘研究 » 新的工作和研究方向
和大家更新下: 做了將近8年資料庫後,我的工作和研究方向將會延伸到虛擬化和計算相關的雲服務,希望能夠和大家一起進步,Happy New Year! 預祝大家玩得開心! Post Footer automatically generated by wp-posturl plugin for w
系統技術非業餘研究 » 叢集引入inet_dist_{listen,connect}_options更精細引數微調
Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke
系統技術非業餘研究 » 2017升的最快的幾個資料庫無責任點評
ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼
系統技術非業餘研究 » Erlang 17.5引入+hpds命令列控制程序預設字典大小
Erlang 17.5釋出引入控制程序預設字典大小的命令列引數: Erlang/OTP 17.5 has been released Written by Henrik, 01 Apr 2015 Some highlights of the release are: ERTS: Added co
系統技術非業餘研究 » inet_dist_listen_options
Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke
系統技術非業餘研究 » 老生常談: ulimit問題及其影響
ulimit最初設計是用來限制程序對資源的使用情況的,因為早期的系統系統資源包括記憶體,CPU都是非常有限的,系統要保持公平,就要限制大家的使用,以達到一個相對公平的環境。以下是典型的機器預設的限制情況: $ ulimit -a core file size (blocks,
系統技術非業餘研究 » 求賢帖
原創文章,轉載請註明: 轉載自系統技術非業餘研究 本文連結地址: 求賢帖 作為一個優秀的工程師,你其實不缺少才華,你缺少的是神一樣的隊友、充滿挑戰的世界級技術難題,和一個可以施展自己才華的大舞臺。加入阿里核心系統資料庫開發團隊吧,你缺的這裡都有。來吧,戳這裡,給我們見識你的機會:http://b