Kernel

查看目前核心參數?

  • January 13, 2021

我在我的系統日誌中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:

  1. 是的,你可以每隔幾分鐘編寫一個腳本來記錄這個變數,但是如果它會在它發生變化時出現在日誌中,你為什麼會這樣呢?
  2. 直接從 /proc/sys/kernel/perf_event_max_sample_rate 讀取值可能比使用 sysctl 更有效,並且從 sysctl 請求特定值比使用 grep 更有效。

引用自:https://unix.stackexchange.com/questions/245709