On Fri, 18 Oct 2019 10:38:06 +0200 (CEST) Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > On Thu, 17 Oct 2019, David Miller wrote: > > > From: Clark Williams <williams@xxxxxxxxxx> > > Date: Thu, 17 Oct 2019 21:49:17 -0500 > > > > > BPF programs cannot loop and are limited to 4096 instructions. > > > > The limit was increased to 1 million not too long ago. > > Assuming a instruction/cycle ratio of 1.0 and a CPU frequency of 2GHz, > that's 500us of preempt disabled time. Out of bounds by at least one order > of magntiude for a lot of RT scenarios. > So if I do my arithmetic right, 4096 instructions would be around 2us. In many cases that would just be noise, but there are some customer cases on the horizon where 2us would be a significant fraction of their max latency. Hmmm. A quick grep through the Kconfigs didn't show me a BPF config that was set to a large numeric value (e.g. 1000000). Is the instruction limit hard coded into the verifier/VM logic and if so, could we lift it out and set a smaller limit for PREEMPT_RT? Not a silver bullet, but might be a start, since it sounds like BPF code presumes it has the cpu for the duration of a program run. Clark -- The United States Coast Guard Ruining Natural Selection since 1790