PIN-инструмент не работает на Postgresql - PullRequest
0 голосов
/ 14 октября 2011

Я использую PIN-инструмент, чтобы отслеживать, сколько памяти читает и записывает во время выполнения SQL-запроса. Однако произошло нечто странное. Адреса памяти в pinatrace.out для чтения / записи, полученные при запуске

./pin -t pinatrace.so -- /usr/local/pgsql/bin/psql postgres < tmp.sql

... не будет совпадать с адресами памяти, которые я напечатал из postgresql.

Я добавил несколько строк в исходный код postgresql для распечатки адресов некоторых фиктивных указателей. Он распечатал адреса памяти в журнале, как я и ожидал, но адреса не могут быть найдены в «pinatrace.out», который содержит все адреса памяти, к которым был получен доступ при подключении pin к psql.

Однако, когда я копирую те же строки печатных адресов фиктивных указателей в простой файл test.c и запускаю

./pin -t pinatrace.so -- ./test

... адреса из вывода на экран можно найти в pinatrace.out.

Оба теста были запущены postgres, так как я меняю владельца PIN на postgres.

Я действительно озадачен. Может ли кто-то быть достаточно добрым, чтобы указать, что происходит? Postgres выделяет память по-другому, или я могу неправильно запустить pin-код? Любые мысли помогут!

Пожалуйста, дайте мне знать, если вы хотите, чтобы я уточнил вопрос дальше.

1 Ответ

1 голос
/ 14 октября 2011

psql и сервер postgresql никогда не разделяют память, даже если они работают под одним и тем же пользователем: все их взаимодействие осуществляется через сокет.Если вы хотите выяснить, как серверный бэкэнд обращается к памяти, вам нужно подключить трассировщик к бэкэнд-процессу, а не к psql.

При подключении с помощью psql создается новый бэкэнд-процесс, который посвящен этому.подключение.Таким образом, вы можете позвонить по номеру pg_backend_pid() из этого psql и найти идентификатор процесса для присоединения, если PIN Tool поддерживает это (например, как делает GDB).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...