Ver os parâmetros atuais do kernel?

0

Eu vi no meu syslog kernel.perf_event_max_sample_rate ser alterado. Eu queria saber se eu poderia escrever um script rápido para registrar essa variável a cada poucos minutos. Atualmente é:

sysctl -a | grep kernel.perf_event_max_sample_rate

Na página man, o sysctl diz

sysctl - configure kernel parameters at runtime

Isso significa que meu script obteria o parâmetro como foi definido quando o kernel inicia? Ele pegaria mudanças?

Obrigado

    
por pwnyrainbow 26.11.2015 / 17:55

2 respostas

5

Então, uma das grandes coisas sobre o aprendizado do Unix é ler a página do homem sangrento:

Eu não estou apenas saindo do meu velho rabugento, há REALMENTE informação valiosa lá. Neste caso:

DESCRIPTION sysctl is used to modify kernel parameters at runtime. The parameters available are those listed under /proc/sys/. Procfs is required for sysctl support in Linux. You can use sysctl to both read and write sysctl data.

Assim podemos:

$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"

Ao ler a manpage, aprendemos que -a é "exibir todos os valores disponíveis atualmente", mas também podemos ver:

SYNOPSIS

  sysctl [options] [variable[=value]] [...]

  sysctl -p [file or regexp] [...]

o que significa que podemos encurtar o comando acima para:

$ sudo sysctl kernel.perf_event_max_sample_rate
kernel.perf_event_max_sample_rate = 50000    

Ou nós podemos:

$ more /proc/sys/kernel/perf_event_max_sample_rate 
50000

Então, TL; DR:

1) Sim, você pode escrever um script para registrar essa variável a cada poucos minutos, mas se ela aparecer nos logs quando ela for alterada, por que você faria isso?

2) Provavelmente seria mais eficiente ler o valor de / proc / sys / kernel / perf_event_max_sample_rate do que usar sysctl, e seria mais eficiente pedir o valor específico de sysctl do que usar grep.

    
por 26.11.2015 / 18:36
0

Se você ler a manpage do systctl, verá também que systctl é apenas um espelho de / process / sys . Então você não precisa de nenhum comando para alterar o valor do systctl. Apenas corra

echo $value > /proc/sys/$sysctl_setting

Apenas tome cuidado para substituir *. * com / neste caso.

Faça um loop em um loop while assim:

sleep_time=10m
while true ; do 
         echo $value > /proc/sys/$sysctl_setting
         sleep $sleep_time
done
    
por 25.04.2018 / 14:33