Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 59a47fff authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull tracing update from Steven Rostedt:
 "Mostly this is just clean ups and micro optimizations.

  The changes with more meat are:

   - Allowing the trace event filters to filter on CPU number and
     process ids

   - Two new markers for trace output latency were added (10 and 100
     msec latencies)

   - Have tracing_thresh filter function profiling time

  I also worked on modifying the ring buffer code for some future work,
  and moved the adding of the timestamp around.  One of my changes
  caused a regression, and since other changes were built on top of it
  and already tested, I had to operate a revert of that change.  Instead
  of rebasing, this change set has the code that caused a regression as
  well as the code to revert that change without touching the other
  changes that were made on top of it"

* tag 'trace-v4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  ring-buffer: Revert "ring-buffer: Get timestamp after event is allocated"
  tracing: Don't make assumptions about length of string on task rename
  tracing: Allow triggers to filter for CPU ids and process names
  ftrace: Format MCOUNT_ADDR address as type unsigned long
  tracing: Introduce two additional marks for delay
  ftrace: Fix function_graph duration spacing with 7-digits
  ftrace: add tracing_thresh to function profile
  tracing: Clean up stack tracing and fix fentry updates
  ring-buffer: Reorganize function locations
  ring-buffer: Make sure event has enough room for extend and padding
  ring-buffer: Get timestamp after event is allocated
  ring-buffer: Move the adding of the extended timestamp out of line
  ring-buffer: Add event descriptor to simplify passing data
  ftrace: correct the counter increment for trace_buffer data
  tracing: Fix for non-continuous cpu ids
  tracing: Prefer kcalloc over kzalloc with multiply
parents 425afcff b7dc42fd
Loading
Loading
Loading
Loading
+38 −13
Original line number Original line Diff line number Diff line
@@ -691,6 +691,8 @@ The above is mostly meaningful for kernel developers.
	 The marks are determined by the difference between this
	 The marks are determined by the difference between this
	 current trace and the next trace.
	 current trace and the next trace.
	  '$' - greater than 1 second
	  '$' - greater than 1 second
	  '@' - greater than 100 milisecond
	  '*' - greater than 10 milisecond
	  '#' - greater than 1000 microsecond
	  '#' - greater than 1000 microsecond
	  '!' - greater than 100 microsecond
	  '!' - greater than 100 microsecond
	  '+' - greater than 10 microsecond
	  '+' - greater than 10 microsecond
@@ -1944,26 +1946,49 @@ want, depending on your needs.


  ie:
  ie:


  0)               |    up_write() {
  3) # 1837.709 us |          } /* __switch_to */
  0)   0.646 us    |      _spin_lock_irqsave();
  3)               |          finish_task_switch() {
  0)   0.684 us    |      _spin_unlock_irqrestore();
  3)   0.313 us    |            _raw_spin_unlock_irq();
  0)   3.123 us    |    }
  3)   3.177 us    |          }
  0)   0.548 us    |    fput();
  3) # 1889.063 us |        } /* __schedule */
  0) + 58.628 us   |  }
  3) ! 140.417 us  |      } /* __schedule */
  3) # 2034.948 us |    } /* schedule */
  3) * 33998.59 us |  } /* schedule_preempt_disabled */


  [...]
  [...]


  0)               |      putname() {
  1)   0.260 us    |              msecs_to_jiffies();
  0)               |        kmem_cache_free() {
  1)   0.313 us    |              __rcu_read_unlock();
  0)   0.518 us    |          __phys_addr();
  1) + 61.770 us   |            }
  0)   1.757 us    |        }
  1) + 64.479 us   |          }
  0)   2.861 us    |      }
  1)   0.313 us    |          rcu_bh_qs();
  0) ! 115.305 us  |    }
  1)   0.313 us    |          __local_bh_enable();
  0) ! 116.402 us  |  }
  1) ! 217.240 us  |        }
  1)   0.365 us    |        idle_cpu();
  1)               |        rcu_irq_exit() {
  1)   0.417 us    |          rcu_eqs_enter_common.isra.47();
  1)   3.125 us    |        }
  1) ! 227.812 us  |      }
  1) ! 457.395 us  |    }
  1) @ 119760.2 us |  }

  [...]

  2)               |    handle_IPI() {
  1)   6.979 us    |                  }
  2)   0.417 us    |      scheduler_ipi();
  1)   9.791 us    |                }
  1) + 12.917 us   |              }
  2)   3.490 us    |    }
  1) + 15.729 us   |            }
  1) + 18.542 us   |          }
  2) $ 3594274 us  |  }


  + means that the function exceeded 10 usecs.
  + means that the function exceeded 10 usecs.
  ! means that the function exceeded 100 usecs.
  ! means that the function exceeded 100 usecs.
  # means that the function exceeded 1000 usecs.
  # means that the function exceeded 1000 usecs.
  * means that the function exceeded 10 msecs.
  @ means that the function exceeded 100 msecs.
  $ means that the function exceeded 1 sec.
  $ means that the function exceeded 1 sec.




+1 −1
Original line number Original line Diff line number Diff line
@@ -6,7 +6,7 @@


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
extern void mcount_wrapper(void);
extern void mcount_wrapper(void);
#define MCOUNT_ADDR		((long)(mcount_wrapper))
#define MCOUNT_ADDR		((unsigned long)(mcount_wrapper))


static inline unsigned long ftrace_call_adjust(unsigned long addr)
static inline unsigned long ftrace_call_adjust(unsigned long addr)
{
{
+1 −1
Original line number Original line Diff line number Diff line
@@ -3,7 +3,7 @@


#ifdef CONFIG_FUNCTION_TRACER
#ifdef CONFIG_FUNCTION_TRACER


#define MCOUNT_ADDR		((long)(_mcount))
#define MCOUNT_ADDR		((unsigned long)(_mcount))
#define MCOUNT_INSN_SIZE	8 /* sizeof mcount call */
#define MCOUNT_INSN_SIZE	8 /* sizeof mcount call */


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
+1 −1
Original line number Original line Diff line number Diff line
@@ -2,7 +2,7 @@
#define _ASM_POWERPC_FTRACE
#define _ASM_POWERPC_FTRACE


#ifdef CONFIG_FUNCTION_TRACER
#ifdef CONFIG_FUNCTION_TRACER
#define MCOUNT_ADDR		((long)(_mcount))
#define MCOUNT_ADDR		((unsigned long)(_mcount))
#define MCOUNT_INSN_SIZE	4 /* sizeof mcount call */
#define MCOUNT_INSN_SIZE	4 /* sizeof mcount call */


#ifdef __ASSEMBLY__
#ifdef __ASSEMBLY__
+1 −1
Original line number Original line Diff line number Diff line
@@ -9,7 +9,7 @@
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
extern void mcount(void);
extern void mcount(void);


#define MCOUNT_ADDR		((long)(mcount))
#define MCOUNT_ADDR		((unsigned long)(mcount))


#ifdef CONFIG_DYNAMIC_FTRACE
#ifdef CONFIG_DYNAMIC_FTRACE
#define CALL_ADDR		((long)(ftrace_call))
#define CALL_ADDR		((long)(ftrace_call))
Loading