Kernel
查看目前核心參數?
我在我的系統日誌中
kernel.perf_event_max_sample_rate
看到發生了變化。我想知道是否可以每隔幾分鐘編寫一個快速腳本來記錄此變數。目前是:
sysctl -a | grep kernel.perf_event_max_sample_rate
在手冊頁 sysctl 中說
sysctl
- 在執行時配置核心參數這是否意味著我的腳本將獲取核心啟動時設置的參數?它會接受變化嗎?
因此,學習 Unix 的一件大事就是閱讀該死的手冊頁:
我不僅僅是一個從草坪上脾氣暴躁的老人,那裡真的有有價值的資訊。在這種情況下:
描述 sysctl 用於在執行時修改核心參數。可用的參數是/proc/sys/ 下列出的參數。Linux 中的 sysctl 支持需要 Procfs。您可以使用 sysctl 來讀取和寫入 sysctl 數據。
所以我們可以:
$sudo sysctl -a | grep kernel.perf_event_max_sample_rate kernel.perf_event_max_sample_rate = 50000 sysctl: reading key "net.ipv6.conf.all.stable_secret" sysctl: reading key "net.ipv6.conf.default.stable_secret" sysctl: reading key "net.ipv6.conf.enp3s0.stable_secret" sysctl: reading key "net.ipv6.conf.lo.stable_secret" sysctl: reading key "net.ipv6.conf.wlp1s0.stable_secret"
通過閱讀手冊頁,我們了解到 -a 是“顯示目前可用的所有值”,但我們也可以看到:
概要
sysctl [options] [variable[=value]] [...]
sysctl -p [file or regexp] [...]
這意味著我們可以將上述命令縮短為:
$ sudo sysctl kernel.perf_event_max_sample_rate kernel.perf_event_max_sample_rate = 50000
或者我們可以:
$ more /proc/sys/kernel/perf_event_max_sample_rate 50000
所以,TL;DR:
- 是的,你可以每隔幾分鐘編寫一個腳本來記錄這個變數,但是如果它會在它發生變化時出現在日誌中,你為什麼會這樣呢?
- 直接從 /proc/sys/kernel/perf_event_max_sample_rate 讀取值可能比使用 sysctl 更有效,並且從 sysctl 請求特定值比使用 grep 更有效。