Linux
如何讓核心不使用 KERN_DEBUG 執行 printk
我注意到核心對 printk 有不同的控制台級別。
我也注意到了這個文章
$$ 1 $$. 我知道我們可以更改 /proc/sys/kernel/printk 來更改控制台的 printk 級別;我們甚至可以使用 dmesg –level 來更改 dmesg 的顯示級別。
但是,我的問題是:
如果我在核心中有 printk(KERN_DEBUG “debug message”) 行,我可以將系統配置為建議核心*不要執行 printk(KERN_DEBU …)*語句,而不僅僅是不顯示消息嗎?
我不希望核心執行這個 printk,因為 printk 會導致一些性能成本。即使我們看不到 dmesg 列印出的消息,核心仍可能將其保存在其他地方,這可能會稍微減慢系統速度(比如幾毫秒),這是我想避免的。
非常感謝您在這個問題上的時間和幫助!
$$ 1 $$ 無法過濾 printk 消息
在我看來,KERN_DEBUG 和更低的程式碼不會被編譯,除非您在 kconfig 中設置了適當的標誌。http://lxr.free-electrons.com/source/include/linux/printk.h?v=4.10#L280我非常懷疑函式呼叫的成本和檢查 if 語句是一個問題,這就是全部printk(KERN_DEBU …) 將執行。