我们正在尝试使用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
?
答案 0 :(得分:0)
我想它应该像覆盖HOME环境变量一样简单:
HOME=/tmp/fakehome sudo -E opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo
如果这不成功,你可以看看
创建可写覆盖图。您甚至可以在/ root上挂载tmpfs
,或者像这样简单的东西。
答案 1 :(得分:0)
事实证明,此目录已硬编码到opcontrol
bash脚本中:
# location for daemon setup information
SETUP_DIR="/root/.oprofile"
SETUP_FILE="$SETUP_DIR/daemonrc"
编辑这些行似乎或多或少都能正常工作。