如何找出Linux内核环形缓冲区大小?

Sam*_*yeb 6 linux kernel linux-kernel

对内核环形缓冲区的大小、它可以容纳多少信息以及哪些数据类型很感兴趣?

ste*_*eve 7

关于大小,它记录在内核的配置文件中。例如,在此处的 Amazon EC2 上,它是 256 KiB

# grep CONFIG_LOG_BUF_SHIFT /boot/config-`uname -r`
CONFIG_LOG_BUF_SHIFT=18
# perl -e 'printf "%d KiB\n",(1<<18)/1024'
256 KiB
#
Run Code Online (Sandbox Code Playgroud)

/kernel/printk/printk.c 中引用

#define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
Run Code Online (Sandbox Code Playgroud)

/kernel/trace/ring_buffer.c 中的更多信息

请注意,如果您已传递内核引导参数“log_buf_len=N”(检查使用cat /proc/cmdline),那么它会覆盖配置文件中的值。