限制printk的打印数量 -- pr_emerg_ratelimited

/*
 * ratelimited messages with local ratelimit_state,
 * no local ratelimit_state used in the !PRINTK case
 */
#ifdef CONFIG_PRINTK
#define printk_ratelimited(fmt, ...)					\
({									\
	static DEFINE_RATELIMIT_STATE(_rs,				\
				      DEFAULT_RATELIMIT_INTERVAL,	\
				      DEFAULT_RATELIMIT_BURST);		\
									\
	if (__ratelimit(&_rs))						\
		printk(fmt, ##__VA_ARGS__);				\
})
#else
#define printk_ratelimited(fmt, ...)					\
	no_printk(fmt, ##__VA_ARGS__)
#endif

限制条件可动态修改,在 /proc 目录下的两个文件:

/proc/sys/kernel/printk_ratelimit
/proc/sys/kernel/printk_ratelimit_burst

printk_ratelimit 表示时间间隔
printk_ratelimit_burst 表示频次间隔
默认情况下 printk_ratelimit 的值是 5 ,printk_ratelimit_burst 的值是 10。
即指定的打印在每5秒的时间里最多只能打印10次。

参考文档:
https://www.cnblogs.com/chorm590/p/12782251.html


版权声明:本文为furongwei123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。