我们正在尝试使用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
如果仍然无法解决问题,您可以看看
工会
奥夫斯
创建可写的叠加层。您甚至可以将
tmpfs
挂载到/ root或类似的简单文件中。