aboutsummaryrefslogtreecommitdiffstats
path: root/trace-cmd.c
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-12-15 19:07:16 -0500
committerSteven Rostedt <rostedt@goodmis.org>2009-12-15 19:07:16 -0500
commita2fc047f34a527af7cc313a1f094ffa86e9cbc16 (patch)
tree10aa96dce3eb4706311c614f4d8e0517692659eb /trace-cmd.c
parent5c5678691b5e7ced2ff9b4cfa0aa8ea74cb3616d (diff)
trace-cmd: Add sleep_time between splice reads
I found that tracing few events causes trace-cmd to almost spin in a busy loop since it can constantly read a page, and the process of reading that page causes it to run again. We end up just causing events to read. This adds a -s sleep time option that forces trace-cmd to sleep. The default is 1ms. But it can be disabled with 0. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'trace-cmd.c')
-rw-r--r--trace-cmd.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/trace-cmd.c b/trace-cmd.c
index 0d53e8c..92008cd 100644
--- a/trace-cmd.c
+++ b/trace-cmd.c
@@ -51,7 +51,7 @@ unsigned int page_size;
51static const char *output_file = "trace.dat"; 51static const char *output_file = "trace.dat";
52 52
53static int latency; 53static int latency;
54 54static int sleep_time = 1000;
55static int cpu_count; 55static int cpu_count;
56static int *pids; 56static int *pids;
57 57
@@ -568,7 +568,7 @@ static int create_recorder(int cpu)
568 568
569 if (!recorder) 569 if (!recorder)
570 die ("can't create recorder"); 570 die ("can't create recorder");
571 tracecmd_start_recording(recorder); 571 tracecmd_start_recording(recorder, sleep_time);
572 tracecmd_free_recorder(recorder); 572 tracecmd_free_recorder(recorder);
573 573
574 exit(0); 574 exit(0);
@@ -631,12 +631,13 @@ void usage(char **argv)
631 printf("\n" 631 printf("\n"
632 "%s version %s\n\n" 632 "%s version %s\n\n"
633 "usage:\n" 633 "usage:\n"
634 " %s record [-e event][-p plugin] [-d] [-o file] [-O option ] [command ...]\n" 634 " %s record [-e event][-p plugin][-d][-o file][-s usecs][-O option ] [command ...]\n"
635 " -e run command with event enabled\n" 635 " -e run command with event enabled\n"
636 " -p run command with plugin enabled\n" 636 " -p run command with plugin enabled\n"
637 " -d disable function tracer when running\n" 637 " -d disable function tracer when running\n"
638 " -o data output file [default trace.dat]\n" 638 " -o data output file [default trace.dat]\n"
639 " -O option to enable (or disable)\n" 639 " -O option to enable (or disable)\n"
640 " -s sleep interval between recording (in usecs) [default: 1000]\n"
640 "\n" 641 "\n"
641 " %s start [-e event][-p plugin] [-d] [-O option ]\n" 642 " %s start [-e event][-p plugin] [-d] [-O option ]\n"
642 " Uses same options as record, but does not run a command.\n" 643 " Uses same options as record, but does not run a command.\n"
@@ -726,6 +727,9 @@ int main (int argc, char **argv)
726 option = optarg; 727 option = optarg;
727 set_option(option); 728 set_option(option);
728 break; 729 break;
730 case 's':
731 sleep_time = atoi(optarg);
732 break;
729 } 733 }
730 } 734 }
731 735