我们正在尝试使用oprofile来跟踪服务器集群上的性能问题。但是,有问题的服务器有一个只读文件系统,其中 /var/tmp 是唯一可写的目录。
OProfile 想要在运行时创建两个目录:/root/.oprofile
和/var/lib/oprofile
,但它不能,因为文件系统是只读的。我可以使用--session-dir
命令行选项使其将日志写入./var/lib
/root/.oprofile
文件系统是只读的,因为它位于不可写介质上,而不是因为权限——即,即使是超级用户也不能写入这些目录。我们可以制作文件系统的新 ROM 映像(显然,这就是我们安装 oprofile 的方式),但是运行时程序无法写入 /root,无论它是否是超级用户。
我尝试在指向 /root/.oprofile -> /var/tmp/oprofile 的 ROM 中创建一个符号链接,但显然 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
?