Hi, Thanks Matsami and Namhyung for the suggestions! On Wed, Apr 18, 2018 at 10:43 PM, Namhyung Kim <namhyung@xxxxxxxxxx> wrote: > On Wed, Apr 18, 2018 at 06:02:50PM +0900, Masami Hiramatsu wrote: >> On Mon, 16 Apr 2018 21:07:47 -0700 >> Joel Fernandes <joelaf@xxxxxxxxxx> wrote: >> >> > With TRACE_IRQFLAGS, we call trace_ API too many times. We don't need >> > to if local_irq_restore or local_irq_save didn't actually do anything. >> > >> > This gives around a 4% improvement in performance when doing the >> > following command: "time find / > /dev/null" >> > >> > Also its best to avoid these calls where possible, since in this series, >> > the RCU code in tracepoint.h seems to be call these quite a bit and I'd >> > like to keep this overhead low. >> >> Can we assume that the "flags" has only 1 bit irq-disable flag? >> Since it skips calling raw_local_irq_restore(flags); too, > > I don't know how many it impacts on performance but maybe we can have > an arch-specific config option something like below? The flags restoration I am hoping is "cheap" but I haven't measured specifically the cost of this though. > > >> if there is any state in the flags on any arch, it may change the >> result. In that case, we can do it as below (just skipping trace_hardirqs_*) >> >> int disabled = irqs_disabled(); > > if (disabled == raw_irqs_disabled_flags(flags)) { > #ifndef CONFIG_ARCH_CAN_SKIP_NESTED_IRQ_RESTORE > raw_local_irq_restore(flags); > #endif > return; > } Hmm, somehow I feel this part should be written generically enough that it applies to all architectures (as a first step). > >> >> if (!raw_irqs_disabled_flags(flags) && disabled) >> trace_hardirqs_on(); >> >> raw_local_irq_restore(flags); >> >> if (raw_irqs_disabled_flags(flags) && !disabled) >> trace_hardirqs_off(); I like this idea since its a good thing to do the flag restoration just to be safe and preserve the current behaviors. Also my goal was to reduce the trace_ calls in this series, so its probably better I just do as you're suggesting. I will do some experiments and make the changes for the next series. thanks, - Joel -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html