Можно ли заставить oprofile использовать каталог, отличный от /root/.oprofile? - PullRequest
0 голосов
/ 02 ноября 2011

Мы пытаемся использовать 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?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

Оказывается, этот каталог жестко запрограммирован в сценарии opcontrol bash:

  # location for daemon setup information
    SETUP_DIR="/root/.oprofile"
    SETUP_FILE="$SETUP_DIR/daemonrc"

Редактирование этих строк, похоже, работало, более или менее.

0 голосов
/ 02 ноября 2011

Я думаю, это должно быть так же просто, как переопределить переменную среды HOME:

HOME=/tmp/fakehome sudo -E opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo

Если это не сработает, вы можете взглянуть на

  • UnionFS
  • AUFS

для создания записываемого наложения. Вы даже можете просто смонтировать tmpfs в / root или что-то в этом роде.

...