RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux網(wǎng)絡(luò)包接收過(guò)程的監(jiān)控與調(diào)優(yōu)

Linux愛(ài)好者 ? 來(lái)源:開(kāi)發(fā)內(nèi)功修煉 ? 作者:張彥飛allen ? 2020-11-10 14:50 ? 次閱讀

上一篇文章中《圖解Linux網(wǎng)絡(luò)包接收過(guò)程》,我們梳理了在Linux系統(tǒng)下一個(gè)數(shù)據(jù)包被接收的整個(gè)過(guò)程。Linux內(nèi)核對(duì)網(wǎng)絡(luò)包的接收過(guò)程大致可以分為接收到RingBuffer、硬中斷處理、ksoftirqd軟中斷處理幾個(gè)過(guò)程。其中在ksoftirqd軟中斷處理中,把數(shù)據(jù)包從RingBuffer中摘下來(lái),送到協(xié)議棧的處理,再之后送到用戶進(jìn)程socket的接收隊(duì)列中。

圖1 Linux內(nèi)核接收網(wǎng)絡(luò)包過(guò)程 理解了Linux工作原理之后,還有更重要的兩件事情。第一是動(dòng)手監(jiān)控,會(huì)實(shí)際查看網(wǎng)絡(luò)包接收的整體情況。第二是調(diào)優(yōu),當(dāng)你的服務(wù)器有問(wèn)題的時(shí)候,你能找到瓶頸所在,并會(huì)利用內(nèi)核開(kāi)放的參數(shù)進(jìn)行調(diào)節(jié)。 一 先說(shuō)幾個(gè)工具

在正式內(nèi)容開(kāi)始之前,我們先來(lái)了解幾個(gè)Linux下監(jiān)控網(wǎng)卡時(shí)可用的工具。

1)ethtool

首先第一個(gè)工具就是我們?cè)谏衔闹刑岬降膃thtool,它用來(lái)查看和設(shè)置網(wǎng)卡參數(shù)。這個(gè)工具其實(shí)本身只是提供幾個(gè)通用接口,真正的實(shí)現(xiàn)是都是在網(wǎng)卡驅(qū)動(dòng)中的。正因?yàn)樵摴ぞ呤怯沈?qū)動(dòng)直接實(shí)現(xiàn)的,所以個(gè)人覺(jué)得它最重要。

該命令比較復(fù)雜,我們選幾個(gè)今天能用到的說(shuō)

-i顯示網(wǎng)卡驅(qū)動(dòng)的信息,如驅(qū)動(dòng)的名稱、版本等

-S查看網(wǎng)卡收發(fā)包的統(tǒng)計(jì)情況

-g/-G查看或者修改RingBuffer的大小

-l/-L查看或者修改網(wǎng)卡隊(duì)列數(shù)

-c/-C查看或者修改硬中斷合并策略

實(shí)際查看一下網(wǎng)卡驅(qū)動(dòng):

# ethtool -i eth0 driver: ixgbe ......這里看到我的機(jī)器上網(wǎng)卡驅(qū)動(dòng)程序是ixgbe。有了驅(qū)動(dòng)名稱,就可以在源碼中找到對(duì)應(yīng)的代碼了。對(duì)于ixgbe來(lái)說(shuō),其驅(qū)動(dòng)的源代碼位于drivers/net/ethernet/intel/ixgbe目錄下。ixgbe_ethtool.c`下都是實(shí)現(xiàn)的供ethtool使用的相關(guān)函數(shù),如果ethtool哪里有搞不明白的,就可以通過(guò)這種方式查找到源碼來(lái)讀。另外我們前文《圖解Linux網(wǎng)絡(luò)包接收過(guò)程》里提到的NAPI收包時(shí)的poll回調(diào)函數(shù),啟動(dòng)網(wǎng)卡時(shí)的open函數(shù)都是在這里實(shí)現(xiàn)的。

2)ifconfig

網(wǎng)絡(luò)管理工具ifconfig不只是可以為網(wǎng)卡配置ip,啟動(dòng)或者禁用網(wǎng)卡,也包含了一些網(wǎng)卡的統(tǒng)計(jì)信息。

eth0: flags=4163 mtu 1500 inet 10.162.42.51 netmask 255.255.248.0 broadcast 10.162.47.255 inet6 fe80:84ff88d1 prefixlen 64 scopeid 0x20 ether 6c8488:d1 txqueuelen 1000 (Ethernet) RX packets 2953454 bytes 414212810 (395.0 MiB) RX errors 0 dropped 4636605 overruns 0 frame 0 TX packets 127887 bytes 82943405 (79.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

RX packets:接收的總包數(shù)

RX bytes:接收的字節(jié)數(shù)

RX errors:表示總的收包的錯(cuò)誤數(shù)量

RX dropped:數(shù)據(jù)包已經(jīng)進(jìn)入了 Ring Buffer,但是由于其它原因?qū)е碌膩G包

RX overruns:表示了 fifo 的 overruns,這是由于 Ring Buffer不足導(dǎo)致的丟包

3)偽文件系統(tǒng)/proc

Linux 內(nèi)核提供了 /proc 偽文件系統(tǒng),通過(guò)/proc可以查看內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、改變內(nèi)核設(shè)置。我們先跑一下題,看一下這個(gè)偽文件系統(tǒng)里都有啥:

/proc/sys目錄可以查看或修改內(nèi)核參數(shù)

/proc/cpuinfo可以查看CPU信息

/proc/meminfo可以查看內(nèi)存信息

/proc/interrupts統(tǒng)計(jì)所有的硬中斷

/proc/softirqs統(tǒng)計(jì)的所有的軟中斷信息

/proc/slabinfo統(tǒng)計(jì)了內(nèi)核數(shù)據(jù)結(jié)構(gòu)的slab內(nèi)存使用情況

/proc/net/dev可以看到一些網(wǎng)卡統(tǒng)計(jì)數(shù)據(jù)

詳細(xì)聊下偽文件/proc/net/dev,通過(guò)它可以看到內(nèi)核中對(duì)網(wǎng)卡的一些相關(guān)統(tǒng)計(jì)。包含了以下信息:

bytes: 發(fā)送或接收的數(shù)據(jù)的總字節(jié)數(shù)

packets: 接口發(fā)送或接收的數(shù)據(jù)包總數(shù)

errs: 由設(shè)備驅(qū)動(dòng)程序檢測(cè)到的發(fā)送或接收錯(cuò)誤的總數(shù)

drop: 設(shè)備驅(qū)動(dòng)程序丟棄的數(shù)據(jù)包總數(shù)

fifo: FIFO緩沖區(qū)錯(cuò)誤的數(shù)量

frame: The number of packet framing errors.(分組幀錯(cuò)誤的數(shù)量)

colls: 接口上檢測(cè)到的沖突數(shù)

所以,偽文件/proc/net/dev也可以作為我們查看網(wǎng)卡工作統(tǒng)計(jì)數(shù)據(jù)的工具之一。

4)偽文件系統(tǒng)sysfs

sysfs和/proc類似,也是一個(gè)偽文件系統(tǒng),但是比proc更新,結(jié)構(gòu)更清晰。其中的/sys/class/net/eth0/statistics/也包含了網(wǎng)卡的統(tǒng)計(jì)信息。

# cd /sys/class/net/eth0/statistics/ # grep . * | grep tx tx_aborted_errors:0 tx_bytes:170699510 tx_carrier_errors:0 tx_compressed:0 tx_dropped:0 tx_errors:0 tx_fifo_errors:0 tx_heartbeat_errors:0 tx_packets:262330 tx_window_errors:0

好了,簡(jiǎn)單了解過(guò)這幾個(gè)工具以后,讓我們正式開(kāi)始今天的行程。

二 RingBuffer監(jiān)控與調(diào)優(yōu)

前面我們看到,當(dāng)網(wǎng)線中的數(shù)據(jù)幀到達(dá)網(wǎng)卡后,第一站就是RingBuffer(網(wǎng)卡通過(guò)DMA機(jī)制將數(shù)據(jù)幀送到RingBuffer中)。因此我們第一個(gè)要監(jiān)控和調(diào)優(yōu)的就是網(wǎng)卡的RingBuffer,我們使用ethtool來(lái)查看一下:

# ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 512 RX Mini: 0 RX Jumbo: 0 TX: 512

這里看到我手頭的網(wǎng)卡設(shè)置RingBuffer最大允許設(shè)置到4096,目前的實(shí)際設(shè)置是512。

這里有一個(gè)小細(xì)節(jié),ethtool查看到的是實(shí)際是Rx bd的大小。Rx bd位于網(wǎng)卡中,相當(dāng)于一個(gè)指針。RingBuffer在內(nèi)存中,Rx bd指向RingBuffer。Rx bd和RingBuffer中的元素是一一對(duì)應(yīng)的關(guān)系。在網(wǎng)卡啟動(dòng)的時(shí)候,內(nèi)核會(huì)為網(wǎng)卡的Rx bd在內(nèi)存中分配RingBuffer,并設(shè)置好對(duì)應(yīng)關(guān)系。

在Linux的整個(gè)網(wǎng)絡(luò)棧中,RingBuffer起到一個(gè)任務(wù)的收發(fā)中轉(zhuǎn)站的角色。對(duì)于接收過(guò)程來(lái)講,網(wǎng)卡負(fù)責(zé)往RingBuffer中寫(xiě)入收到的數(shù)據(jù)幀,ksoftirqd內(nèi)核線程負(fù)責(zé)從中取走處理。只要ksoftirqd線程工作的足夠快,RingBuffer這個(gè)中轉(zhuǎn)站就不會(huì)出現(xiàn)問(wèn)題。但是我們?cè)O(shè)想一下,假如某一時(shí)刻,瞬間來(lái)了特別多的包,而ksoftirqd處理不過(guò)來(lái)了,會(huì)發(fā)生什么?這時(shí)RingBuffer可能瞬間就被填滿了,后面再來(lái)的包網(wǎng)卡直接就會(huì)丟棄,不做任何處理!

那我們?cè)趺礃幽芸匆幌?,我們的服?wù)器上是否有因?yàn)檫@個(gè)原因?qū)е碌膩G包呢?前面我們介紹的四個(gè)工具都可以查看這個(gè)丟包統(tǒng)計(jì),拿ethtool來(lái)舉例:

# ethtool -S eth0 ...... rx_fifo_errors: 0 tx_fifo_errors: 0

rx_fifo_errors如果不為0的話(在 ifconfig 中體現(xiàn)為 overruns 指標(biāo)增長(zhǎng)),就表示有包因?yàn)镽ingBuffer裝不下而被丟棄了。那么怎么解決這個(gè)問(wèn)題呢?很自然首先我們想到的是,加大RingBuffer這個(gè)“中轉(zhuǎn)倉(cāng)庫(kù)”的大小。通過(guò)ethtool就可以修改。

# ethtool -G eth1 rx 4096 tx 4096

這樣網(wǎng)卡會(huì)被分配更大一點(diǎn)的”中轉(zhuǎn)站“,可以解決偶發(fā)的瞬時(shí)的丟包。不過(guò)這種方法有個(gè)小副作用,那就是排隊(duì)的包過(guò)多會(huì)增加處理網(wǎng)絡(luò)包的延時(shí)。所以另外一種解決思路更好,那就是讓內(nèi)核處理網(wǎng)絡(luò)包的速度更快一些,而不是讓網(wǎng)絡(luò)包傻傻地在RingBuffer中排隊(duì)。怎么加快內(nèi)核消費(fèi)RingBuffer中任務(wù)的速度呢,別著急,我們繼續(xù)往下看...

三 硬中斷監(jiān)控與調(diào)優(yōu)

在數(shù)據(jù)被接收到RingBuffer之后,下一個(gè)執(zhí)行就是就是硬中斷的發(fā)起。我們先來(lái)查看硬中斷,然后再聊下怎么優(yōu)化。

1)監(jiān)控

硬中斷的情況可以通過(guò)內(nèi)核提供的偽文件/proc/interrupts來(lái)進(jìn)行查看。

$ cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 34 0 0 0 IO-APIC-edge timer ...... 27: 351 0 0 1109986815 PCI-MSI-edge virtio1-input.0 28: 2571 0 0 0 PCI-MSI-edge virtio1-output.0 29: 0 0 0 0 PCI-MSI-edge virtio2-config 30: 4233459 1986139461 244872 474097 PCI-MSI-edge virtio2-input.0 31: 3 0 2 0 PCI-MSI-edge virtio2-output.0

上述結(jié)果是我手頭的一臺(tái)虛機(jī)的輸出結(jié)果。上面包含了非常豐富的信息,讓我們一一道來(lái):

網(wǎng)卡的輸入隊(duì)列virtio1-input.0的中斷號(hào)是27

27號(hào)中斷都是由CPU3來(lái)處理的

總的中斷次數(shù)是1109986815。

這里有兩個(gè)細(xì)節(jié)我們需要關(guān)注一下。

(1)為什么輸入隊(duì)列的中斷都在CPU3上呢?

這是因?yàn)閮?nèi)核的一個(gè)配置,在偽文件系統(tǒng)中可以查看到。

#cat /proc/irq/27/smp_affinity 8

smp_affinity里是CPU的親和性的綁定,8是二進(jìn)制的1000,第4位為1,代表的就是第4個(gè)CPU核心-CPU3.

(2)對(duì)于收包來(lái)過(guò)程來(lái)講,硬中斷的總次數(shù)表示的是Linux收包總數(shù)嗎?
不是,硬件中斷次數(shù)不代表總的網(wǎng)絡(luò)包數(shù)。第一網(wǎng)卡可以設(shè)置中斷合并,多個(gè)網(wǎng)絡(luò)幀可以只發(fā)起一次中斷。第二NAPI 運(yùn)行的時(shí)候會(huì)關(guān)閉硬中斷,通過(guò)poll來(lái)收包。

2)多隊(duì)列網(wǎng)卡調(diào)優(yōu)

現(xiàn)在的主流網(wǎng)卡基本上都是支持多隊(duì)列的,我們可以通過(guò)將不同的隊(duì)列分給不同的CPU核心來(lái)處理,從而加快Linux內(nèi)核處理網(wǎng)絡(luò)包的速度。這是最為有用的一個(gè)優(yōu)化手段。

每一個(gè)隊(duì)列都有一個(gè)中斷號(hào),可以獨(dú)立向某個(gè)CPU核心發(fā)起硬中斷請(qǐng)求,讓CPU來(lái)poll包。通過(guò)將接收進(jìn)來(lái)的包被放到不同的內(nèi)存隊(duì)列里,多個(gè)CPU就可以同時(shí)分別向不同的隊(duì)列發(fā)起消費(fèi)了。這個(gè)特性叫做RSS(Receive Side Scaling,接收端擴(kuò)展)。通過(guò)ethtool工具可以查看網(wǎng)卡的隊(duì)列情況。

# ethtool -l eth0 Channel parameters for eth0: Pre-set maximums: RX: 0 TX: 0 Other: 1 Combined: 63 Current hardware settings: RX: 0 TX: 0 Other: 1 Combined: 8

上述結(jié)果表示當(dāng)前網(wǎng)卡支持的最大隊(duì)列數(shù)是63,當(dāng)前開(kāi)啟的隊(duì)列數(shù)是8。對(duì)于這個(gè)配置來(lái)講,最多同時(shí)可以有8個(gè)核心來(lái)參與網(wǎng)絡(luò)收包。如果你想提高內(nèi)核收包的能力,直接簡(jiǎn)單加大隊(duì)列數(shù)就可以了,這比加大RingBuffer更為有用。因?yàn)榧哟驲ingBuffer只是給個(gè)更大的空間讓網(wǎng)絡(luò)幀能繼續(xù)排隊(duì),而加大隊(duì)列數(shù)則能讓包更早地被內(nèi)核處理。ethtool修改隊(duì)列數(shù)量方法如下:

#ethtool -L eth0 combined 32

我們前文說(shuō)過(guò),硬中斷發(fā)生在哪一個(gè)核上,它發(fā)出的軟中斷就由哪個(gè)核來(lái)處理。所有通過(guò)加大網(wǎng)卡隊(duì)列數(shù),這樣硬中斷工作、軟中斷工作都會(huì)有更多的核心參與進(jìn)來(lái)。

每一個(gè)隊(duì)列都有一個(gè)中斷號(hào),每一個(gè)中斷號(hào)都是綁定在一個(gè)特定的CPU上的。如果你不滿意某一個(gè)中斷的CPU綁定,可以通過(guò)修改/proc/irq/{中斷號(hào)}/smp_affinity來(lái)實(shí)現(xiàn)。

一般處理到這里,網(wǎng)絡(luò)包的接收就沒(méi)有大問(wèn)題了。但如果你有更高的追求,或者是說(shuō)你并沒(méi)有更多的CPU核心可以參與進(jìn)來(lái)了,那怎么辦?放心,我們也還有方法提高單核的處理網(wǎng)絡(luò)包的接收速度。

3)硬中斷合并

先來(lái)講一個(gè)實(shí)際中的例子,假如你是一位開(kāi)發(fā)同學(xué),和你對(duì)口的產(chǎn)品經(jīng)理一天有10個(gè)小需求需要讓你幫忙來(lái)處理。她對(duì)你有兩種中斷方式:

第一種:產(chǎn)品經(jīng)理想到一個(gè)需求,就過(guò)來(lái)找你,和你描述需求細(xì)節(jié),然后讓你幫你來(lái)改

第二種:產(chǎn)品經(jīng)理想到需求后,不來(lái)打擾你,等攢夠5個(gè)來(lái)找你一次,你集中處理

我們現(xiàn)在不考慮及時(shí)性,只考慮你的工作整體效率,你覺(jué)得那種方案下你的工作效率會(huì)高呢?或者換句話說(shuō),你更喜歡哪一種工作狀態(tài)呢?很明顯,只要你是一個(gè)正常的開(kāi)發(fā),都會(huì)覺(jué)得第二種方案更好。對(duì)人腦來(lái)講,頻繁的中斷會(huì)打亂你的計(jì)劃,你腦子里剛才剛想到一半技術(shù)方案可能也就廢了。當(dāng)產(chǎn)品經(jīng)理走了以后,你再想撿起來(lái)剛被中斷之的工作的時(shí)候,很可能得花點(diǎn)時(shí)間回憶一會(huì)兒才能繼續(xù)工作。

對(duì)于CPU來(lái)講也是一樣,CPU要做一件新的事情之前,要加載該進(jìn)程的地址空間,load進(jìn)程代碼,讀取進(jìn)程數(shù)據(jù),各級(jí)別cache要慢慢熱身。因此如果能適當(dāng)降低中斷的頻率,多攢幾個(gè)包一起發(fā)出中斷,對(duì)提升CPU的工作效率是有幫助的。所以,網(wǎng)卡允許我們對(duì)硬中斷進(jìn)行合并。

現(xiàn)在我們來(lái)看一下網(wǎng)卡的硬中斷合并配置。

# ethtool -c eth0 Coalesce parameters for eth0: Adaptive RX: off TX: off ...... rx-usecs: 1 rx-frames: 0 rx-usecs-irq: 0 rx-frames-irq: 0 ......

我們來(lái)說(shuō)一下上述結(jié)果的大致含義

Adaptive RX: 自適應(yīng)中斷合并,網(wǎng)卡驅(qū)動(dòng)自己判斷啥時(shí)候該合并啥時(shí)候不合并

rx-usecs:當(dāng)過(guò)這么長(zhǎng)時(shí)間過(guò)后,一個(gè)RX interrupt就會(huì)被產(chǎn)生

rx-frames:當(dāng)累計(jì)接收到這么多個(gè)幀后,一個(gè)RX interrupt就會(huì)被產(chǎn)生

如果你想好了修改其中的某一個(gè)參數(shù)了的話,直接使用ethtool -C就可以,例如:

ethtool -C eth0 adaptive-rx on

不過(guò)需要注意的是,減少中斷數(shù)量雖然能使得Linux整體吞吐更高,不過(guò)一些包的延遲也會(huì)增大,所以用的時(shí)候得適當(dāng)注意。

四 軟中斷監(jiān)控與調(diào)優(yōu)

在硬中斷之后,再接下來(lái)的處理過(guò)程就是ksoftirqd內(nèi)核線程中處理的軟中斷了。之前我們說(shuō)過(guò),軟中斷和它對(duì)應(yīng)的硬中斷是在同一個(gè)核心上處理的。因此,前面硬中斷分散到多核上處理的時(shí)候,軟中斷的優(yōu)化其實(shí)也就跟著做了,也會(huì)被多核處理。不過(guò)軟中斷也還有自己的可優(yōu)化選項(xiàng)。

1)監(jiān)控

軟中斷的信息可以從 /proc/softirqs 讀?。?/p>

$ cat /proc/softirqs CPU0 CPU1 CPU2 CPU3 HI: 0 2 2 0 TIMER: 704301348 1013086839 831487473 2202821058 NET_TX: 33628 31329 32891 105243 NET_RX: 418082154 2418421545 429443219 1504510793 BLOCK: 37 0 0 25728280 BLOCK_IOPOLL: 0 0 0 0 TASKLET: 271783 273780 276790 341003 SCHED: 1544746947 1374552718 1287098690 2221303707 HRTIMER: 0 0 0 0 RCU: 3200539884 3336543147 3228730912 3584743459

2)軟中斷budget調(diào)整

不知道你有沒(méi)有聽(tīng)說(shuō)過(guò)番茄工作法,它的大致意思就是你要有一整段的不被打擾的時(shí)間,集中精力處理某一項(xiàng)作業(yè)。這一整段時(shí)間時(shí)長(zhǎng)被建議是25分鐘。對(duì)于我們的Linux的處理軟中斷的ksoftirqd來(lái)說(shuō),它也和番茄工作法思路類似。一旦它被硬中斷觸發(fā)開(kāi)始了工作,它會(huì)集中精力處理一波兒網(wǎng)絡(luò)包(絕不只是1個(gè)),然后再去做別的事情。

我們說(shuō)的處理一波兒是多少呢,策略略復(fù)雜。我們只說(shuō)其中一個(gè)比較容易理解的,那就是net.core.netdev_budget內(nèi)核參數(shù)。

# sysctl -a | grep net.core.netdev_budget = 300

這個(gè)的意思說(shuō)的是,ksoftirqd一次最多處理300個(gè)包,處理夠了就會(huì)把CPU主動(dòng)讓出來(lái),以便Linux上其它的任務(wù)可以得到處理。那么假如說(shuō),我們現(xiàn)在就是想提高內(nèi)核處理網(wǎng)絡(luò)包的效率。那就可以讓ksoftirqd進(jìn)程多干一會(huì)兒網(wǎng)絡(luò)包的接收,再讓出CPU。至于怎么提高,直接修改不這個(gè)參數(shù)的值就好了。

# sysctl -w net.core.netdev_budget=600

如果要保證重啟仍然生效,需要將這個(gè)配置寫(xiě)到/etc/sysctl.conf

3)軟中斷GRO合并

GRO和硬中斷合并的思想很類似,不過(guò)階段不同。硬中斷合并是在中斷發(fā)起之前,而GRO已經(jīng)到了軟中斷上下文中了。

如果應(yīng)用中是大文件的傳輸,大部分包都是一段數(shù)據(jù),不用GRO的話,會(huì)每次都將一個(gè)小包傳送到協(xié)議棧(IP接收函數(shù)、TCP接收)函數(shù)中進(jìn)行處理。開(kāi)啟GRO的話,Linux就會(huì)智能進(jìn)行包的合并,之后將一個(gè)大包傳給協(xié)議處理函數(shù)。這樣CPU的效率也是就提高了。

# ethtool -k eth0 | grep generic-receive-offload generic-receive-offload: on

如果你的網(wǎng)卡驅(qū)動(dòng)沒(méi)有打開(kāi)GRO的話,可以通過(guò)如下方式打開(kāi)。

# ethtool -K eth0 gro on

GRO說(shuō)的僅僅只是包的接收階段的優(yōu)化方式,對(duì)于發(fā)送來(lái)說(shuō)是GSO。

五 總結(jié)

在網(wǎng)絡(luò)技術(shù)這一領(lǐng)域里,有太多的知識(shí)內(nèi)容都停留在理論階段了。你可能覺(jué)得你的網(wǎng)絡(luò)學(xué)的滾瓜爛熟了,可是當(dāng)你的線上服務(wù)出現(xiàn)問(wèn)題的時(shí)候,你還是不知道該怎么排查,怎么優(yōu)化。這就是因?yàn)橹欢死碚摚磺宄﨤inux是通過(guò)哪些內(nèi)核機(jī)制將網(wǎng)絡(luò)技術(shù)落地的,各個(gè)內(nèi)核組件之間怎么配合,每個(gè)組件有哪些參數(shù)可以做調(diào)整。我們用兩篇文章詳細(xì)討論了Linux網(wǎng)絡(luò)包的接收過(guò)程,以及這個(gè)過(guò)程中的一些統(tǒng)計(jì)數(shù)據(jù)如何查看,如何調(diào)優(yōu)。相信消化完這兩篇文章之后,你的網(wǎng)絡(luò)的理解直接能提升1個(gè)Level,你對(duì)線上服務(wù)的把控能力也會(huì)更加如魚(yú)得水。

原文標(biāo)題:Linux 網(wǎng)絡(luò)包接收過(guò)程的監(jiān)控與調(diào)優(yōu)

文章出處:【微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211578
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209326

原文標(biāo)題:Linux 網(wǎng)絡(luò)包接收過(guò)程的監(jiān)控與調(diào)優(yōu)

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MCF8316A調(diào)優(yōu)指南

    電子發(fā)燒友網(wǎng)站提供《MCF8316A調(diào)優(yōu)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-20 17:21 ?0次下載
    MCF8316A<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>指南

    MCT8316A調(diào)優(yōu)指南

    電子發(fā)燒友網(wǎng)站提供《MCT8316A調(diào)優(yōu)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-13 13:49 ?0次下載
    MCT8316A<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>指南

    MCT8315A調(diào)優(yōu)指南

    電子發(fā)燒友網(wǎng)站提供《MCT8315A調(diào)優(yōu)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-12 14:14 ?0次下載
    MCT8315A<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>指南

    MMC DLL調(diào)優(yōu)

    電子發(fā)燒友網(wǎng)站提供《MMC DLL調(diào)優(yōu).pdf》資料免費(fèi)下載
    發(fā)表于 10-11 11:48 ?0次下載
    MMC DLL<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>

    TDA3xx ISS調(diào)優(yōu)和調(diào)試基礎(chǔ)設(shè)施

    電子發(fā)燒友網(wǎng)站提供《TDA3xx ISS調(diào)優(yōu)和調(diào)試基礎(chǔ)設(shè)施.pdf》資料免費(fèi)下載
    發(fā)表于 10-11 10:16 ?0次下載
    TDA3xx ISS<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>和調(diào)試基礎(chǔ)設(shè)施

    智能調(diào)優(yōu),使步進(jìn)電機(jī)安靜而高效地運(yùn)行

    電子發(fā)燒友網(wǎng)站提供《智能調(diào)優(yōu),使步進(jìn)電機(jī)安靜而高效地運(yùn)行.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 11:08 ?1次下載
    智能<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>,使步進(jìn)電機(jī)安靜而高效地運(yùn)行

    MMC SW調(diào)優(yōu)算法

    電子發(fā)燒友網(wǎng)站提供《MMC SW調(diào)優(yōu)算法.pdf》資料免費(fèi)下載
    發(fā)表于 09-20 11:14 ?0次下載
    MMC SW<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>算法

    TAS58xx系列通用調(diào)優(yōu)指南

    電子發(fā)燒友網(wǎng)站提供《TAS58xx系列通用調(diào)優(yōu)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:49 ?0次下載
    TAS58xx系列通用<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>指南

    Linux網(wǎng)絡(luò)協(xié)議棧的實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議棧是操作系統(tǒng)核心的一個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)協(xié)議棧(Network Stac
    的頭像 發(fā)表于 09-10 09:51 ?299次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>協(xié)議棧的實(shí)現(xiàn)

    AM6xA ISP調(diào)優(yōu)指南

    電子發(fā)燒友網(wǎng)站提供《AM6xA ISP調(diào)優(yōu)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 09:52 ?0次下載
    AM6xA ISP<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>指南

    OSPI控制器PHY調(diào)優(yōu)算法

    電子發(fā)燒友網(wǎng)站提供《OSPI控制器PHY調(diào)優(yōu)算法.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 11:12 ?0次下載
    OSPI控制器PHY<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>算法

    深度解析JVM調(diào)優(yōu)實(shí)踐應(yīng)用

    Tomcat自身的調(diào)優(yōu)是針對(duì)conf/server.xml中的幾個(gè)參數(shù)的調(diào)優(yōu)設(shè)置。首先是對(duì)這幾個(gè)參數(shù)的含義要有深刻而清楚的理解。
    的頭像 發(fā)表于 04-01 10:24 ?457次閱讀
    深度解析JVM<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>實(shí)踐應(yīng)用

    鴻蒙開(kāi)發(fā)實(shí)戰(zhàn):【性能調(diào)優(yōu)組件】

    性能調(diào)優(yōu)組件包含系統(tǒng)和應(yīng)用調(diào)優(yōu)框架,旨在為開(kāi)發(fā)者提供一套性能調(diào)優(yōu)平臺(tái),可以用來(lái)分析內(nèi)存、性能等問(wèn)
    的頭像 發(fā)表于 03-13 15:12 ?434次閱讀
    鴻蒙開(kāi)發(fā)實(shí)戰(zhàn):【性能<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>組件】

    網(wǎng)絡(luò)監(jiān)控工具有哪些 網(wǎng)絡(luò)監(jiān)控用幾芯網(wǎng)線

    情況,幫助管理員了解網(wǎng)絡(luò)的使用狀況和流量分布,以便進(jìn)行合理的網(wǎng)絡(luò)設(shè)計(jì)和帶寬管理。常見(jiàn)的網(wǎng)絡(luò)流量監(jiān)控工具有Wireshark、NetworkMiner和ntopng等。 Wireshar
    的頭像 發(fā)表于 01-24 10:00 ?1071次閱讀

    網(wǎng)絡(luò)率正常范圍及其影響因素

    網(wǎng)絡(luò)率正常范圍及其影響因素 網(wǎng)絡(luò)率是評(píng)估網(wǎng)絡(luò)性能和穩(wěn)定性的重要指標(biāo)之一。 一、網(wǎng)絡(luò)
    的頭像 發(fā)表于 12-29 14:45 ?6144次閱讀
    RM新时代网站-首页