2014-03-06 26 views
0

我想獲取每個進程的網絡帶寬使用情況。我發現很多這方面的信息,如iftop,nethogslinux process explorer ... 但他們都通過捕獲包(libpcap)獲取進程品牌寬度使用情況,通過我在linux下的測試,它消耗了很多cpu(%10 - %15),流速爲11MByte/s。如果我可以得到每個端口的流速,我可以解決這個問題,因爲我得到了關於使用的過程端口的表格。所以我想知道是否有任何其他方式來獲取沒有捕獲包的端口流。如何獲取進程或端口linux中的網絡帶寬使用

回答

0

就我所知,Linux不提供用於計算網絡使用率的pcap的替代接口。 /proc/<PID>/stat(us)包含各種過程信息,但沒有任何關於網絡訪問的信息,只有包括磁盤訪問在內的總I/O使用情況。

同樣,要知道端口,您必須至少讀取IP標頭。因此,我認爲不可能顯着提高這個速度,因爲分析用戶空間中的所有數據包總是很慢。這個任務的內核模塊似乎是唯一的選擇。

+0

你的意思是我必須爲內核編寫補丁?但我的用戶不能讓我這樣做 – user3047724

+0

當然,你不必這樣做。但你問了一個快速解決方案。 – scai

+0

謝謝你們一切 – user3047724

相關問題