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

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

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

3天內不再提示

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

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 作者:OSC開源社區(qū) ? 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 () 的優(yōu)化思路:

目前,要搜索一個符號,我們需要將 '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) 字節(jié),接下來的兩個補丁將減少 (1 * kallsyms_num_syms) 字節(jié)并正確處理 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 的模塊代碼還包含一個小的啟動優(yōu)化,將啟動時間縮短了大約 30 毫秒。 相關鏈接:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3ba2c3ff98ea8bfb219288dbacf2a23a902c751b

審核編輯 :李倩

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

    關注

    88

    文章

    11760

    瀏覽量

    219042
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67519

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux內核伙伴系統(tǒng)內存申請函數詳解:從原理到實戰(zhàn)

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

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

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

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

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

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

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

    Linux系統(tǒng)內核參數調優(yōu)實戰(zhàn)指南

    Linux 內核參數調優(yōu)是系統(tǒng)性能優(yōu)化的核心環(huán)節(jié)。隨著云原生架構的普及和硬件性能的飛速提升,默認的內核參數配置往往無法充分發(fā)揮系統(tǒng)潛力。在高
    的頭像 發(fā)表于 01-28 14:27 ?446次閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    deepin亮相2025中國Linux內核開發(fā)者大會

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

    迅為RK3568開發(fā)板OpeHarmony學習開發(fā)手冊1.1-內核移植優(yōu)化

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

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

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