Linux 是否可以使oprofile使用/root/.oprofile以外的目录?

Linux 是否可以使oprofile使用/root/.oprofile以外的目录?,linux,profiling,oprofile,Linux,Profiling,Oprofile,我们正在尝试使用跟踪服务器群集上的性能问题。但是,所讨论的服务器有一个只读文件系统,其中/var/tmp是唯一的可写目录 OProfile希望在运行时创建两个目录:/root/.OProfile和/var/lib/OProfile,但它不能,因为文件系统是只读的。我可以使用--session dir命令行选项使其将日志写入/var/lib以外的其他目录,但我找不到任何这样的选项使其使用/root/.oprofile以外的其他目录 文件系统是只读的,因为它位于不可写的介质上,而不是因为权限——也就

我们正在尝试使用跟踪服务器群集上的性能问题。但是,所讨论的服务器有一个只读文件系统,其中/var/tmp是唯一的可写目录

OProfile希望在运行时创建两个目录:
/root/.OProfile
/var/lib/OProfile
,但它不能,因为文件系统是只读的。我可以使用
--session dir
命令行选项使其将日志写入
/var/lib
以外的其他目录,但我找不到任何这样的选项使其使用
/root/.oprofile
以外的其他目录

文件系统是只读的,因为它位于不可写的介质上,而不是因为权限——也就是说,甚至超级用户都不能写入这些目录。我们可以制作文件系统的新ROM映像(显然,这就是我们安装oprofile的方式),但运行时程序无法写入/root,无论它是否为超级用户

我尝试在ROM中创建指向/root/.oprofile->/var/tmp/oprofile的符号链接,但显然oprofile不将此符号链接视为目录,并且在运行时失败:

redacted@redacted:~$ sudo opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo
mkdir: cannot create directory `/root/.oprofile': File exists
Couldn't mkdir -p /root/.oprofile
我们必须在这个特定的系统上运行探查器,因为如果我们在开发服务器上构建和运行应用程序,我们试图调查的性能问题不会显现出来。我们不能在程序员的工作站上运行测试并在那里分析应用程序,因为问题不会发生在那里


是否有某种方法可以配置oprofile,使其不使用
/root

我想它应该像重写HOME环境变量一样简单:

HOME=/tmp/fakehome sudo -E opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo
如果不行,你可以看看

  • 工会
  • AUF

创建可写覆盖。您甚至可以在/root上挂载
tmpfs
,或者类似的简单操作

结果表明,此目录已硬编码到
opcontrol
bash脚本中:

  # location for daemon setup information
    SETUP_DIR="/root/.oprofile"
    SETUP_FILE="$SETUP_DIR/daemonrc"

编辑这些行似乎或多或少能让它正常工作。

在符号链接“不可接受的行为”上:您可能会向上游报告该行为-显然他们在那里使用了错误的
stat
/
lstat
。不允许符号链接可能有安全方面的考虑,但我现在很难想出一个(运行
oprofile
实际上要求您处于上帝模式)