2017-05-06 3 views
0

Ich muss beweisen, dass wenn Prozess läuft und ich die ELF-Datei dieses Prozesses Anzahl der freien Blöcke und Knoten im Dateisystem wird nicht zunehmen, und nachdem ich den Prozess zu töten sie erhöhen sich. Ich muss auch Latenz im gesamten Lebenszyklus dieses Prozesses zeigen, also verwende ich perf shed record ./Prog, aber es macht eine Datei und speichert dort Ergebnisse der Aufzeichnung und das zerstört meinen ersten Teil meiner Aufgabe. Wenn ich (angemeldet als root) versuchen, zu verwenden:Wie ändere ich den Namen der Eingabedatei in performed Datensatz

perf sched record -i /mnt/disk1 ./Prog & 

ich

Workload failed: permission denied 

Kann mir jemand sagen, wie die Eingabedatei auf Datei zu ändern, die in anderem Dateisystem ist?

Antwort

0

perf sched record hat keine Option Ausgabedatei zu ändern (-i ist für die Eingabe Datei nicht Verzeichnis) nach Manpage http://man7.org/linux/man-pages/man1/perf-sched.1.html

-i, --input=<file> 

Eingabedateinamen. (Standard: perf.data es sei denn, stdin ist ein Fifo)

und zur Umsetzung: http://elixir.free-electrons.com/linux/v4.8/source/tools/perf/builtin-sched.c#L1896

tools/perf/builtin-sched.c 
static int __cmd_record(int argc, const char **argv) 
{ 
    unsigned int rec_argc, i, j; 
    const char **rec_argv; 
    const char * const record_args[] = { 
     "record", 
     "-a", 
     "-R", 
     "-m", "1024", 
     "-c", "1", 
     "-e", "sched:sched_switch", 
     "-e", "sched:sched_stat_wait", 
     "-e", "sched:sched_stat_sleep", 
     "-e", "sched:sched_stat_iowait", 
     "-e", "sched:sched_stat_runtime", 
     "-e", "sched:sched_process_fork", 
     "-e", "sched:sched_wakeup", 
     "-e", "sched:sched_wakeup_new", 
     "-e", "sched:sched_migrate_task", 
    }; 
... 
    return cmd_record(i, rec_argv, NULL); 
} 

int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused) 
{ 
    const struct option sched_options[] = { 
    OPT_STRING('i', "input", &input_name, "file", 
      "input file name"), 
    OPT_INCR('v', "verbose", &verbose, 
      "be more verbose (show symbol address, etc)"), 
    OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, 
      "dump raw trace in ASCII"), 
    OPT_END() 
    }; 
....  

static int perf_sched__read_events(struct perf_sched *sched) 
{ 
... 
    struct perf_data_file file = { 
     .path = input_name, 
     .mode = PERF_DATA_MODE_READ, 
     .force = sched->force, 
    }; 

Aber! Die __cmd_record von builtin-sched.c nennt Standard cmd_record von builtin_record.c die -o Option muss Ausgabedatei angeben: http://elixir.free-electrons.com/linux/v4.8/source/tools/perf/builtin-record.c#L1380

OPT_STRING('o', "output", &record.file.path, "file", 
      "output file name"), 

So können Sie Zielpfad für perf sched record von aktuellen Verzeichnis zu ändern, oder Sie können ändern versuchen perf sched record -o /mnt/disk1/perf.data ./Prog &. Verwenden Sie den Verzeichnisnamen nicht als Argument von -i (Eingabe für Bericht)/-o (Ausgabe für Datensatz) Perf-Optionen.

Verwandte Themen