- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要证明,当进程运行时,我删除了这个进程的 ELF 文件,文件系统中的空闲 block 和节点数不会增加,而在我终止进程后,它们会增加。我还需要显示此过程的整个生命周期中的延迟,因此我正在使用 perf shed record ./Prog
,但它会创建一个文件并在其中保存记录结果,这会破坏我任务的第一部分.当我尝试(以 root 身份登录)使用时:
perf sched record -i /mnt/disk1 ./Prog &
我明白了
Workload failed: permission denied
谁能告诉我如何更改其他文件系统中文件的输入文件?
最佳答案
根据手册页 http://man7.org/linux/man-pages/man1/perf-sched.1.html
perf sched record
没有更改输出文件的选项(-i
用于输入文件 而不是目录)
-i, --input=<file>
Input file name. (default: perf.data unless stdin is a fifo)
和实现: 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,
};
但是! builtin-sched.c 的 __cmd_record
调用 builtin_record.c 默认的 cmd_record
有 -o
选项指定输出文件: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"),
因此,您可以通过更改当前目录来更改 perf sched record
的目标路径,或者您可以尝试 perf sched record -o/mnt/disk1/perf.data ./Prog &
。不要将目录名称用作 -i
(报告输入)/-o
(记录输出)性能选项的参数。
关于linux - 如何更改 perf sched 记录中的输入文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43823954/
使用以下方法记录了一些统计数据: perf record -a -F 20 -o perf.data -e major-faults sleep 1800 并获得 perf.data ~ 1GiB,样
我在 ARM 板上的旧版本内核上运行 perf record。内核版本为3.18.21-rt19 板子上的perf版本同样是perf version 3.18.21。 虽然我可以在此性能上记录和使用报
与 perf (the Linux profiler) , (v4.15.18),我可以运行 perf stat $COMMAND 来获取命令的一些简单统计信息。如果我运行 perf record,它
尝试使用性能分析器。我已经安装了 linux 通用工具,但没有成功。这是我收到的消息: r@r-K55A:~$ perf WARNING: perf not found for kernel 3.16
perf stat -e 许多不同的事件通常会返回这样的输出 127.352.815.472 r53003c
假设我有一个线束二进制文件,它可以根据命令行选项产生不同的基准。我对采样这些基准非常感兴趣。 我有3个选择: 更改线束二进制文件以生成一个“性能记录”子进程,该子进程运行基准测试并进行采样 只需执行“
当我想使用 Linux 工具套件中的 perf-stat 和 perf-report 生成性能报告时 perf ,我跑: $ perf record -o my.perf.data myCmd $ p
我试图解释 perf-stat 在程序上运行的结果。我知道它是用 -r 30 和 -x 运行的。来自 https://perf.wiki.kernel.org/index.php/Tutorial是说
我使用 perf sched record 来记录一些东西。 我从 perf sched script 得到了一些context switch 事件 filebench 2646 [000] 211
当我从谷歌下载android源码4.3时,发现$AOSP/extenal/linux-tools-perf中已经存在perf源码。但是在我为模拟器编译项目之后,我没有在 system/bin 中找到'
我正在研究使用 Protractor 进行工具性能测试。我遇到了 browser-perf 和 protractor-perf。 protractor-perf 基于 browser-perf。 据我
我正在运行 kernel-5.0.9-200.fc29.x86_64(以及具有相同版本号的 perf 包)。 在下面的命令中,报告的 msec task-clock 远远大于 seconds user
我正在尝试使用 TraceCompass 以进一步调查我的系统跟踪。为此,您需要 CTF 格式,并且有两种可能的方法在 Linux 中获取它,afaik: 使用 LTTng 进行跟踪并使用 CTF 格
我正在使用 perf 分析一个玩具程序(选择排序),我想知道 perf 报告输出中的迭代对应什么。它显示的地址对应于内部循环和 if 语句。我希望有人能提供帮助。另外,当我将“-b --branch-
我遵循了现有 Stackoverflow 问题/答案提供的说明 Building Perf with Babeltrace (for Perf to CTF Conversion) 使用 Babelt
我正在浏览 linux 内核源代码中的 perf 源代码,以了解如何实现用户空间探测。我在很多地方都遇到过这种情况: zalloc(sizeof(struct __event_package) * n
我很清楚 perf 总是记录一个或多个事件,并且采样可以是基于计数器或基于时间的。但是当 -e 和 -F 开关没有给出时,perf record 的默认行为是什么? perf-record 的手册页没
运行时perf它找到了我的程序的内核符号和符号,但没有找到外部模块符号。我编写了一个内核模块,我使用 insmod 加载它我怎么知道perf也找到它的符号? 我正在运行 2.6.37.6 内核(无法升
我正在尝试学习如何在运行一些用 C 编写的基于 JNI 的共享库的 java 应用程序上使用 perf 动态跟踪。该库通过路径 /opt/myapp/lib/libmyapp.so 安装,然后使用选项
我用perf脚本命令查看perf.data文件的结果,但我不是很明白每一列的含义。例如,如果我有以下结果: perf 3198 [000] 13156.201238: bus-cycles: ff
我是一名优秀的程序员,十分优秀!