-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'perf-core-for-mingo-20161123' of git://git.kernel.org/pub/…
…scm/linux/kernel/git/acme/linux into perf/core Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo: New tool: - 'perf sched timehist' provides an analysis of scheduling events. Example usage: perf sched record -- sleep 1 perf sched timehist By default it shows the individual schedule events, including the wait time (time between sched-out and next sched-in events for the task), the task scheduling delay (time between wakeup and actually running) and run time for the task: time cpu task name wait time sch delay run time [tid/pid] (msec) (msec) (msec) -------- ------ ---------------- --------- --------- -------- 1.874569 [0011] gcc[31949] 0.014 0.000 1.148 1.874591 [0010] gcc[31951] 0.000 0.000 0.024 1.874603 [0010] migration/10[59] 3.350 0.004 0.011 1.874604 [0011] <idle> 1.148 0.000 0.035 1.874723 [0005] <idle> 0.016 0.000 1.383 1.874746 [0005] gcc[31949] 0.153 0.078 0.022 ... Times are in msec.usec. (David Ahern, Namhyung Kim) Improvements: - Make 'perf c2c report' support -f/--force, to allow skipping the ownership check for root users, for instance, just like the other tools (Jiri Olsa) - Allow sorting cachelines by total number of HITMs, in addition to local and remote numbers (Jiri Olsa) Fixes: - Make sure errors aren't suppressed by the TUI reset at the end of a 'perf c2c report' session (Jiri Olsa) Infrastructure changes: - Initial work on having the annotate code better support multiple architectures, including the ability to cross-annotate, i.e. to annotate perf.data files collected on an ARM system on a x86_64 workstation (Arnaldo Carvalho de Melo, Ravi Bangoria, Kim Phillips) - Use USECS_PER_SEC instead of hard coded number in libtraceevent (Steven Rostedt) - Add retrieval of preempt count and latency flags in libtraceevent (Steven Rostedt) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
- Loading branch information
Showing
20 changed files
with
1,406 additions
and
185 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
static struct ins arm__instructions[] = { | ||
{ .name = "add", .ops = &mov_ops, }, | ||
{ .name = "addl", .ops = &mov_ops, }, | ||
{ .name = "addq", .ops = &mov_ops, }, | ||
{ .name = "addw", .ops = &mov_ops, }, | ||
{ .name = "and", .ops = &mov_ops, }, | ||
{ .name = "b", .ops = &jump_ops, }, // might also be a call | ||
{ .name = "bcc", .ops = &jump_ops, }, | ||
{ .name = "bcs", .ops = &jump_ops, }, | ||
{ .name = "beq", .ops = &jump_ops, }, | ||
{ .name = "bge", .ops = &jump_ops, }, | ||
{ .name = "bgt", .ops = &jump_ops, }, | ||
{ .name = "bhi", .ops = &jump_ops, }, | ||
{ .name = "bl", .ops = &call_ops, }, | ||
{ .name = "bls", .ops = &jump_ops, }, | ||
{ .name = "blt", .ops = &jump_ops, }, | ||
{ .name = "blx", .ops = &call_ops, }, | ||
{ .name = "bne", .ops = &jump_ops, }, | ||
{ .name = "bts", .ops = &mov_ops, }, | ||
{ .name = "call", .ops = &call_ops, }, | ||
{ .name = "callq", .ops = &call_ops, }, | ||
{ .name = "cmp", .ops = &mov_ops, }, | ||
{ .name = "cmpb", .ops = &mov_ops, }, | ||
{ .name = "cmpl", .ops = &mov_ops, }, | ||
{ .name = "cmpq", .ops = &mov_ops, }, | ||
{ .name = "cmpw", .ops = &mov_ops, }, | ||
{ .name = "cmpxch", .ops = &mov_ops, }, | ||
{ .name = "dec", .ops = &dec_ops, }, | ||
{ .name = "decl", .ops = &dec_ops, }, | ||
{ .name = "imul", .ops = &mov_ops, }, | ||
{ .name = "inc", .ops = &dec_ops, }, | ||
{ .name = "incl", .ops = &dec_ops, }, | ||
{ .name = "ja", .ops = &jump_ops, }, | ||
{ .name = "jae", .ops = &jump_ops, }, | ||
{ .name = "jb", .ops = &jump_ops, }, | ||
{ .name = "jbe", .ops = &jump_ops, }, | ||
{ .name = "jc", .ops = &jump_ops, }, | ||
{ .name = "jcxz", .ops = &jump_ops, }, | ||
{ .name = "je", .ops = &jump_ops, }, | ||
{ .name = "jecxz", .ops = &jump_ops, }, | ||
{ .name = "jg", .ops = &jump_ops, }, | ||
{ .name = "jge", .ops = &jump_ops, }, | ||
{ .name = "jl", .ops = &jump_ops, }, | ||
{ .name = "jle", .ops = &jump_ops, }, | ||
{ .name = "jmp", .ops = &jump_ops, }, | ||
{ .name = "jmpq", .ops = &jump_ops, }, | ||
{ .name = "jna", .ops = &jump_ops, }, | ||
{ .name = "jnae", .ops = &jump_ops, }, | ||
{ .name = "jnb", .ops = &jump_ops, }, | ||
{ .name = "jnbe", .ops = &jump_ops, }, | ||
{ .name = "jnc", .ops = &jump_ops, }, | ||
{ .name = "jne", .ops = &jump_ops, }, | ||
{ .name = "jng", .ops = &jump_ops, }, | ||
{ .name = "jnge", .ops = &jump_ops, }, | ||
{ .name = "jnl", .ops = &jump_ops, }, | ||
{ .name = "jnle", .ops = &jump_ops, }, | ||
{ .name = "jno", .ops = &jump_ops, }, | ||
{ .name = "jnp", .ops = &jump_ops, }, | ||
{ .name = "jns", .ops = &jump_ops, }, | ||
{ .name = "jnz", .ops = &jump_ops, }, | ||
{ .name = "jo", .ops = &jump_ops, }, | ||
{ .name = "jp", .ops = &jump_ops, }, | ||
{ .name = "jpe", .ops = &jump_ops, }, | ||
{ .name = "jpo", .ops = &jump_ops, }, | ||
{ .name = "jrcxz", .ops = &jump_ops, }, | ||
{ .name = "js", .ops = &jump_ops, }, | ||
{ .name = "jz", .ops = &jump_ops, }, | ||
{ .name = "lea", .ops = &mov_ops, }, | ||
{ .name = "lock", .ops = &lock_ops, }, | ||
{ .name = "mov", .ops = &mov_ops, }, | ||
{ .name = "movb", .ops = &mov_ops, }, | ||
{ .name = "movdqa", .ops = &mov_ops, }, | ||
{ .name = "movl", .ops = &mov_ops, }, | ||
{ .name = "movq", .ops = &mov_ops, }, | ||
{ .name = "movslq", .ops = &mov_ops, }, | ||
{ .name = "movzbl", .ops = &mov_ops, }, | ||
{ .name = "movzwl", .ops = &mov_ops, }, | ||
{ .name = "nop", .ops = &nop_ops, }, | ||
{ .name = "nopl", .ops = &nop_ops, }, | ||
{ .name = "nopw", .ops = &nop_ops, }, | ||
{ .name = "or", .ops = &mov_ops, }, | ||
{ .name = "orl", .ops = &mov_ops, }, | ||
{ .name = "test", .ops = &mov_ops, }, | ||
{ .name = "testb", .ops = &mov_ops, }, | ||
{ .name = "testl", .ops = &mov_ops, }, | ||
{ .name = "xadd", .ops = &mov_ops, }, | ||
{ .name = "xbeginl", .ops = &jump_ops, }, | ||
{ .name = "xbeginq", .ops = &jump_ops, }, | ||
{ .name = "retq", .ops = &ret_ops, }, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
static struct ins x86__instructions[] = { | ||
{ .name = "add", .ops = &mov_ops, }, | ||
{ .name = "addl", .ops = &mov_ops, }, | ||
{ .name = "addq", .ops = &mov_ops, }, | ||
{ .name = "addw", .ops = &mov_ops, }, | ||
{ .name = "and", .ops = &mov_ops, }, | ||
{ .name = "bts", .ops = &mov_ops, }, | ||
{ .name = "call", .ops = &call_ops, }, | ||
{ .name = "callq", .ops = &call_ops, }, | ||
{ .name = "cmp", .ops = &mov_ops, }, | ||
{ .name = "cmpb", .ops = &mov_ops, }, | ||
{ .name = "cmpl", .ops = &mov_ops, }, | ||
{ .name = "cmpq", .ops = &mov_ops, }, | ||
{ .name = "cmpw", .ops = &mov_ops, }, | ||
{ .name = "cmpxch", .ops = &mov_ops, }, | ||
{ .name = "dec", .ops = &dec_ops, }, | ||
{ .name = "decl", .ops = &dec_ops, }, | ||
{ .name = "imul", .ops = &mov_ops, }, | ||
{ .name = "inc", .ops = &dec_ops, }, | ||
{ .name = "incl", .ops = &dec_ops, }, | ||
{ .name = "ja", .ops = &jump_ops, }, | ||
{ .name = "jae", .ops = &jump_ops, }, | ||
{ .name = "jb", .ops = &jump_ops, }, | ||
{ .name = "jbe", .ops = &jump_ops, }, | ||
{ .name = "jc", .ops = &jump_ops, }, | ||
{ .name = "jcxz", .ops = &jump_ops, }, | ||
{ .name = "je", .ops = &jump_ops, }, | ||
{ .name = "jecxz", .ops = &jump_ops, }, | ||
{ .name = "jg", .ops = &jump_ops, }, | ||
{ .name = "jge", .ops = &jump_ops, }, | ||
{ .name = "jl", .ops = &jump_ops, }, | ||
{ .name = "jle", .ops = &jump_ops, }, | ||
{ .name = "jmp", .ops = &jump_ops, }, | ||
{ .name = "jmpq", .ops = &jump_ops, }, | ||
{ .name = "jna", .ops = &jump_ops, }, | ||
{ .name = "jnae", .ops = &jump_ops, }, | ||
{ .name = "jnb", .ops = &jump_ops, }, | ||
{ .name = "jnbe", .ops = &jump_ops, }, | ||
{ .name = "jnc", .ops = &jump_ops, }, | ||
{ .name = "jne", .ops = &jump_ops, }, | ||
{ .name = "jng", .ops = &jump_ops, }, | ||
{ .name = "jnge", .ops = &jump_ops, }, | ||
{ .name = "jnl", .ops = &jump_ops, }, | ||
{ .name = "jnle", .ops = &jump_ops, }, | ||
{ .name = "jno", .ops = &jump_ops, }, | ||
{ .name = "jnp", .ops = &jump_ops, }, | ||
{ .name = "jns", .ops = &jump_ops, }, | ||
{ .name = "jnz", .ops = &jump_ops, }, | ||
{ .name = "jo", .ops = &jump_ops, }, | ||
{ .name = "jp", .ops = &jump_ops, }, | ||
{ .name = "jpe", .ops = &jump_ops, }, | ||
{ .name = "jpo", .ops = &jump_ops, }, | ||
{ .name = "jrcxz", .ops = &jump_ops, }, | ||
{ .name = "js", .ops = &jump_ops, }, | ||
{ .name = "jz", .ops = &jump_ops, }, | ||
{ .name = "lea", .ops = &mov_ops, }, | ||
{ .name = "lock", .ops = &lock_ops, }, | ||
{ .name = "mov", .ops = &mov_ops, }, | ||
{ .name = "movb", .ops = &mov_ops, }, | ||
{ .name = "movdqa", .ops = &mov_ops, }, | ||
{ .name = "movl", .ops = &mov_ops, }, | ||
{ .name = "movq", .ops = &mov_ops, }, | ||
{ .name = "movslq", .ops = &mov_ops, }, | ||
{ .name = "movzbl", .ops = &mov_ops, }, | ||
{ .name = "movzwl", .ops = &mov_ops, }, | ||
{ .name = "nop", .ops = &nop_ops, }, | ||
{ .name = "nopl", .ops = &nop_ops, }, | ||
{ .name = "nopw", .ops = &nop_ops, }, | ||
{ .name = "or", .ops = &mov_ops, }, | ||
{ .name = "orl", .ops = &mov_ops, }, | ||
{ .name = "test", .ops = &mov_ops, }, | ||
{ .name = "testb", .ops = &mov_ops, }, | ||
{ .name = "testl", .ops = &mov_ops, }, | ||
{ .name = "xadd", .ops = &mov_ops, }, | ||
{ .name = "xbeginl", .ops = &jump_ops, }, | ||
{ .name = "xbeginq", .ops = &jump_ops, }, | ||
{ .name = "retq", .ops = &ret_ops, }, | ||
}; |
Oops, something went wrong.