Linux中國

diff -u: 內核開發里的新鮮事兒

安迪·克倫(Andi Kleen)則想為perf增加底層CPU事件支持。問題在於這可能會導致大量的底層事件,而且會因CPU的變化而改變。即使為了所有類型的CPU把可能的時間都存儲在內存里,也可能會顯著地增加內核的運行大小。因此,把這個信息硬編碼進內核的方法是有問題的。

他也指出OProfile工具依賴於這些時間的公開可用列表,儘管他表示OProfile開發者並非總維持他們的列表與最新的可用版本一致。

為了解決這些問題,安迪提交了一個補丁,允許perf識別在給定的系統上為特定的CPU需要那種事件列表,並自動從起始位置下載這個列表的最新版本。然後perf可以解釋這個列表並分析其中的事件,不會使內核負載過重。

有各種各樣對安迪代碼的反饋,其中大部分涉及到應該在哪個目錄下保存事件列表和文件如何命名。這份代碼本身的特性似乎得到了很好的回應。一處細節證明了安迪的代碼比其他人的更有爭議,就是將列表下載到用戶家目錄下的一個子目錄。安迪表示如果不這樣做的話,用戶可能會以系統管理員的身份去下載事件列表,這會是危害安全的操作。

薩沙·萊文(Sasha Levin)最近發布了一個腳本來從堆棧轉儲中把十六進位的偏移量翻譯成有意義的指向內核源碼文件的行號。因此諸如「ffffffff811f0ec8」形式的十六進位表示可以被翻譯成「fs/proc/generic.c:445」。

然而,結果表明李納斯·托瓦茲正打算從堆棧轉儲中移除十六進位偏移量,具體原因是他們難以理解。所以薩沙的代碼看起來過時了。[譯者註:程序媛,傷不起!:< ]

他們在這個問題上糾結了一番。起初,薩沙打算依賴存儲在System.map文件里的數據區補償,但李納斯指出包括他在內的有些人並不會保留System.map文件。李納斯推薦使用/usr/bin/nm從編譯好的內核文件中提取符號表。

所以,似乎薩沙的腳本可能確實為調試堆棧轉儲提供了有意義的文件和行號,假設堆棧轉儲提供足夠的信息去完成計算。

via: http://www.linuxjournal.com/content/diff-u-whats-new-kernel-development-0

原文作者:Zack Brown

譯者:KayGuoWhu 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國