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

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

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

3天內不再提示

華為開發者貢獻Linux內核補丁,將核心內核函數速度提升715倍

OSC開源社區 ? 來源:OSC開源社區 ? 作者:OSC開源社區 ? 2022-12-16 11:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux 6.2 近日合并了一個重要補丁,該補丁能夠將一個核心內核函數速度提升 715 倍。

3701515a-7ce2-11ed-8abf-dac502259ad0.png

從合并的注釋可知,貢獻此補丁的維護者 Zhen Lei 來自華為,他將 kallsyms_lookup_name () 的平均查找性能提高了 715 倍,從而使內核里面舊實現的時間復雜度從 O (n) 升級到 O (log (n)),大幅減少查找時間,同時還保留了 /proc/kallsyms 上舊的實現支持。 kallsyms_lookup_name () 函數用于根據名稱查找符號的地址,并可用于查找內核符號表中的任何符號。

371909bc-7ce2-11ed-8abf-dac502259ad0.png

Zhen Lei 曾在較早的補丁中描述了kallsyms_lookup_name () 的優化思路:

目前,要搜索一個符號,我們需要將 'kallsyms_names' 中的符號一個一個展開,然后使用展開后的字符串進行比較。這種算法的時間復雜度是 O (n)。

如果我們像地址一樣按升序對名稱進行排序,則可以使用二分查找。這種算法的時間復雜度是 O (log (n))。

為了不改變 “/proc/kallsyms” 的實現,表 kallsyms_names [] 仍然按照升序與地址一一對應存儲。

添加數組 kallsyms_seqs_of_names [],以排序后的 names 序號為索引,對應的內容為排序后的地址序號。例如:假設 NameX 在數組 kallsyms_seqs_of_names [] 中的索引為 'i',kallsyms_seqs_of_names [i] 的內容為 'k',則 NameX 對應的地址為 kallsyms_addresses [k]。kallsyms_names [] 中的偏移量是 get_symbol_offset (k)。

請注意,使用此方法內存使用量將增加 (4 * kallsyms_num_syms) 字節,接下來的兩個補丁將減少 (1 * kallsyms_num_syms) 字節并正確處理 CONFIG_LTO_CLANG=y 的情況。

性能測試結果:(x86)

Before:

min=234, max=10364402, avg=5206926

min=267, max=11168517, avg=5207587

After:

min=1016, max=90894, avg=7272

min=1014, max=93470, avg=7293

kallsyms_lookup_name () 的平均查找性能提高了 715 倍。

因此,該補丁帶來的唯一缺點是將內存占用量增加 3 * kallsyms_num_syms。 Linux 6.2 的模塊代碼還包含一個小的啟動優化,將啟動時間縮短了大約 30 毫秒。 相關鏈接:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3ba2c3ff98ea8bfb219288dbacf2a23a902c751b

審核編輯 :李倩

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

    關注

    88

    文章

    11760

    瀏覽量

    219036
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67513

原文標題:華為開發者貢獻Linux內核補丁,將核心內核函數速度提升715倍

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux內核伙伴系統內存申請函數詳解:從原理到實戰

    Linux 內核中,內存管理是整個系統穩定運行的基石,而伙伴系統(Buddy System) 作為內核物理內存分配的核心機制,更是驅動開發
    的頭像 發表于 02-10 16:58 ?3631次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>伙伴系統內存申請<b class='flag-5'>函數</b>詳解:從原理到實戰

    內核.config文件:嵌入式開發的“底層配置密碼”,90%的開發者都在靠它掌控系統核心

    在嵌入式 Linux 開發中,尤其是瑞芯微 RK3588 這類高性能平臺的底層開發內核編譯是繞不開的核心環節。
    的頭像 發表于 02-09 17:07 ?1122次閱讀
    <b class='flag-5'>內核</b>.config文件:嵌入式<b class='flag-5'>開發</b>的“底層配置密碼”,90%的<b class='flag-5'>開發者</b>都在靠它掌控系統<b class='flag-5'>核心</b>

    Linux內核編碼風格權威總結:從縮進到底層設計,讓你的代碼更“內核味”

    作為全球最龐大的開源項目之一,Linux 內核的代碼量早已突破千萬行。要讓來自世界各地的開發者高效協作,一套統一、嚴謹的編碼風格必不可少 —— 這不僅是 “代碼顏值” 的要求,更是可讀性、可維護性的
    的頭像 發表于 02-09 16:29 ?126次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>編碼風格權威總結:從縮進到底層設計,讓你的代碼更“<b class='flag-5'>內核</b>味”

    深入RK3588內核:rockchip_linux_defconfig的作用與調試價值

    在 RK3588 芯片的 Linux 開發中,有一個文件始終是開發者繞不開的核心 ——kernel/arch/arm64/configs/rockchip_
    的頭像 發表于 02-03 15:56 ?1161次閱讀
    深入RK3588<b class='flag-5'>內核</b>:rockchip_<b class='flag-5'>linux</b>_defconfig的作用與調試價值

    Linux系統內核參數調優實戰指南

    Linux 內核參數調優是系統性能優化的核心環節。隨著云原生架構的普及和硬件性能的飛速提升,默認的內核參數配置往往無法充分發揮系統潛力。在高
    的頭像 發表于 01-28 14:27 ?443次閱讀

    【「Linux 設備驅動開發(第 2 版)」閱讀體驗】Linux內核開發基礎

    ,本文介紹Linux內核開發基礎 處理內核核心輔助函數 L
    發表于 01-12 22:45

    【「Linux 設備驅動開發(第 2 版)」閱讀體驗】+讀內核處理的核心輔助函數

    上周收到《Linux 設備驅動開發(第 2 版)》書籍,這是一本介紹Linux內核開發的指導性書籍。全面了解
    發表于 01-10 22:08

    深入Linux內核:進程調度的核心邏輯與實現細節

    ,背后都離不開內核調度算法的精準操控。今天,我們就從優先級、調度算法、時間片分配到底層實現,全方位拆解Linux內核進程調度的核心邏輯。 一、進程調度的“身份標識”:優先級與分類 要理
    的頭像 發表于 12-24 07:05 ?4307次閱讀
    深入<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>:進程調度的<b class='flag-5'>核心</b>邏輯與實現細節

    GCC -O0?編譯內核:調試黨的?“救命神器”,這些優勢?90%?開發者沒吃透!

    ) ?作為“零優化”?選項,看似?“性能拉胯”,卻在?kernel?開發調試場景中占據不可替代的地位。 今天就帶大家深度拆解:用?O0?編譯內核核心優勢、實際應用場景,再通過真實案例讓你秒懂?——?為什么資深
    的頭像 發表于 12-03 07:05 ?602次閱讀
    GCC -O0?編譯<b class='flag-5'>內核</b>:調試黨的?“救命神器”,這些優勢?90%?<b class='flag-5'>開發者</b>沒吃透!

    基于 DR1M90 的 Linux-RT 內核開發:從編譯配置到 GPIO / 按鍵應用實現(1)

    ,及 rt_gpio_ctrl、rt_input 應用案例。含實操命令與測試方法,適配指定硬件,幫助開發者完成 Linux-RT 系統開發與優化,滿足 DR1M90 產品實時性應用需求。
    的頭像 發表于 12-02 10:38 ?1180次閱讀
    基于 DR1M90 的 <b class='flag-5'>Linux</b>-RT <b class='flag-5'>內核</b><b class='flag-5'>開發</b>:從編譯配置到 GPIO / 按鍵應用實現(1)

    Linux內核printk日志級別全解析:從參數解讀到實操配置

    ”——?它直接決定了?printk(內核打印函數)的日志輸出行為。如果你是嵌入式開發者內核調試工程師,或經常需要排查驅動?/?系統問題,理解這串數字和?printk?輸出等級,能讓你
    的頭像 發表于 11-20 15:54 ?1705次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>printk日志級別全解析:從參數解讀到實操配置

    【書籍評測活動NO.67】成為硬核Linux開發者:《Linux 設備驅動開發(第 2 版)》

    )。成為硬核Linux開發者Linux系統的設備驅動開發,一直給人門檻較高的印象,主要因內核機制抽象、需深度理解硬件原理、
    發表于 11-17 17:52

    deepin亮相2025中國Linux內核開發者大會

    11 月 1 日,第二十屆中國 Linux 內核開發者大會(CLK)在深圳舉辦。CLK 作為國內 Linux 內核領域極具影響力的峰會,由清
    的頭像 發表于 11-05 17:59 ?823次閱讀

    迅為RK3568開發板OpeHarmony學習開發手冊1.1-內核移植優化

    在上一小節的內核移植過程中,我們重新創建了內核補丁文件。然而,對于頻繁修改內核源代碼進行開發的情況來說,每次都制作
    發表于 07-26 10:37

    Linux內核編譯失敗?移動硬盤和虛擬機的那些事兒

    Linux開發中,編譯內核是一項常見任務,但不少開發者在移動硬盤或虛擬機環境下嘗試時會遭遇失敗。本文簡要探討這些問題的成因,并介紹一些虛擬
    的頭像 發表于 04-11 11:36 ?994次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>編譯失敗?移動硬盤和虛擬機的那些事兒