Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何更改perf sched记录中的输入文件名_Linux_Record_Perf - Fatal编程技术网

Linux 如何更改perf sched记录中的输入文件名

Linux 如何更改perf sched记录中的输入文件名,linux,record,perf,Linux,Record,Perf,我需要证明,当进程运行并且我删除了这个进程的ELF文件时,文件系统中的空闲块和节点的数量不会增加,在我杀死进程之后,它们会增加。我还需要显示此过程整个生命周期中的延迟,因此我使用perf shed record./Prog,但它会生成一个文件并保存记录结果,这会破坏我任务的第一部分。当我尝试(以root用户身份登录)使用时: 我明白了 Workload failed: permission denied 有人能告诉我如何更改其他文件系统中文件的输入文件吗?perf sched record没有

我需要证明,当进程运行并且我删除了这个进程的ELF文件时,文件系统中的空闲块和节点的数量不会增加,在我杀死进程之后,它们会增加。我还需要显示此过程整个生命周期中的延迟,因此我使用
perf shed record./Prog
,但它会生成一个文件并保存记录结果,这会破坏我任务的第一部分。当我尝试(以root用户身份登录)使用时:

我明白了

Workload failed: permission denied

有人能告诉我如何更改其他文件系统中文件的输入文件吗?

perf sched record
没有选项根据手册页更改输出文件(
-i
用于输入文件而不是目录)

但是!内置sched.c的
\u cmd\u record
调用内置sched.c的default
cmd\u record
,该内置sched.c具有指定输出文件的
-o
选项:

因此,您可以通过更改当前目录来更改
perf sched record
的目标路径,也可以尝试
perf sched record-o/mnt/disk1/perf.data./Prog&
。不要将目录名用作
-i
(报告输入)/
-o
(记录输出)性能选项的参数

Workload failed: permission denied
  -i, --input=<file>
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,
    };
    OPT_STRING('o', "output", &record.file.path, "file",
            "output file name"),