91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

內(nèi)核配置項(xiàng)引發(fā)網(wǎng)絡(luò)性能下降的深度剖析

jf_44130326 ? 來(lái)源:Linux1024 ? 2026-02-01 16:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、引言

嵌入式系統(tǒng)開(kāi)發(fā)中,內(nèi)核配置對(duì)系統(tǒng)性能起著關(guān)鍵作用。近期在對(duì)基于Rockchip平臺(tái)的Linux內(nèi)核配置調(diào)試時(shí),發(fā)現(xiàn)三個(gè)內(nèi)核跟蹤器配置項(xiàng)(CONFIG_IRQSOFF_TRACER、CONFIG_PREEMPT_TRACER、CONFIG_SCHED_TRACER)的啟用,竟導(dǎo)致網(wǎng)絡(luò)性能下降約10%,關(guān)閉后借助iperf3測(cè)試丟包問(wèn)題消失。本文將深入剖析這幾個(gè)配置項(xiàng)的用途,以及為何它們會(huì)影響網(wǎng)絡(luò)性能。

wKgZO2kancOARRxQAAMOwjbCJqs571.png

二、相關(guān)內(nèi)核配置項(xiàng)解析

(一)CONFIG_IRQSOFF_TRACER

?功能用途

該配置項(xiàng)用于啟用“IRQ關(guān)閉跟蹤器,主要作用是跟蹤系統(tǒng)中關(guān)閉中斷(IRQ)的代碼路徑。當(dāng)內(nèi)核執(zhí)行一些對(duì)時(shí)序要求極高、需避免中斷干擾的關(guān)鍵操作時(shí)(如某些硬件寄存器的原子性配置),會(huì)暫時(shí)關(guān)閉中斷。IRQSOFF_TRACER會(huì)記錄從關(guān)閉中斷開(kāi)始,到重新開(kāi)啟中斷為止的這段時(shí)間內(nèi)的內(nèi)核執(zhí)行細(xì)節(jié),包括代碼執(zhí)行路徑、耗時(shí)等,方便開(kāi)發(fā)者分析因關(guān)閉中斷可能引發(fā)的延遲問(wèn)題,排查實(shí)時(shí)性相關(guān)故障。

?工作機(jī)制

啟用后,內(nèi)核會(huì)在中斷關(guān)閉和開(kāi)啟的關(guān)鍵節(jié)點(diǎn)插入追蹤代碼,這些代碼會(huì)記錄時(shí)間戳、當(dāng)前執(zhí)行上下文等信息。隨著系統(tǒng)運(yùn)行,不斷采集并暫存這些跟蹤數(shù)據(jù),供后續(xù)借助ftrace等工具進(jìn)行分析。這一過(guò)程會(huì)額外增加內(nèi)核代碼執(zhí)行的指令數(shù),帶來(lái)一定的計(jì)算開(kāi)銷(xiāo)。

(二)CONFIG_PREEMPT_TRACER

?功能用途

用于啟用搶占跟蹤器,聚焦于跟蹤內(nèi)核的搶占行為。Linux內(nèi)核支持可搶占調(diào)度(在配置了CONFIG_PREEMPT等相關(guān)搶占特性基礎(chǔ)上),PREEMPT_TRACER能夠記錄內(nèi)核線程被搶占的時(shí)機(jī)、搶占前后的線程狀態(tài)等信息,助力開(kāi)發(fā)者優(yōu)化內(nèi)核調(diào)度的實(shí)時(shí)性,解決因搶占不合理導(dǎo)致的延遲問(wèn)題

?工作機(jī)制

在內(nèi)核調(diào)度器的關(guān)鍵邏輯處(如決定是否搶占當(dāng)前線程時(shí)),插入跟蹤點(diǎn),記錄調(diào)度相關(guān)的線程ID、優(yōu)先級(jí)、時(shí)間等數(shù)據(jù)。每次搶占發(fā)生或嘗試搶占時(shí),都會(huì)觸發(fā)這些跟蹤邏輯,這無(wú)疑會(huì)增加調(diào)度器的執(zhí)行負(fù)擔(dān),因?yàn)樵竞?jiǎn)潔的調(diào)度判斷流程,現(xiàn)在要額外處理跟蹤數(shù)據(jù)的記錄操作。

(三)CONFIG_SCHED_TRACER

?功能用途

作為調(diào)度跟蹤器,用于全面跟蹤內(nèi)核調(diào)度器的行為。它不僅關(guān)注搶占,還會(huì)記錄線程的調(diào)度入隊(duì)、出隊(duì)、切換等整個(gè)生命周期的調(diào)度事件,能詳細(xì)呈現(xiàn)調(diào)度器如何選擇下一個(gè)要執(zhí)行的線程、線程的等待時(shí)長(zhǎng)、調(diào)度延遲情況等,是分析調(diào)度性能瓶頸、優(yōu)化調(diào)度策略的有力工具 。

?工作機(jī)制

在調(diào)度器的眾多關(guān)鍵函數(shù)(如schedule()、線程入隊(duì)函數(shù)、出隊(duì)函數(shù)等)中植入跟蹤代碼,每次調(diào)度事件發(fā)生時(shí),收集并存儲(chǔ)大量調(diào)度相關(guān)元數(shù)據(jù)(如線程狀態(tài)變化、調(diào)度延遲統(tǒng)計(jì)等)。這使得調(diào)度器的執(zhí)行流程變得更為復(fù)雜,執(zhí)行時(shí)間被延長(zhǎng),因?yàn)橐l繁處理跟蹤數(shù)據(jù)的采集和存儲(chǔ)。

三、對(duì)網(wǎng)絡(luò)性能影響的深度分析

(一)內(nèi)核資源競(jìng)爭(zhēng)角度

網(wǎng)絡(luò)數(shù)據(jù)的收發(fā),依賴內(nèi)核網(wǎng)絡(luò)協(xié)議棧的處理,而協(xié)議棧的運(yùn)行離不開(kāi)內(nèi)核調(diào)度、中斷等機(jī)制的協(xié)同。當(dāng)啟用上述三個(gè)跟蹤器后:

?中斷處理受干擾CONFIG_IRQSOFF_TRACER增加了中斷關(guān)閉與開(kāi)啟過(guò)程的開(kāi)銷(xiāo),網(wǎng)絡(luò)數(shù)據(jù)接收往往依賴中斷觸發(fā)(如網(wǎng)卡收到數(shù)據(jù)包觸發(fā)中斷,通知內(nèi)核處理)。若中斷處理因跟蹤代碼插入而延遲,會(huì)導(dǎo)致網(wǎng)卡接收隊(duì)列中的數(shù)據(jù)包不能及時(shí)被內(nèi)核取走,隊(duì)列溢出風(fēng)險(xiǎn)增加,進(jìn)而引發(fā)丟包。即使未丟包,也會(huì)因處理延遲導(dǎo)致網(wǎng)絡(luò)延遲增大,影響吞吐量。

?調(diào)度效率降低CONFIG_PREEMPT_TRACERCONFIG_SCHED_TRACER讓內(nèi)核調(diào)度器負(fù)載加重。網(wǎng)絡(luò)協(xié)議棧中的線程(如負(fù)責(zé)數(shù)據(jù)包轉(zhuǎn)發(fā)、協(xié)議處理的內(nèi)核線程)的調(diào)度會(huì)變得不順暢。比如,當(dāng)一個(gè)網(wǎng)絡(luò)線程需要被調(diào)度執(zhí)行來(lái)處理緊急數(shù)據(jù)包時(shí),調(diào)度器可能因忙于處理跟蹤數(shù)據(jù)記錄,而不能及時(shí)響應(yīng)調(diào)度請(qǐng)求,導(dǎo)致網(wǎng)絡(luò)處理線程等待時(shí)間過(guò)長(zhǎng),數(shù)據(jù)包處理不及時(shí),影響網(wǎng)絡(luò)吞吐量,甚至引發(fā)丟包(當(dāng)隊(duì)列滿時(shí))。

(二)性能開(kāi)銷(xiāo)疊加角度

三個(gè)跟蹤器各自都會(huì)帶來(lái)一定的內(nèi)核性能開(kāi)銷(xiāo),且這些開(kāi)銷(xiāo)在網(wǎng)絡(luò)高負(fù)載場(chǎng)景下會(huì)相互疊加、放大:

?跟蹤代碼的執(zhí)行涉及大量的內(nèi)存訪問(wèn)(如記錄跟蹤數(shù)據(jù)到內(nèi)存緩沖區(qū))、條件判斷(判斷是否觸發(fā)跟蹤邏輯)等操作,會(huì)占用CPU周期。網(wǎng)絡(luò)處理本身對(duì)CPU資源需求較高(如數(shù)據(jù)包的校驗(yàn)、協(xié)議解析等),當(dāng)CPU被跟蹤邏輯大量占用時(shí),網(wǎng)絡(luò)協(xié)議棧可用的CPU資源減少,處理能力下降。

?在高網(wǎng)絡(luò)吞吐量場(chǎng)景下,網(wǎng)絡(luò)中斷觸發(fā)頻繁、調(diào)度事件增多,跟蹤器被觸發(fā)的頻率也會(huì)大幅上升。原本每個(gè)跟蹤點(diǎn)的微小開(kāi)銷(xiāo),會(huì)因高頻率觸發(fā)而累積成顯著的性能損耗,最終體現(xiàn)為網(wǎng)絡(luò)性能的明顯下降,如測(cè)試中出現(xiàn)的約10%吞吐量降低,以及丟包現(xiàn)象(當(dāng)資源緊張到一定程度時(shí))。

(三)與iperf3測(cè)試的關(guān)聯(lián)

iperf3是常用的網(wǎng)絡(luò)性能測(cè)試工具,用于測(cè)試網(wǎng)絡(luò)帶寬、丟包率等指標(biāo)。當(dāng)啟用三個(gè)跟蹤器時(shí),內(nèi)核在處理iperf3產(chǎn)生的大量網(wǎng)絡(luò)數(shù)據(jù)包時(shí),受上述資源競(jìng)爭(zhēng)和性能開(kāi)銷(xiāo)影響,無(wú)法高效處理數(shù)據(jù)包:

?發(fā)送端,內(nèi)核協(xié)議??赡芤蛘{(diào)度延遲,不能及時(shí)將iperf3生成的數(shù)據(jù)包發(fā)送出去,導(dǎo)致發(fā)送速率受限;接收端,因中斷處理、調(diào)度問(wèn)題,無(wú)法及時(shí)接收和處理數(shù)據(jù)包,使得數(shù)據(jù)包在接收隊(duì)列堆積,觸發(fā)丟包機(jī)制(如隊(duì)列滿后丟棄新到達(dá)的數(shù)據(jù)包)。而關(guān)閉跟蹤器后,內(nèi)核擺脫了額外的性能開(kāi)銷(xiāo)和資源競(jìng)爭(zhēng)干擾,能更高效地處理iperf3測(cè)試的數(shù)據(jù)包,丟包問(wèn)題消失,網(wǎng)絡(luò)性能恢復(fù)正常。

四、總結(jié)與建議

(一)總結(jié)

CONFIG_IRQSOFF_TRACERCONFIG_PREEMPT_TRACER、CONFIG_SCHED_TRACER這三個(gè)配置項(xiàng),主要用于內(nèi)核調(diào)試階段,輔助開(kāi)發(fā)者分析中斷、搶占、調(diào)度相關(guān)的實(shí)時(shí)性問(wèn)題。但它們通過(guò)增加內(nèi)核中斷處理、調(diào)度過(guò)程的開(kāi)銷(xiāo),引發(fā)資源競(jìng)爭(zhēng)和性能損耗疊加,在網(wǎng)絡(luò)高負(fù)載場(chǎng)景下,對(duì)依賴內(nèi)核高效調(diào)度和中斷響應(yīng)的網(wǎng)絡(luò)處理流程產(chǎn)生干擾,最終導(dǎo)致網(wǎng)絡(luò)性能下降、丟包等問(wèn)題。

(二)建議

?調(diào)試階段:在系統(tǒng)開(kāi)發(fā)調(diào)試初期,若需分析內(nèi)核實(shí)時(shí)性、調(diào)度等問(wèn)題,可臨時(shí)啟用這些跟蹤器,借助ftrace等工具采集數(shù)據(jù)進(jìn)行問(wèn)題排查。

?生產(chǎn)階段:當(dāng)系統(tǒng)進(jìn)入生產(chǎn)環(huán)境或需要保障網(wǎng)絡(luò)等關(guān)鍵性能時(shí),務(wù)必關(guān)閉這些調(diào)試性質(zhì)的跟蹤器配置,避免其帶來(lái)的性能損耗影響系統(tǒng)整體功能,確保網(wǎng)絡(luò)、調(diào)度等核心功能高效運(yùn)行

通過(guò)對(duì)這幾個(gè)內(nèi)核配置項(xiàng)的深入剖析,我們清晰認(rèn)識(shí)到內(nèi)核調(diào)試配置對(duì)系統(tǒng)性能的潛在影響,在實(shí)際開(kāi)發(fā)中需根據(jù)場(chǎng)景合理取舍,保障系統(tǒng)性能與功能的平衡。



聲明:本文內(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)投訴
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3748

    瀏覽量

    133667
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    4

    文章

    1468

    瀏覽量

    42890
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11763

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    工控機(jī)的內(nèi)核配置

    工控機(jī)的內(nèi)核配置  對(duì)于工控機(jī)內(nèi)核,對(duì)于內(nèi)核的大小要求并不嚴(yán)格,關(guān)鍵的是正確性,健壯性和實(shí)時(shí)性(某些機(jī)子要求實(shí)時(shí)性較高).對(duì)文件系統(tǒng)要求單一,但保證正確性.網(wǎng)絡(luò)按需設(shè)置?! 】勺魅缦?/div>
    發(fā)表于 08-15 14:14

    linux內(nèi)核深度剖析,另附有光盤(pán)資料

    linux內(nèi)核深度剖析,對(duì)于想學(xué)linux內(nèi)核的人來(lái)說(shuō),絕對(duì)值得一看,另附有光盤(pán)資料。
    發(fā)表于 01-15 21:25

    內(nèi)核配置單的講解

    很多朋友要自己編譯內(nèi)核,自己加個(gè)驅(qū)動(dòng),或者把上面功能去掉,需要調(diào)用到內(nèi)核配置單,這里有一份講解,分享給大家
    發(fā)表于 11-08 14:20

    關(guān)于linux內(nèi)核配置文件

    linux怎樣選擇內(nèi)核配置文件?
    發(fā)表于 12-08 21:21

    修改內(nèi)核配置增加自己的驅(qū)動(dòng)為什么實(shí)現(xiàn)不了呢

    內(nèi)核和系統(tǒng)編譯都沒(méi)問(wèn)題,但是我要修改內(nèi)核配置增加自己的驅(qū)動(dòng)做不了。文檔上也沒(méi)有關(guān)于內(nèi)核配置的項(xiàng)目,我自己試過(guò) make ARCH=arm64 CROSS_COMPILE
    發(fā)表于 12-30 07:06

    Linux內(nèi)核配置方法及編譯資料分享

    Linux內(nèi)核配置及編譯解壓內(nèi)核建立源碼目錄該目錄下以patch結(jié)尾的文件為ST官方提供的補(bǔ)丁文件,linux-5.4.31.tar.xz為標(biāo)準(zhǔn)linux源碼包。解壓標(biāo)準(zhǔn)內(nèi)核源碼包
    發(fā)表于 02-08 06:55

    Linux系統(tǒng)內(nèi)核配置及編譯

    STM32MP157系列教程連載-Linux系統(tǒng)移植篇8:STM32MP1微處理器之Linux內(nèi)核配置及編譯第 1 章 Linux內(nèi)核配置及編譯1.1 解壓內(nèi)核建立源碼目錄linux@ubuntu
    發(fā)表于 02-17 06:56

    Linux內(nèi)核配置系統(tǒng)詳解

    ,都將面臨著同樣的問(wèn)題,即如何將源代碼融入到 Linux 內(nèi)核中,增加相應(yīng)的 Linux 配置選項(xiàng),并最終被編譯進(jìn) Linux 內(nèi)核。這就需要了解 Linux 的內(nèi)核配置系統(tǒng)。 眾所周
    發(fā)表于 11-01 15:45 ?4次下載

    Linux內(nèi)核配置編譯分析的設(shè)計(jì)方案

    Linux內(nèi)核配置編譯分析的設(shè)計(jì)方案
    發(fā)表于 07-08 16:53 ?18次下載
    Linux<b class='flag-5'>內(nèi)核配置</b>編譯分析的設(shè)計(jì)方案

    Linux內(nèi)核配置網(wǎng)絡(luò)資料說(shuō)明

    Linux不止在上網(wǎng)時(shí)候才會(huì)用到網(wǎng)絡(luò)功能’一些程序在單機(jī)時(shí)候也會(huì)需要內(nèi)核網(wǎng)絡(luò)支持。 X server是個(gè)典型的例子。如果你是從一個(gè)老內(nèi)核更新到一個(gè)比較新的
    發(fā)表于 03-12 10:33 ?14次下載

    STM32MP157 Linux系統(tǒng)移植開(kāi)發(fā)篇8:Linux內(nèi)核配置方法及編譯

    Linux內(nèi)核配置及編譯解壓內(nèi)核建立源碼目錄該目錄下以patch結(jié)尾的文件為ST官方提供的補(bǔ)丁文件,linux-5.4.31.tar.xz為標(biāo)準(zhǔn)linux源碼包。解壓標(biāo)準(zhǔn)內(nèi)核源碼包
    發(fā)表于 12-04 21:06 ?9次下載
    STM32MP157 Linux系統(tǒng)移植開(kāi)發(fā)篇8:Linux<b class='flag-5'>內(nèi)核配置</b>方法及編譯

    什么是SysRq 內(nèi)核配置選項(xiàng)

    。 SysRq內(nèi)核配置選項(xiàng) 要使用系統(tǒng)請(qǐng)求鍵 SysRq ,內(nèi)核配置選項(xiàng)中必須打開(kāi) CONFIG_MAGIC_SYSRQ CONFIG_MAGIC_SYSRQ=y
    的頭像 發(fā)表于 09-26 16:42 ?1702次閱讀

    T507開(kāi)發(fā)板如何修改和保存內(nèi)核配置

    本文檔介紹如何在開(kāi)發(fā)時(shí)修改和保存內(nèi)核配置,適用于開(kāi)發(fā)板TQT507。1.修改內(nèi)核配置編譯時(shí)系統(tǒng)會(huì)先檢測(cè)當(dāng)前內(nèi)核源碼目錄下是否存在.config文件,如果存在,直接使用此配置.confi
    的頭像 發(fā)表于 12-08 11:26 ?1383次閱讀
    T507開(kāi)發(fā)板如何修改和保存<b class='flag-5'>內(nèi)核配置</b>

    TQT507開(kāi)發(fā)板如何修改和保存內(nèi)核配置

    本文檔介紹如何在開(kāi)發(fā)時(shí)修改和保存內(nèi)核配置,適用于開(kāi)發(fā)板TQT507。 1.修改內(nèi)核配置 編譯時(shí)系統(tǒng)會(huì)先檢測(cè)當(dāng)前內(nèi)核源碼目錄下是否存在.config文件,如果存在,直接使用此配置.con
    的頭像 發(fā)表于 12-28 14:13 ?1034次閱讀
    TQT507開(kāi)發(fā)板如何修改和保存<b class='flag-5'>內(nèi)核配置</b>

    強(qiáng)實(shí)時(shí)運(yùn)動(dòng)控制內(nèi)核MotionRT750(一):驅(qū)動(dòng)安裝、內(nèi)核配置與使用

    強(qiáng)實(shí)時(shí)運(yùn)動(dòng)控制內(nèi)核MotionRT750的驅(qū)動(dòng)安裝與內(nèi)核配置
    的頭像 發(fā)表于 07-03 15:48 ?3689次閱讀
    強(qiáng)實(shí)時(shí)運(yùn)動(dòng)控制<b class='flag-5'>內(nèi)核</b>MotionRT750(一):驅(qū)動(dòng)安裝、<b class='flag-5'>內(nèi)核配置</b>與使用