我们试图使用O形来跟踪服务器集群中的性能问题。但是,所讨论的服务器有一个只读文件系统,其中/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?
发布于 2011-11-01 23:56:28
我想它应该像重写HOME环境变量一样简单:
HOME=/tmp/fakehome sudo -E opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo如果不成功的话,你可以看看
若要创建可写覆盖,请执行以下操作。您甚至可以在tmpfs上挂载/root,或者类似的简单操作。
https://stackoverflow.com/questions/7974312
复制相似问题