Мы пытаемся использовать oprofile для отслеживания проблем производительности на кластере серверов. Однако рассматриваемые серверы имеют файловую систему только для чтения, где / var / tmp - единственный доступный для записи каталог.
OProfile хочет создавать две директории при каждом запуске: /root/.oprofile
и /var/lib/oprofile
, но не может, потому что файловая система доступна только для чтения. Я могу использовать опцию командной строки --session-dir
, чтобы она записывала свои журналы в другое место, кроме /var/lib
, но я не могу найти такую опцию, чтобы она использовала какой-то другой каталог, кроме /root/.oprofile
.
Файловая система доступна только для чтения, потому что она находится на неперезаписываемом носителе, а не из-за разрешений, т. Е. Даже суперпользователь не может записывать в эти каталоги. Мы можем приготовить новый образ ПЗУ файловой системы (очевидно, именно так мы и установили oprofile), но у исполняющей программы нет возможности записи в / root, независимо от того, является ли она суперпользователем или нет.
Я попытался создать символическую ссылку в ПЗУ, которая указывает /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
?