------------------------------------
 
 timer_stats is a debugging facility to make the timer (ab)usage in a Linux
-system visible to kernel and userspace developers. It is not intended for
-production usage as it adds significant overhead to the (hr)timer code and the
-(hr)timer data structures.
+system visible to kernel and userspace developers. If enabled in the config
+but not used it has almost zero runtime overhead, and a relatively small
+data structure overhead. Even if collection is enabled runtime all the
+locking is per-CPU and lookup is hashed.
 
 timer_stats should be used by kernel and userspace developers to verify that
 their code does not make unduly use of timers. This helps to avoid unnecessary
 
        /*
         * It doesnt matter which lock we take:
         */
-       spinlock_t *lock = &per_cpu(lookup_lock, raw_smp_processor_id());
+       spinlock_t *lock;
        struct entry *entry, input;
        unsigned long flags;
 
+       if (likely(!active))
+               return;
+
+       lock = &per_cpu(lookup_lock, raw_smp_processor_id());
+
        input.timer = timer;
        input.start_func = startf;
        input.expire_func = timerf;
 
          reprogrammed. The statistics can be read from /proc/timer_stats.
          The statistics collection is started by writing 1 to /proc/timer_stats,
          writing 0 stops it. This feature is useful to collect information
-         about timer usage patterns in kernel and userspace.
+         about timer usage patterns in kernel and userspace. This feature
+         is lightweight if enabled in the kernel config but not activated
+         (it defaults to deactivated on bootup and will only be activated
+         if some application like powertop activates it explicitly).
 
 config DEBUG_SLAB
        bool "Debug slab memory allocations"