When we emit printk instances from a code path that is executed very often, the sheer amount of printk instances might quickly overflow the kernel log buffer (in RAM; remember that it's a circular buffer), thus overwriting what might well be key information. Besides that, ever-growing non-volatile log files that then repeat pretty much the same printk instances (almost) ad infinitum are not a great idea either and waste disk space, or worse, flash space. For example, think of a large-ish printk in an interrupt handler code path. What if the hardware interrupt is invoked at a frequency of, say, 100 Hz, that is, 100 times every single second!
To mitigate these issues, the kernel provides an interesting alternative: the rate-limited printk. The printk_ratelimited() macro has identical syntax to the regular printk; the key point is that it effectively suppresses regular prints when certain conditions...