總所周知,作為世界最知名,用戶最多的開源PC操作系統(tǒng),Linux每個版本都會正黑來自世界各地開發(fā)者的代碼。
今天,最新的Linux 6.2版本合并了來自華為鄭磊(原文為Zheng Lei)的代碼,為核心內(nèi)核的性能帶來了大幅提升。
根據(jù)合并代碼模塊的介紹,通過鄭磊提交的代碼,Linux在kallsyms_lookup_name () 平均查找的性能提高了715倍,將舊實現(xiàn)從O (n) 升級到O (log (n)),同時還保留了/proc/kallsyms 上的舊實現(xiàn)支持。
而根據(jù)鄭磊自己的描述,他對Linux查找符號的邏輯進行了優(yōu)化。
在此前,為了搜索一個符號,需要將 'kallsyms_names' 中的符號逐一展開,然后使用展開后的字符串進行比較。這是 O (n)。
而在優(yōu)化后,系統(tǒng)就可以像地址一樣將名字按升序排序,并使用二進制搜索,這就是O (log (n))。