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

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

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

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

華為開發(fā)者貢獻(xiàn)Linux內(nèi)核補(bǔ)丁,將核心內(nèi)核函數(shù)速度提升715倍

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

掃碼添加小助手

加入工程師交流群

Linux 6.2 近日合并了一個重要補(bǔ)丁,該補(bǔ)丁能夠?qū)⒁粋€核心內(nèi)核函數(shù)速度提升 715 倍。

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

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

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

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

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

如果我們像地址一樣按升序?qū)γQ進(jìn)行排序,則可以使用二分查找。這種算法的時間復(fù)雜度是 O (log (n))。

為了不改變 “/proc/kallsyms” 的實(shí)現(xiàn),表 kallsyms_names [] 仍然按照升序與地址一一對應(yīng)存儲。

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

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

性能測試結(jié)果:(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 倍。

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

審核編輯 :李倩

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

    關(guān)注

    88

    文章

    11767

    瀏覽量

    219100
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4417

    瀏覽量

    67556

原文標(biāo)題:華為開發(fā)者貢獻(xiàn)Linux內(nèi)核補(bǔ)丁,將核心內(nèi)核函數(shù)速度提升715倍

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Linux內(nèi)核驅(qū)動開發(fā)的技術(shù)核心精要

    嵌入式Linux驅(qū)動開發(fā)是連接硬件與操作系統(tǒng)的關(guān)鍵環(huán)節(jié)。隨著內(nèi)核演進(jìn)(如Linux 6.13)和硬件復(fù)雜度提升
    發(fā)表于 03-10 13:56

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

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

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

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

    Linux內(nèi)核編碼風(fēng)格權(quán)威總結(jié):從縮進(jìn)到底層設(shè)計,讓你的代碼更“內(nèi)核味”

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

    深入RK3588內(nèi)核:rockchip_linux_defconfig的作用與調(diào)試價值

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

    Linux系統(tǒng)內(nèi)核參數(shù)調(diào)優(yōu)實(shí)戰(zhàn)指南

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

    【「Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)」閱讀體驗(yàn)】Linux內(nèi)核開發(fā)基礎(chǔ)

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

    【「Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)」閱讀體驗(yàn)】+讀內(nèi)核處理的核心輔助函數(shù)

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

    深入Linux內(nèi)核:進(jìn)程調(diào)度的核心邏輯與實(shí)現(xiàn)細(xì)節(jié)

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

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

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

    基于 DR1M90 的 Linux-RT 內(nèi)核開發(fā):從編譯配置到 GPIO / 按鍵應(yīng)用實(shí)現(xiàn)(1)

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

    Linux內(nèi)核printk日志級別全解析:從參數(shù)解讀到實(shí)操配置

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

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

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

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

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

    Linux內(nèi)核編譯失???移動硬盤和虛擬機(jī)的那些事兒

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