国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

eBPF技術實踐之virtio-net網卡隊列可觀測

Linux閱碼場 ? 來源:Linux閱碼場 ? 2024-11-14 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在系統領域中,最具挑戰性的問題通常是組件之間的邊界定位。其中,virtio-net前后端的定界尤為困難。當網絡報文從內核發送到virtio-net后端,或者從virtio-net后端發送到內核時,這一路徑難以進行觀測。一些復雜的網絡抖動問題很可能是由于網卡隊列不正常工作引起的。為了解決這類問題,我們基于eBPF技術擴展了網卡隊列的可觀測能力,使得virtio網卡前后端的定界問題不再困擾。

virtio-net 前后端驅動簡介

virtio-net (后面稱為 virtio 網卡)通常由兩個組件組成:virtio driver(也稱為virtio前端)和virtio device(也稱為virtio后端)。virtio前端運行在客戶機的內核中,而virtio后端可以由宿主機的內核承擔。virtio網卡通常支持多隊列,包括發送隊列和接收隊列。每個隊列通過三個 ring 來實現,即avail ring、used ring和desc ring。現在我們將重點介紹 virtio 網卡前端的報文發送和接收流程,以更好地理解整個工作流程。

virtio 網卡前端發送報文

virto網卡前端發送報文主要流程包括:

a.start_xmit:virtio網卡驅動的報文發送入口函數會首先清理已發送的報文,即通過調用free_old_xmit_skbs函數來釋放描述符中的報文,直到avail->idx等于used->idx為止;

b.xmit_skb:主要是為報文添加vnet_hdr頭部信息,并將skb以scatter-gather形式顯示,以記錄報文數據的地址和長度信息;

c.virtqueue_add_outbuf:進行DMA映射,將scatter-gather記錄的報文數據地址和長度信息添加到desc環中,并增加avail->idx的值;

d.virtqueue_notify:當發送隊列存在數據,則通知后端。

7aaa4c30-9069-11ef-a511-92fbcf53809c.png

virtio 網卡前端接收報文

virito網阿卡前端接收報文主要流程包括:

a.網卡硬中斷:硬中斷會將napi加入到CPU的處理隊列,并啟用中斷抑制,以及觸發軟中斷;

b.net_rx_action:網絡軟中斷入口函數;

c.virtnet_poll:這個函數是virtio網卡的NAPI poll的回調函數。如果當前隊列是發送隊列,它將清理發送隊列,也就是執行virtnet_poll_cleantx函數。如果當前隊列是接收隊列,它將進行報文的接收;

d.virtnet_receive:根據used->idx的值,從描述符環中讀取報文數據,并更新last_used_idx。內核會為報文數據分配skb,并進入GRO流程,進行報文的合并;e.try_fill_recv:要給desc環添加空的內存區域,并增加avail->idx的值,以確保接收隊列始終有可用的內存;

f.virtqueue_napi_complete:當接收的報文數量少于預定的budget(一般為64)時,表示沒有更多的數據可以接收。這時,調用virtqueue_napi_complete來表示單次napi處理完畢。同時,通過virtqueue_enable_cb_prepare來關閉中斷抑制。

7adc430c-9069-11ef-a511-92fbcf53809c.png

網卡隊列可觀測

經過前面的分析,我們了解到virtio網卡隊列中的幾個重要參數,即avail->idx、used->idx和last_used_idx。使用這些參數,我們可以清晰地了解網卡隊列當前包含的報文數量,并進一步得到以下可觀測指標:

a.發送隊列報文數:表示尚未被virtio網卡后端發送的報文數量。計算方法是avail->idx - used->idx;

b.接收隊列報文數:表示尚未被virtio網卡前端接收的報文數量。計算方法是used->idx - last_used_idx;

c.網卡隊列的last_used_idx:表示virtio網卡后端處理報文的進度;

d.隊列飽和度:表示當前網卡隊列使用量,計算方法是隊列報文數/隊列長度。

工作原理

我們將可觀測的代碼集成在了rtrace的工具里,rtrace是龍蜥社區推出的系統工具集SysAK的一個網絡診斷分析工具,關于rtrace的具體原理,我們將在下回分析,eBPF 具體代碼請參考代碼:

https://gitee.com/anolis/sysak/blob/opensource_branch_sync/source/tools/detect/net/rtrace/src/bpf/virtio.bpf.c

virtio 網卡隊列指標采集的主要流程如下:

a.rtrace掛載eBPF采集程序到內核dev_id_show和dev_port_show函數;

b.rtrace周期性讀取/sys/class/net/[interface]/dev_id和/sys/class/net/[interface]/dev_port兩個文件,其中dev_id文件用來表示采集發送隊列信息,dev_port文件用來表示采集接收隊列信息;

c.當讀取文件時,會觸發內核執行dev_id_show和dev_port_show兩個函數。由于已經掛載了eBPF采集程序,內核會先執行eBPF采集程序;

d.eBPF采集程序通過解析dev_id_show和dev_port_show入參struct net_device獲取網卡隊列vring,然后從vring中解析出avail idx、used idx、隊列長度和last_used_idx;

e.將數據發送給rtrace做進一步處理。

7af93be2-9069-11ef-a511-92fbcf53809c.png

故障檢測

下面是rtrace采集的網卡隊列信息輸出。

我們可以看到0926的1號發送隊列的飽和度和last_used_idx分別是0.05%/3593,0928的1號發送隊列的飽和度和last_used_idx分別是0.07%/3593,可以看到發送隊列的飽和度在增加,但是last_used_idx在多個采集周期內保持不變。因此,可以確定1號發送隊列出現了故障。

隨后我們修復了1號發送隊列故障,可以看見在0906的1號發送隊列飽和度和last_used_idx分別是0.00%/3599,隊列里面不再有駐留的報文,恢復了正常。

0924
SendQueue0.05%/35930.00%/8520.00%/45060.00%/16000.00%/4570.00%/5090.00%/31400.00%/13520.00%/3860.00%/4100.00%/17140.00%/17580.00%/16190.00%/4460.00%/35770.00%/24430.00%/460.00%/940.00%/2120.00%/2310.00%/1460.00%/1480.00%/2260.00%/640.00%/1090.00%/840.00%/780.00%/560.00%/870.00%/880.00%/850.00%/52
RecvQueue0.00%/28050.00%/132970.00%/4750.00%/3670.00%/123780.00%/1300.00%/2220.00%/111200.00%/3550.00%/30160.00%/1330.00%/1800.00%/129800.00%/103630.00%/28250.00%/6500.00%/1510.00%/5050.00%/51800.00%/2000.00%/266700.00%/1690.00%/10420.00%/98200.00%/95860.00%/33740.00%/2290.00%/14020.00%/87960.00%/1170.00%/3010.00%/275
0925
SendQueue0.05%/35930.00%/8520.00%/45060.00%/16000.00%/4570.00%/5090.00%/31400.00%/13520.00%/3860.00%/4100.00%/17140.00%/17580.00%/16190.00%/4460.00%/35770.00%/24440.00%/460.00%/940.00%/2120.00%/2310.00%/1460.00%/1480.00%/2260.00%/640.00%/1090.00%/840.00%/780.00%/560.00%/870.00%/890.00%/850.00%/52
RecvQueue0.00%/28050.00%/132970.00%/4750.00%/3670.00%/123780.00%/1300.00%/2220.00%/111200.00%/3550.00%/30160.00%/1330.00%/1800.00%/129800.00%/103630.00%/28250.00%/6500.00%/1510.00%/5050.00%/51800.00%/2000.00%/266700.00%/1690.00%/10420.00%/98200.00%/95860.00%/33740.00%/2290.00%/14020.00%/87960.00%/1170.00%/3030.00%/275
0926
SendQueue0.05%/35930.00%/8520.00%/45060.00%/16000.00%/4570.00%/5090.00%/31400.00%/13520.00%/3860.00%/4100.00%/17140.00%/17580.00%/16190.00%/4460.00%/35770.00%/24440.00%/460.00%/940.00%/2120.00%/2310.00%/1460.00%/1480.00%/2260.00%/640.00%/1090.00%/840.00%/780.00%/560.00%/870.00%/910.00%/850.00%/52
RecvQueue0.00%/28050.00%/132970.00%/4750.00%/3670.00%/123780.00%/1300.00%/2220.00%/111200.00%/3550.00%/30160.00%/1330.00%/1800.00%/129800.00%/103630.00%/28250.00%/6500.00%/1510.00%/5050.00%/51800.00%/2000.00%/266700.00%/1690.00%/10420.00%/98200.00%/95860.00%/33740.00%/2290.00%/14020.00%/87960.00%/1170.00%/3050.00%/275
0927
SendQueue0.07%/35930.00%/8520.00%/45060.00%/16000.00%/4570.00%/5090.00%/31400.00%/13520.00%/3860.00%/4100.00%/17140.00%/17580.00%/16190.00%/4460.00%/35770.00%/24440.00%/460.00%/940.00%/2120.00%/2310.00%/1460.00%/1480.00%/2260.00%/640.00%/1090.00%/840.00%/780.00%/560.00%/870.00%/930.00%/850.00%/52
RecvQueue0.00%/28050.00%/132980.00%/4750.00%/3670.00%/123780.00%/1300.00%/2220.00%/111200.00%/3550.00%/30160.00%/1330.00%/1800.00%/129800.00%/103630.00%/28250.00%/6500.00%/1510.00%/5050.00%/51800.00%/2000.00%/266700.00%/1690.00%/10420.00%/98200.00%/95860.00%/33740.00%/2290.00%/14020.00%/87960.00%/1170.00%/3070.00%/275
0928
SendQueue0.07%/35930.00%/8520.00%/45060.00%/16000.00%/4570.00%/5090.00%/31400.00%/13520.00%/3860.00%/4140.00%/17140.00%/17580.00%/16190.00%/4460.00%/35770.00%/24450.00%/460.00%/940.00%/2120.00%/2310.00%/1460.00%/1490.00%/2260.00%/640.00%/1090.00%/840.00%/780.00%/560.00%/870.00%/960.00%/870.00%/52
RecvQueue0.00%/28050.00%/132980.00%/4750.00%/3670.00%/123780.00%/1300.00%/2220.00%/111200.00%/3550.00%/30160.00%/1330.00%/1800.00%/129800.00%/103630.00%/28250.00%/6500.00%/1510.00%/5050.00%/51800.00%/2050.00%/266700.00%/1690.00%/10420.00%/98200.00%/95860.00%/33740.00%/2290.00%/14020.00%/87970.00%/1180.00%/3090.00%/275
0929
SendQueue0.07%/35930.00%/8520.00%/45060.00%/16000.00%/4570.00%/5090.00%/31400.00%/13520.00%/3860.00%/4140.00%/17140.00%/17580.00%/16190.00%/4460.00%/35770.00%/24450.00%/460.00%/940.00%/2120.00%/2310.00%/1460.00%/1490.00%/2260.00%/640.00%/1090.00%/840.00%/780.00%/560.00%/870.00%/980.00%/870.00%/52
RecvQueue0.00%/28050.00%/132980.00%/4750.00%/3670.00%/123780.00%/1300.00%/2220.00%/111200.00%/3550.00%/30160.00%/1330.00%/1800.00%/129800.00%/103630.00%/28250.00%/6500.00%/1510.00%/5050.00%/51800.00%/2050.00%/266700.00%/1690.00%/10420.00%/98200.00%/95860.00%/33740.00%/2290.00%/14020.00%/87970.00%/1180.00%/3110.00%/275
0930
SendQueue0.07%/35930.00%/8520.00%/45060.00%/16000.00%/4570.00%/5090.00%/31400.00%/13520.00%/3860.00%/4140.00%/17140.00%/17580.00%/16190.00%/4460.00%/35770.00%/24450.00%/460.00%/940.00%/2120.00%/2310.00%/1460.00%/1490.00%/2260.00%/640.00%/1090.00%/840.00%/780.00%/560.00%/870.00%/1000.00%/870.00%/52
RecvQueue0.00%/28050.00%/132980.00%/4750.00%/3670.00%/123780.00%/1300.00%/2220.00%/111200.00%/3550.00%/30160.00%/1330.00%/1800.00%/129800.00%/103630.00%/28250.00%/6500.00%/1510.00%/5050.00%/51800.00%/2050.00%/266700.00%/1690.00%/10420.00%/98200.00%/95860.00%/33740.00%/2290.00%/14020.00%/87970.00%/1180.00%/3130.00%/275
//...省略
0906
SendQueue0.00%/35990.00%/8560.00%/45110.00%/16020.00%/4650.00%/5100.00%/31400.00%/13520.00%/3860.00%/4200.00%/17160.00%/17660.00%/16190.00%/4480.00%/35780.00%/24510.00%/460.00%/940.00%/2120.00%/2310.00%/1480.00%/1490.00%/2260.00%/640.00%/1090.00%/850.00%/870.00%/560.00%/870.00%/1010.00%/1030.00%/52
RecvQueue0.00%/28070.00%/132990.00%/4770.00%/3690.00%/123780.00%/1400.00%/2230.00%/111200.00%/3550.00%/30320.00%/1420.00%/1800.00%/129800.00%/103630.00%/28250.00%/6520.00%/1510.00%/5050.00%/51800.00%/2050.00%/266700.00%/1700.00%/10570.00%/98200.00%/95860.00%/33740.00%/2300.00%/14140.00%/88000.00%/1180.00%/3270.00%/275

總結

在virtio網卡中,前端和后端之間通過共享的網卡隊列進行通信。為了更好地理解和觀測網卡隊列的狀態和性能指標,通過觀測avail idx、used idx、last_used_idx等指標,我們可以對virtio網卡的性能進行評估和優化。同時,這些指標也為我們提供了對網卡隊列狀態的深入理解,有助于進行故障排查和性能調優。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7335

    瀏覽量

    94750
  • 網卡
    +關注

    關注

    4

    文章

    339

    瀏覽量

    28903
  • 程序
    +關注

    關注

    117

    文章

    3846

    瀏覽量

    85225

原文標題:eBPF 技術實踐之 virtio-net 網卡隊列可觀測

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于OpenTelemetry的全鏈路追蹤微服務可觀測實踐

    -> 支付服務,中間還有消息隊列和緩存的調用。某天線上出現下單接口P99延遲從200ms飆到了3秒,排查了兩個小時才定位到是庫存服務調用Redis超時導致的。
    的頭像 發表于 02-26 15:43 ?130次閱讀

    RDMA設計40:隊列管理及連接建立功能驗證與分析

    會配置網卡端口、遠程地址、對端 QP 信息等關鍵參數。當 QP 到達準備發送狀態后,整個隊列創建流程完成,可以正式進行 RDMA 數據傳輸。 B站已給出相關性能的視頻,如想進一步了解,請搜索B站用戶
    發表于 02-13 10:15

    RDMA設計25:隊列管理模塊發送模塊詳細設計分析

    發送隊列存儲為所有發送隊列共用的存儲空間,根據用戶環境和開發板環境不同可由 BRAM、URAM 或 LUTRAM 實現。發送隊列管理單元則負責管理這個存儲空間,并處理用戶指令和發送隊列
    的頭像 發表于 01-25 16:27 ?3334次閱讀
    RDMA設計25:<b class='flag-5'>隊列</b>管理模塊<b class='flag-5'>之</b>發送模塊詳細設計分析

    RDMA設計26:隊列管理模塊設計接收隊列模塊詳細分析

    本文主要交流設計思路,在本博客已給出相關博文100多篇,希望對初學者有用。注意這里只是拋磚引玉,切莫認為參考這就可以完成商用IP設計。 (2)接收隊列 接收隊列由一個接收隊列管理單元組成。與發送
    發表于 01-22 09:03

    RDMA設計24:隊列管理模塊設計

    隊列管理模塊采用管理與存儲分離的結構進行設計,由發送隊列存儲、發送隊列管理、接收隊列管理、完成條目解析、異常完成條目處理和 Round-Robin 仲裁組成。
    的頭像 發表于 01-20 11:45 ?1352次閱讀
    RDMA設計24:<b class='flag-5'>隊列</b>管理模塊設計

    光伏“可觀”功能效果如何量化?——效益與技術實現深度評估

    光伏電站可觀功能的技術構成(采集-傳輸-處理-呈現)是支撐電站“數據透明化”的核心體系,其效果并非單一指標可衡量——既需驗證技術本身的可靠性,更要考量其對運營效率、發電收益、合規安全的實際價值,詳細
    的頭像 發表于 01-16 15:11 ?528次閱讀
    光伏“<b class='flag-5'>可觀</b>”功能效果如何量化?——效益與<b class='flag-5'>技術</b>實現深度評估

    Amphenol Ve - NET?:汽車多千兆位差分連接器系統的卓越

    Amphenol Ve - NET?:汽車多千兆位差分連接器系統的卓越選 在汽車電子技術飛速發展的今天,高速、可靠的以太網連接對于汽車的智能化和高級駕駛輔助系統(ADAS)等功能的實現至關重要
    的頭像 發表于 12-12 09:15 ?343次閱讀

    IBM被 2025年 Gartner? 可觀測性平臺魔力象限? 評為領導者

    在 Gartner 發布的 2025年《可觀測性平臺魔力象限》[1]中,IBM 被評為領導者(Leader)。我們相信,這是對于我們持續致力于提供創新、易用的全棧可觀測性軟件的認可,其中的核心產品正是 IBM Instana。
    的頭像 發表于 09-02 09:45 ?867次閱讀
    IBM被 2025年 Gartner? <b class='flag-5'>可觀測</b>性平臺魔力象限? 評為領導者

    教學實習基地氣象觀測系統:架起理論與實踐的 “氣象橋梁”

    教學實習基地氣象觀測系統:架起理論與實踐的 “氣象橋梁”柏峰【BF-XQX】在教學實習基地的田野間、草坪上,一套集觀測、教學、科研于一體的氣象觀測系統正悄然運轉。它不僅是記錄陰晴雨雪的
    的頭像 發表于 08-20 14:24 ?665次閱讀
    教學實習基地氣象<b class='flag-5'>觀測</b>系統:架起理論與<b class='flag-5'>實踐</b>的 “氣象橋梁”

    NVMe IP高速傳輸卻不依賴XDMA設計九:隊列管理模塊(上)

    這是采用PCIe設計NVMe,并非調用XDMA方式,后者在PCIe4.0時不大方便,故團隊直接采用PCIe設計,結合UVM驗證加快設計速度。 隊列管理模塊采用隊列的存儲與控制分離的設計結構。
    的頭像 發表于 08-04 09:53 ?763次閱讀
    NVMe IP高速傳輸卻不依賴XDMA設計<b class='flag-5'>之</b>九:<b class='flag-5'>隊列</b>管理模塊(上)

    基于eBPF的Kubernetes網絡異常檢測系統

    作為一名在云原生領域深耕多年的運維工程師,我見過太多因為網絡問題導致的生產事故。傳統的監控手段往往是事后諸葛亮,當你發現問題時,用戶已經在抱怨了。今天,我將分享如何利用 eBPF 這一革命性技術,構建一套能夠實時檢測 Kubernetes 網絡異常的系統。
    的頭像 發表于 07-24 14:09 ?721次閱讀

    RabbitMQ消息隊列解決方案

    在現代分布式系統架構中,消息隊列作為核心組件,承擔著系統解耦、異步處理、流量削峰等重要職責。RabbitMQ作為一款成熟的消息隊列中間件,以其高可用性、高可靠性和豐富的特性,成為眾多企業的首選方案。本文將從運維工程師的角度,詳細闡述RabbitMQ從單機部署到集群搭建的完
    的頭像 發表于 07-08 15:55 ?625次閱讀

    RDMA簡介5RoCE V2隊列分析

    工作隊列元素(WQE),該元素包括數據發送緩沖區的起始地址、數據長度、操作類型等相關信息,用于后續的傳輸操作。在該WQE被網卡操作結束后,網卡將生成一個CQE并放入與工作隊列(SQ)對
    發表于 06-05 17:28

    NVME控制器隊列管理模塊

    隊列管理模塊是整個NVMe Host控制器的核心模塊,該模塊實現了提交隊列與完成隊列的管理,多隊列請求的仲裁判決等功能。隊列管理模塊中含有數
    發表于 05-03 20:19

    NVME控制器隊列管理模塊

    隊列管理模塊是整個NVMe Host控制器的核心模塊,該模塊實現了提交隊列與完成隊列的管理,多隊列請求的仲裁判決等功能。隊列管理模塊中含有數
    的頭像 發表于 05-03 15:32 ?654次閱讀
    NVME控制器<b class='flag-5'>之</b><b class='flag-5'>隊列</b>管理模塊