當前位置:首頁 » 操作系統 » linux網路性能

linux網路性能

發布時間: 2023-03-19 07:08:27

⑴ 關於 linux 網路,你必須知道這些

我們一起學習了文件系統和磁碟 I/O 的工作原理,以及相應的性能分析和優化方法。接下來,我們將進入下一個重要模塊—— Linux 的網路子系統。

由於網路處理的流程最復雜,跟我們前面講到的進程調度、中斷處理、內存管理以及 I/O 等都密不可分,所以,我把網路模塊作為最後一個資源模塊來講解。

同 CPU、內存以及 I/O 一樣,網路也是 Linux 系統最核心的功能。網路是一種把不同計算機或網路設備連接到一起的技術,它本質上是一種進程間通信方式,特別是跨系統的進程間通信,必須要通過網路才能進行。隨著高並發、分布式、雲計算、微服務等技術的普及,網路的性能也變得越來越重要。

說到網路,我想你肯定經常提起七層負載均衡、四層負載均衡,或者三層設備、二層設備等等。那麼,這里說的二層、三層、四層、七層又都是什麼意思呢?

實際上,這些層都來自國際標准化組織制定的開放式系統互聯通信參考模型(Open System Interconnection Reference Model),簡稱為 OSI 網路模型。

但是 OSI 模型還是太復雜了,也沒能提供一個可實現的方法。所以,在 Linux 中,我們實際上使用的是另一個更實用的四層模型,即 TCP/IP 網路模型。

TCP/IP 模型,把網路互聯的框架分為應用層、傳輸層、網路層、網路介面層等四層,其中,

為了幫你更形象理解 TCP/IP 與 OSI 模型的關系,我畫了一張圖,如下所示:

當然了,雖說 Linux 實際按照 TCP/IP 模型,實現了網路協議棧,但在平時的學習交流中,我們習慣上還是用 OSI 七層模型來描述。比如,說到七層和四層負載均衡,對應的分別是 OSI 模型中的應用層和傳輸層(而它們對應到 TCP/IP 模型中,實際上是四層和三層)。

OSI引入了服務、介面、協議、分層的概念,TCP/IP借鑒了OSI的這些概念建立TCP/IP模型。

OSI先有模型,後有協議,先有標准,後進行實踐;而TCP/IP則相反,先有協議和應用再提出了模型,且是參照的OSI模型。

OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網路互聯事實上的標准。

有了 TCP/IP 模型後,在進行網路傳輸時,數據包就會按照協議棧,對上一層發來的數據進行逐層處理;然後封裝上該層的協議頭,再發送給下一層。

當然,網路包在每一層的處理邏輯,都取決於各層採用的網路協議。比如在應用層,一個提供 REST API 的應用,可以使用 HTTP 協議,把它需要傳輸的 JSON 數據封裝到 HTTP 協議中,然後向下傳遞給 TCP 層。

而封裝做的事情就很簡單了,只是在原來的負載前後,增加固定格式的元數據,原始的負載數據並不會被修改。

比如,以通過 TCP 協議通信的網路包為例,通過下面這張圖,我們可以看到,應用程序數據在每個層的封裝格式。

這些新增的頭部和尾部,增加了網路包的大小,但我們都知道,物理鏈路中並不能傳輸任意大小的數據包。網路介面配置的最大傳輸單元(MTU),就規定了最大的 IP 包大小。在我們最常用的乙太網中,MTU 默認值是 1500(這也是 Linux 的默認值)。

一旦網路包超過 MTU 的大小,就會在網路層分片,以保證分片後的 IP 包不大於 MTU 值。顯然,MTU 越大,需要的分包也就越少,自然,網路吞吐能力就越好。

理解了 TCP/IP 網路模型和網路包的封裝原理後,你很容易能想到,Linux 內核中的網路棧,其實也類似於 TCP/IP 的四層結構。如下圖所示,就是 Linux 通用 IP 網路棧的示意圖:

我們從上到下來看這個網路棧,你可以發現,

這里我簡單說一下網卡。網卡是發送和接收網路包的基本設備。在系統啟動過程中,網卡通過內核中的網卡驅動程序注冊到系統中。而在網路收發過程中,內核通過中斷跟網卡進行交互。

再結合前面提到的 Linux 網路棧,可以看出,網路包的處理非常復雜。所以,網卡硬中斷只處理最核心的網卡數據讀取或發送,而協議棧中的大部分邏輯,都會放到軟中斷中處理。

我們先來看網路包的接收流程。

當一個網路幀到達網卡後,網卡會通過 DMA 方式,把這個網路包放到收包隊列中;然後通過硬中斷,告訴中斷處理程序已經收到了網路包。

接著,網卡中斷處理程序會為網路幀分配內核數據結構(sk_buff),並將其拷貝到 sk_buff 緩沖區中;然後再通過軟中斷,通知內核收到了新的網路幀。

接下來,內核協議棧從緩沖區中取出網路幀,並通過網路協議棧,從下到上逐層處理這個網路幀。比如,

最後,應用程序就可以使用 Socket 介面,讀取到新接收到的數據了。

為了更清晰表示這個流程,我畫了一張圖,這張圖的左半部分表示接收流程,而圖中的粉色箭頭則表示網路包的處理路徑。

了解網路包的接收流程後,就很容易理解網路包的發送流程。網路包的發送流程就是上圖的右半部分,很容易發現,網路包的發送方向,正好跟接收方向相反。

首先,應用程序調用 Socket API(比如 sendmsg)發送網路包。

由於這是一個系統調用,所以會陷入到內核態的套接字層中。套接字層會把數據包放到 Socket 發送緩沖區中。

接下來,網路協議棧從 Socket 發送緩沖區中,取出數據包;再按照 TCP/IP 棧,從上到下逐層處理。比如,傳輸層和網路層,分別為其增加 TCP 頭和 IP 頭,執行路由查找確認下一跳的 IP,並按照 MTU 大小進行分片。

分片後的網路包,再送到網路介面層,進行物理地址定址,以找到下一跳的 MAC 地址。然後添加幀頭和幀尾,放到發包隊列中。這一切完成後,會有軟中斷通知驅動程序:發包隊列中有新的網路幀需要發送。

最後,驅動程序通過 DMA ,從發包隊列中讀出網路幀,並通過物理網卡把它發送出去。

多台伺服器通過網卡、交換機、路由器等網路設備連接到一起,構成了相互連接的網路。由於網路設備的異構性和網路協議的復雜性,國際標准化組織定義了一個七層的 OSI 網路模型,但是這個模型過於復雜,實際工作中的事實標准,是更為實用的 TCP/IP 模型。

TCP/IP 模型,把網路互聯的框架,分為應用層、傳輸層、網路層、網路介面層等四層,這也是 Linux 網路棧最核心的構成部分。

我結合網路上查閱的資料和文章中的內容,總結了下網卡收發報文的過程,不知道是否正確:

當發送數據包時,與上述相反。鏈路層將數據包封裝完畢後,放入網卡的DMA緩沖區,並調用系統硬中斷,通知網卡從緩沖區讀取並發送數據。

了解 Linux 網路的基本原理和收發流程後,你肯定迫不及待想知道,如何去觀察網路的性能情況。具體而言,哪些指標可以用來衡量 Linux 的網路性能呢?

實際上,我們通常用帶寬、吞吐量、延時、PPS(Packet Per Second)等指標衡量網路的性能。

除了這些指標,網路的可用性(網路能否正常通信)、並發連接數(TCP 連接數量)、丟包率(丟包百分比)、重傳率(重新傳輸的網路包比例)等也是常用的性能指標。

分析網路問題的第一步,通常是查看網路介面的配置和狀態。你可以使用 ifconfig 或者 ip 命令,來查看網路的配置。我個人更推薦使用 ip 工具,因為它提供了更豐富的功能和更易用的介面。

以網路介面 eth0 為例,你可以運行下面的兩個命令,查看它的配置和狀態:

你可以看到,ifconfig 和 ip 命令輸出的指標基本相同,只是顯示格式略微不同。比如,它們都包括了網路介面的狀態標志、MTU 大小、IP、子網、MAC 地址以及網路包收發的統計信息。

第一,網路介面的狀態標志。ifconfig 輸出中的 RUNNING ,或 ip 輸出中的 LOWER_UP ,都表示物理網路是連通的,即網卡已經連接到了交換機或者路由器中。如果你看不到它們,通常表示網線被拔掉了。

第二,MTU 的大小。MTU 默認大小是 1500,根據網路架構的不同(比如是否使用了 VXLAN 等疊加網路),你可能需要調大或者調小 MTU 的數值。

第三,網路介面的 IP 地址、子網以及 MAC 地址。這些都是保障網路功能正常工作所必需的,你需要確保配置正確。

第四,網路收發的位元組數、包數、錯誤數以及丟包情況,特別是 TX 和 RX 部分的 errors、dropped、overruns、carrier 以及 collisions 等指標不為 0 時,通常表示出現了網路 I/O 問題。其中:

ifconfig 和 ip 只顯示了網路介面收發數據包的統計信息,但在實際的性能問題中,網路協議棧中的統計信息,我們也必須關注。你可以用 netstat 或者 ss ,來查看套接字、網路棧、網路介面以及路由表的信息。

我個人更推薦,使用 ss 來查詢網路的連接信息,因為它比 netstat 提供了更好的性能(速度更快)。

比如,你可以執行下面的命令,查詢套接字信息:

netstat 和 ss 的輸出也是類似的,都展示了套接字的狀態、接收隊列、發送隊列、本地地址、遠端地址、進程 PID 和進程名稱等。

其中,接收隊列(Recv-Q)和發送隊列(Send-Q)需要你特別關注,它們通常應該是 0。當你發現它們不是 0 時,說明有網路包的堆積發生。當然還要注意,在不同套接字狀態下,它們的含義不同。

當套接字處於連接狀態(Established)時,

當套接字處於監聽狀態(Listening)時,

所謂全連接,是指伺服器收到了客戶端的 ACK,完成了 TCP 三次握手,然後就會把這個連接挪到全連接隊列中。這些全連接中的套接字,還需要被 accept() 系統調用取走,伺服器才可以開始真正處理客戶端的請求。

與全連接隊列相對應的,還有一個半連接隊列。所謂半連接是指還沒有完成 TCP 三次握手的連接,連接只進行了一半。伺服器收到了客戶端的 SYN 包後,就會把這個連接放到半連接隊列中,然後再向客戶端發送 SYN+ACK 包。

類似的,使用 netstat 或 ss ,也可以查看協議棧的信息:

這些協議棧的統計信息都很直觀。ss 只顯示已經連接、關閉、孤兒套接字等簡要統計,而 netstat 則提供的是更詳細的網路協議棧信息。

比如,上面 netstat 的輸出示例,就展示了 TCP 協議的主動連接、被動連接、失敗重試、發送和接收的分段數量等各種信息。

接下來,我們再來看看,如何查看系統當前的網路吞吐量和 PPS。在這里,我推薦使用我們的老朋友 sar,在前面的 CPU、內存和 I/O 模塊中,我們已經多次用到它。

給 sar 增加 -n 參數就可以查看網路的統計信息,比如網路介面(DEV)、網路介面錯誤(EDEV)、TCP、UDP、ICMP 等等。執行下面的命令,你就可以得到網路介面統計信息:

這兒輸出的指標比較多,我來簡單解釋下它們的含義。

其中,Bandwidth 可以用 ethtool 來查詢,它的單位通常是 Gb/s 或者 Mb/s,不過注意這里小寫字母 b ,表示比特而不是位元組。我們通常提到的千兆網卡、萬兆網卡等,單位也都是比特。如下你可以看到,我的 eth0 網卡就是一個千兆網卡:

其中,Bandwidth 可以用 ethtool 來查詢,它的單位通常是 Gb/s 或者 Mb/s,不過注意這里小寫字母 b ,表示比特而不是位元組。我們通常提到的千兆網卡、萬兆網卡等,單位也都是比特。如下你可以看到,我的 eth0 網卡就是一個千兆網卡:

我們通常使用帶寬、吞吐量、延時等指標,來衡量網路的性能;相應的,你可以用 ifconfig、netstat、ss、sar、ping 等工具,來查看這些網路的性能指標。

小狗同學問到: 老師,您好 ss —lntp 這個 當session處於listening中 rec-q 確定是 syn的backlog嗎?
A: Recv-Q為全連接隊列當前使用了多少。 中文資料里這個問題講得最明白的文章: https://mp.weixin.qq.com/s/yH3PzGEFopbpA-jw4MythQ

看了源碼發現,這個地方講的有問題.關於ss輸出中listen狀態套接字的Recv-Q表示全連接隊列當前使用了多少,也就是全連接隊列的當前長度,而Send-Q表示全連接隊列的最大長度

⑵ 淺談Linux網路故障的解決辦法

淺談Linux網路故障的解決辦法

Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。我告訴大家,Linux網路故障排除應當遵循先硬體後軟體的方法。因為硬體如果出現物理損壞那麼如何設定網路都不能解決故障。解決問題的方法可以從自身Linux計算機的網卡查起,然後到伺服器、集線器、路由器等硬體。如果確定硬體沒有問題了,再來考慮軟體的設定。

1、檢查網卡工作狀況

(1)使用cat /proc/moles查看網卡的模塊是否已被載入,驅動硬體是操作系統最基本的功能,操作系統通過各種驅動程序來駕馭硬體設備,和Windows系統不同Linux內核目前採用可載入的模塊化設計(LKMs Loadable Kernel Moles),就是將最基本的核心代碼編譯在內核中,而我們常見的驅動程序就是作為內核模塊動態載入的,比如網卡驅動。Windows系統中我們一般“控制面板”的“設備管理器”查看硬體列表,在Linux中可以在命令行下輸入:cat /proc/moles 即可顯示Linux系統檢測到的所有硬體設備。運行cat /proc/moles需要超級用戶的許可權,你可以使用su命令實現。

我Linux計算機中兩塊網卡模塊:NE2000和8139已經載入。如果沒有檢測到硬體,用硬體檢測程序Kuz檢測網卡,它和Windows中添加新硬體差不多。kudzu程序是通過查看/usr/share/hwdata/目錄下的文件識別各種硬體設備的。如果核心支持該硬體,並且有該驅動程序就可自動裝載。首先說明的是Linux下對網卡的支持往往是只對晶元的,所以對某些不是很著名的網卡,往往需要知道它的晶元型號以配置Linux.比如我的Top link網卡,就不存在Linux的驅動,但是因為它是NE2000兼容,所以把它當NE2000就可以在Linux下用了.所以當你有一塊網卡不能用,在找Linux的驅動程序之前一定搞清楚這個網卡用的什麼晶元,跟誰兼容,比如3c509,ne2000,etherexpress等等.這樣的型號一般都在網卡上最大的一快晶元上印著,抄下來就是了。對於ISA介面的NE2000卡,先要作的一件事情,是將網卡設定為Jumpless模式.很多現在的網卡預設都是PnP模式,這在Windows下的確能減少很多麻煩,但是Linux不支持,所以Linux下必須是Jumpless模式.一般所有網卡都有帶的驅動盤和DOS下可執行的一個設定程序,用該程序將網卡設為 Jumpless。對於PCI網卡,可以使用如下命令來查看:less/proc/pci。在顯示的列表中找到“Ethernet Controller”,記下廠商和型號。然後使用modprobe嘗試載入正確的模塊,比如modprobe 3c509。如果出現錯誤,說明該模塊不存在。這時候你應該找到正確的模塊並且重新編譯。如果顯示說該設備不存在,那也是因為沒有正確的模塊。找到正確的模塊,並且編譯,問題一般即可解決。

(2)使用Ifconfig-a命令檢查網卡介面

如果已經檢測到網卡,網卡硬體就沒有問題,接下來檢查網卡的軟體設定。使用ifconfig -a命令:

第二塊網卡沒有分配IP地址,我們現在可以添加IP地址。以Redhat Linux 9.0為例。以root許可權運行命令:neat出現圖形化配置界面,然後添加IP地址後保存設置,從新啟動網路和網路服務或計算機.

(4)編譯網卡

如果Linux內核沒有檢測到網卡通常要重新安裝網卡的驅動程序,網卡驅動程序安裝方法步驟如下:

a、 編譯並安裝模塊;

b、 修改/etc/conf.mole 文件;

c、 修改/etc/sysconfig/network文件;

d、 修改/etc/sysconfig/network-scripts/ifcfg-eth0 文件;

e、 給網卡添加IP地址:打開網卡IP地址配置文件/etc/sysconfig/network-script/ifcfg-eh0.

e、然後用命令啟動網路服務。

說明網卡問題:使用ifconfig來進行配置。如果運行ifconfig,將會給出所有已經安裝了的網卡。如果沒有顯示可用的網卡,那麼很有可能是以下原因之一:1. 網卡沒有被Linux檢測到;2. 沒有與之相應的內核模塊;3. 該模塊沒有被載入;4. Linux系統不支持你的網卡。就現在來說,出現問題4的可能性很小,一般來說都是問題2和3,也可能是1。

Linux下無線網卡的安裝:

目前經過認證的PCMCIA網卡有兩大類。使用基於朗訊(Lucent)晶元組的PCIMCIA無線網卡和使用基於intersil PRISM2-based cards 晶元組的PCMCIA的無線網卡見表-1。不過由於基於intersil PRISM2-based cards 晶元組的PCMCIA的無線網卡價格比較便宜(相當於朗訊(Lucent)晶元組的PCIMCIA無線網卡的三分之一),所以國內的PCMCIA的無線網卡以後者居多。

⑶ 為什麼優化linux網路性能

linux系統性能怎麼優化
一、前提
我們可以在文章的開始就列出一個列表,列出可能影響Linux操作系統性能的一些調優參數,但這樣做其實並沒有什麼價值。因為性能調優是一個非常困難的任務,它要求對硬體、操作系統、和應用都有著相當深入的了解。如果性能調優非常簡單的話,那些我們要列出的調優參數早就寫入硬體的微碼或者操作系統中了,我們就沒有必要再繼續讀這篇文章了。正如下圖所示,伺服器的性能受到很多因素的影響。
當面對一個使用單獨IDE硬碟的,有20000用戶的資料庫伺服器時,即使我們使用數周時間去調整I/O子系統也是徒勞無功的,通常一個新的驅動或者應用程序的一個更新(如SQL優化)卻可以使這個伺服器的性能得到明顯的提升。正如我們前面提到的,不要忘記系統的性能是受多方面因素影響的。理解操作系統管理系統資源的方法將幫助我們在面對問題時更好的判斷應該對哪個子系統進行調整。
二、Linux的CPU調度
任何計算機的基本功能都十分簡單,那就是計算。為了實現計算的功能就必須有一個方法去管理計算資源、處理器和計算任務(也被叫做線程或者進程)。非常感謝Ingo Molnar,他為Linux內核帶來了O(1)CPU調度器,區別於舊有的O(n)調度器,新的調度器是動態的,可以支持負載均衡,並以恆定的速度進行操作。
新調度器的可擴展性非常好,無論進程數量或者處理器數量,並且調度器本身的系統開銷更少。新調取器的演算法使用兩個優先順序隊列。

⑷ linux內核會影響聯網嗎

會。
據CSDN博客:linux內核參穗察和數影響網路,Linux運維通過調整Linux內核參數提升網路性能。
Linux是一種開源電腦操作沒鏈系統內核。它猜盯是一個用C語言寫成,符合POSIX標準的類Unix操作系統。

⑸ linux是一種什麼樣的網路操作系統

Linux是一種開源的基於拿螞Unix的睜橋操作消早埋系統,具有很強的網路功能和性能,是廣泛應用於伺服器和嵌入式系統的操作系統之一。Linux支持多用戶、多任務、安全穩定等特點,並且擁有完備的網路協議棧和編程介面,可以輕松實現各種網路功能,包括網路協議棧、網路管理、網路安全、遠程登錄等。此外,Linux還支持許多網路服務和應用,如Web伺服器、郵件伺服器、DNS伺服器等,不斷增強又適應各種網路場景的需要,可以說是一種功能強大的網路操作系統。

⑹ 如何1分鍾內對 Linux 性能快速分析(113資訊網)

當你在IDC主機商購買一台系統為 Linux 伺服器之後,我想大家第一時間就是對主機進行一個性能分析,這里我跟大家分享幾個命令,能讓大家在一分鍾以內對自己的性能有一個大致的鳥解?

uptime

dmesg | tail

vmstat 1

mpstat -P ALL 1

pidstat 1

iostat -xz 1

free -m

sar -n DEV 1

sar -n TCP,ETCP 1

top

這10個命令到底是什麼意思,我為大家一一解釋一下:

1.uptime

# uptime

03:16:26 up 21:31, 1 user, load average: 10.02, 06.43, 09.02

在上面的例子中,平均負載顯示是在不斷增加的,1 分鍾的值是 10,相比 15 分鍾的值 09 來說是增加了。這個數字這么大就意味著有事情發生了.

2. dmesg | tail

# dmesg | tail

[  14.102501] ISO 9660 Extensions: RRIP_1991A

[  15.900216] ISO 9660 Extensions: Microsoft Joliet Level 3

[  15.900234] ISO 9660 Extensions: RRIP_1991A

[  17.030540] EXT4-fs (vda1): resizing filesystem from 5242619 to 13106939 blocks

[  17.151434] random: crng init done

[  17.151436] random: 7 urandom warning(s) missed e to ratelimiting

[  18.314268] EXT4-fs (vda1): resized filesystem to 13106939

[  20.394666] new mount options do not match the existing superblock, will be ignored

[  38.405804] ISO 9660 Extensions: Microsoft Joliet Level 3

[  38.407599] ISO 9660 Extensions: RRIP_1991A

這里展示的是最近 10 條系統消息日誌,如果系統消息沒有就不會展示。主要是看由於性能問題導致的錯誤。

3. vmstat 1

# 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

1  0      0 324644 141184 1270628    0    0    10    40  207  431  1  1 99  0  0

0  0      0 324388 141184 1270628    0    0    0    0  130  280  1  1 98  0  0

0  0      0 324388 141184 1270628    0    0    0    0  89  169  0  0 100  0  0

0  0      0 324420 141184 1270628    0    0    0    0  118  225  1  0 99  0  0

0  0      0 324420 141184 1270628    0    0    0    32  125  254  0  0 99  1  0

1  1      0 324420 141184 1270628    0    0    0    68  96  171  0  0 96  4  0

0  0      0 324452 141184 1270628    0    0    0  184  127  166  0  1 96  3  0

^C

r: CPU 上的等待運行的可運行進程數。這個指標提供了判斷 CPU 飽和度的數據,因為它不包含 I/O 等待的進程。可解釋為:「r」 的值比 CPU 數大的時候就是飽和的。

free:空閑內存,單位是 k。如果這個數比較大,就說明你還有充足的空閑內存。「free -m」 和下面第 7 個命令,可以更詳細的分析空閑內存的狀態。

si,so:交換進來和交換出去的數據量,如果這兩個值為非 0 值,那麼就說明沒有內存了。

us,sy,id,wa,st:這些是 CPU 時間的分解,是所有 CPU 的平均值。它們是用戶時間,系統時間(內核),空閑,等待 I/O 時間,和被偷的時間(這里主要指其它的客戶,或者使用 Xen,這些客戶有自己獨立的操作域)。

4. mpstat -P ALL 1

# mpstat -P ALL 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:33:26 AM  CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle

03:33:27 AM  all    0.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00  99.00

03:33:27 AM    0    0.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00  99.00

這個命令列印各個 CPU 的時間統計,可以看出整體 CPU 的使用是不是均衡的。由於我使用的是1H2G主機看不出區別!

5. pidstat 1

# pidstat 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:34:47 AM  UID      PID    %usr %system  %guest  %wait    %CPU  CPU  Command

03:34:48 AM    0      1120    1.00    0.00    0.00    0.00    1.00    0  sshd

pidstat 命令為每個 CPU 統計信息功能。由於我使用的是1H2G主機看不出區別!

6. iostat -xz 1

# iostat -xz 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

avg-cpu:  %user  %nice %system %iowait  %steal  %idle

          0.67    0.01    0.52    0.29    0.00  98.52

Device            r/s    w/s    rkB/s    wkB/s  rrqm/s  wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util

loop0            0.00    0.00      0.00      0.00    0.00    0.00  0.00  0.00    0.22    0.00  0.00    9.64    0.00  0.00  0.00

scd0            0.02    0.00      0.48      0.00    0.00    0.00  0.00  0.00    0.21    0.00  0.00    27.72    0.00  0.19  0.00

vda              0.64    4.07      9.15    40.59    0.00    1.99  0.00  32.85    3.58    2.31  0.01    14.31    9.96  0.24  0.11

avg-cpu:  %user  %nice %system %iowait  %steal  %idle

          0.00    0.00    0.00    0.00    0.00  100.00

Device            r/s    w/s    rkB/s    wkB/s  rrqm/s  wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util

r/s, w/s, rkB/s, wkB/s:這些表示設備上每秒鍾的讀寫次數和讀寫的位元組數(單位是k位元組)。這些可以看出設備的負載情況。性能問題可能就是簡單的因為大量的文件載入請求。

await:I/O 等待的平均時間(單位是毫秒)。這是應用程序所等待的時間,包含了等待隊列中的時間和被調度服務的時間。過大的平均等待時間就預示著設備超負荷了或者說設備有問題了。

avgqu-sz:設備上請求的平均數。數值大於 1 可能表示設備飽和了(雖然設備通常都是可以支持並行請求的,特別是在背後掛了多個磁碟的虛擬設備)。

%util:設備利用率。是使用率的百分數,展示每秒鍾設備工作的時間。這個數值大於 60% 則會導致性能很低(可以在 await 中看),當然這也取決於設備特點。這個數值接近 100% 則表示設備飽和了。

7. free -m/h

ubuntu@VM-0-17-ubuntu:~# free -m

              total        used        free      shared  buff/cache  available

Mem:          1833        137        313          5        1381        1506

Swap:            0          0          0

ubuntu@VM-0-17-ubuntu:~$ free -h

              total        used        free      shared  buff/cache  available

Mem:          1.8G        139M        311M        5.8M        1.3G        1.5G

Swap:            0B          0B          0B

這個命令我相信大家都熟悉,buffers:用於塊設備 I/O 緩沖的緩存,cached:用於文件系統的頁緩存。

8. sar -n DEV 1

ubuntu@VM-0-17-ubuntu:~# sar -n DEV 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:43:35 AM    IFACE  rxpck/s  txpck/s    rxkB/s    txkB/s  rxcmp/s  txcmp/s  rxmcst/s  %ifutil

03:43:36 AM      eth0    11.00    10.00      0.79      1.06      0.00      0.00      0.00      0.00

03:43:36 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

使用這個工具是可以檢測網路介面的吞吐:rxkB/s 和 txkB/s,作為收發數據負載的度量,也是檢測是否達到收發極限。在上面這個例子中,eth0 接收數據達到 0.79 kb 位元組/秒,發送數據達到1.06 位元組/秒。

9. sar -n TCP,ETCP 1

ubuntu@VM-0-17-ubuntu:~# sar -n TCP,ETCP 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:49:56 AM  active/s passive/s    iseg/s    oseg/s

03:49:57 AM      0.00      0.00      5.05      3.03

03:49:56 AM  atmptf/s  estres/s retrans/s isegerr/s  orsts/s

03:49:57 AM      0.00      0.00      0.00      0.00      0.00

這是對 TCP 關鍵指標的統計,它包含了以下內容:

active/s:每秒本地發起的 TCP 連接數(例如通過 connect() 發起的連接)。

passive/s:每秒遠程發起的連接數(例如通過 accept() 接受的連接)。

retrans/s:每秒TCP重傳數。

10. top

ubuntu@VM-0-17-ubuntu:~# top

top - 03:53:20 up 1 day,  1:41,  1 user,  load average: 0.01, 0.04, 0.00

Tasks:  89 total,  1 running,  52 sleeping,  0 stopped,  0 zombie

%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem :  1877076 total,  317436 free,  143420 used,  1416220 buff/cache

KiB Swap:        0 total,        0 free,        0 used.  1540856 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM    TIME+ COMMAND                                                                                     

3730 root      20  0  105688  6812  5840 S  0.3  0.4  0:00.01 sshd                                                                                         

7546 root      20  0  644608  14924  6776 S  0.3  0.8  2:48.99 YDService                                                                                   

    1 root      20  0  159892  9260  6796 S  0.0  0.5  0:06.45 systemd                                                                                     

    2 root      20  0      0      0      0 S  0.0  0.0  0:00.00 kthreadd                                                                                     

    4 root      0 -20      0      0      0 I  0.0  0.0  0:00.00 kworker/0:0H                                                                                 

    6 root      0 -20      0      0      0 I  0.0  0.0  0:00.00 mm_percpu_wq                                                                                 

    7 root      20  0      0      0      0 S  0.0  0.0  0:04.29 ksoftirqd/0                                                                                 

    8 root      20  0      0      0      0 I  0.0  0.0  0:08.85 rcu_sched                                                                                   

    9 root      20  0      0      0      0 I  0.0  0.0  0:00.00 rcu_bh                                                                                       

  10 root      rt  0      0      0      0 S  0.0  0.0  0:00.00 migration/0                                                                                 

  11 root      rt  0      0      0      0 S  0.0  0.0  0:00.16 watchdog/0                                                                                   

  12 root      20  0      0      0      0 S  0.0  0.0  0:00.00 cpuhp/0                                                                                     

  13 root      20  0      0      0      0 S  0.0  0.0  0:00.00 kdevtmpfs                                                                                   

top 命令包含了很多我們前面提到的指標。這個命令可以很容易看出指標的變化表示負載的變化,這個看起來和前面的命令有很大不同。

top 的一個缺陷也比較明顯,很難看出變化趨勢,其它像 vmstat 和 pidstat 這樣的工具就會很清晰,它們是以滾動的方式輸出統計信息。所以如果你在看到有問題的信息時沒有及時的暫停下來(Ctrl-S 是暫停, Ctrl-Q 是繼續),那麼這些有用的信息就會被清屏。

文章原文: https://www.113p.cn/129.html  (來都來了,就去我博客看下!!)

⑺ 【性能】Linux上網路狀態和軟硬中斷動態查看

1. 找系統類的錯誤, dmesg | tail

2. 直接的網路錯誤 sar -n ETCP 1 或者 sar -n EDEV 1

3.查看網路狀態, netstat -s 或者 watch -d netstat -s

4.網路狀態閉歲的統計 ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}'

#  netstat -s

#  watch -d netstat -s

#  netstat -s -u

# watch -d netstat -s -u

# cat /proc/softirqs

# watch -d "/bin/cat /proc/softirqs | /usr/bin/awk 'NR == 1{printf \"%-15s %-15s %-15s %-15s %-15s\n\",\" \",\$1,\$2,\$3,\$4}; NR 兄態指> 1{printf \"%-15s %-15s %-15s %-15s %-15s\n\"羨配,\$1,\$2,\$3,\$4,\$5}'"

# watch -d   "cat /proc/interrupts"

⑻ 為什麼Linux的網路性能不如Windows

因為linux系統佔用資源更少,所以它就鎮納游更多資源來源旅啟處理其它任務

一. linux啟動後可以好一段時間不用重啟,不會佔用內存不能釋放的問題,windows啟動後在較短時間內必須重啟來釋放愈占愈多的內存變卡的問題來提高系統的運行速度
二. 大家都知道 ROS軟路由的性能,在一個網吧只要用一台淘汰的機器雹如兩張網卡就可以架設一台性能與萬元級的路由器相當,ROS路由的功能非常強大!!在一些硬路由許多都沒有ROS上的一些功能,而ROS軟路由系統核心正是 LINUX ,網路性能是無需質疑的

三. 在許多高級企業上使用的伺服器系統基本上都是使用LINUX 與 UNIX 很少能見到windows能用在比較復雜要求比較高的大企業中,銀行的伺服器系統一般都是採用UNIX核心的系統 比較少使用WINDOWS 的操作系統

⑼ linux為什麼單進程網路跑不滿

linux單進程網路不能滿負荷運行的原因主要有以下幾點迅扒:
1、Linux內核限制了單個進程擁有的最大文件描述符數量,導致單進程無法處理過多的連接;
2、Linux網路子系統使用了單槽接收灶巧隊列,這意味著每個CPU核心只能處理一個網路中斷,當網路中斷數量較多時,單CPU核心就無法滿足處理能力;
3、Linux網路子系統會受到內核版本、硬體設備驅動程序和系統參數的影響,當這些參數不合理時,會影響網路性能,從畝辯昌而降低單進程的網路負載能力。

⑽ 什麼是LinuxLinux與Windows的相同點和不同點

Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。

區別:

1、免費與收費

在中國,windows和linux都是免費的,至少對個人用戶是如此,如果那天國內windows真的嚴打盜版了,那linux的春天就到了!但現在linux依然是任重道遠,前路漫漫。

2、軟體與支持

windows下可以運行絕大部分軟體、玩99.999%的游戲、硬體廠商近乎100%的支持。linux下可直接運行的軟體數量和win下比起來就是1和99的區別,而且目前選擇linux的人基本不會考慮玩游戲(雖然有能在linux下運行的游戲,但實在太少。),同時linux正期待更多硬體廠商的支持。

3、安全性

很多人說linux安全性高,仁者見仁智者見智了。其實我覺得這個根本沒必要討論,當linux普及程度達到現在windows的程度,那麼linux的漏洞、病毒、木馬、後門什麼的絕對會如雨後春筍般紛紛冒出,雖不敢說比windows嚴重,但絕對不會比win少,說白了就是因為現在linux的用戶量太少,受關注也太少,做病毒者當然希望自己的作品流傳越廣越好(現在的病毒更傾向於獲取非法利益,比如賬號密碼什麼的),所以,病毒目前不會考慮少數派的linuxer。

世上沒有攻不破的系統、沒有穿不透的防火牆,一件事你做不到,只能說明你水平不夠,這里適用一句話:道高一尺,魔高一丈。

但就目前來說,如果你對windows下層出不窮的病毒、木馬、垃圾感到極度厭惡,那的確可以嘗試一下linux噢。

4、開源

開源就是指對外部開放軟體源代碼。

如果一個小程序員寫了個軟體,裡面有他獨創的新技術,他想靠這個賺錢,甚至還為此申請了專利,這時某些團體以安全為由,要求他公開源代碼(這樣就可以仿製了嘛。),並且最好免費給大家使用,身邊一群眼紅程序員賺錢的人也在跟著起鬨。一個獨立商業團體的合法知識產權、資產權益遭受政治強權的公開侵佔、迫害,這就是微軟在歐洲所面臨的開源問題(至於微軟是否是奸商,這是另一碼事,並不能成為打砸搶、吃大戶的理由)

開源與否,軟體廠商有選擇的權力;是否購買使用這個產品,這才是用戶的權利。

其實想深一點,如果linux不開源,它還能有現在這個市場嗎?因為很多人就是沖著開源才使用linux的。

5、使用習慣

一樣的地方:桌面、圖標、滑鼠點擊,有區別嗎?不一樣的是,windows放棄了dos的字元模式,主攻圖形界面,讓桌面系統更易用。linux字元模式運行的更好,圖形界面還只是附帶品,可有可無。根據他們的上市時間來看,只能說linux把windows扔掉的東西又撿回來並且發揚光大。

6、技術支持

如果你不熟悉或從來沒接觸過電腦:

學windows --那身邊隨便一個上過網的人都可以指點你兩下。學linux--呵呵,買書或上網查吧,深度的linux版塊就不錯,至於用什麼上網,你說呢?

如果你熟悉電腦和上網,那w和l其實沒什麼區別,網上都有海量的資料給你查。但是找修windows電腦的人遠比找一個修linux電腦的人容易得多,沒辦法,這是現實

熱點內容
網盤存儲api 發布:2025-08-26 04:20:34 瀏覽:751
提高光纖上傳速度 發布:2025-08-26 04:06:14 瀏覽:437
shell腳本等待 發布:2025-08-26 04:06:02 瀏覽:153
shell腳本的for 發布:2025-08-26 03:33:46 瀏覽:685
骨關節廣告腳本 發布:2025-08-26 03:18:13 瀏覽:669
免費java培訓 發布:2025-08-26 03:13:49 瀏覽:753
iphone軟體存儲滿 發布:2025-08-26 03:08:26 瀏覽:994
misc是什麼文件夾 發布:2025-08-26 02:49:03 瀏覽:345
緩存視頻最快的軟體 發布:2025-08-26 02:45:11 瀏覽:158
android卡刷 發布:2025-08-26 02:42:41 瀏覽:315