Мне нужно отладить какую-то проблему на производственный сервер, и я пытаюсь решить, использовать ли Strace или библиотека журналов log4cxx; одна важная характеристика, которую мне нужно знать раньше, это какая из двух будет иметь меньшее влияние на производительность (в основном скорость)?
Для Strace, Я планирую создать командную строку примерно так:
strace -p PID -tt -f -e SOME,SELECTED,SYSCALLS -o FILENAME
# or maybe with "-ff" instead? which one would be faster?
Для log4cxx, для простоты мы, вероятно, можем предположить, что я вызываю функции регистрации непосредственно перед выполнением каждого системного вызова, который я хочу отслеживать. Предположим, версия log4cxx-0.10.0, 64 бит.
Если вы предлагаете провести эталонное тестирование самостоятельно, я был бы признателен за помощь в написании эталонных тестов.
Strace использует умеренно дорогой механизм, в то время как ведение журнала обычно более легкое. Тем не менее, одна вещь, на которую следует обратить внимание, - это самостоятельное ведение журнала, которое использует синхронную запись без большой буферизации. Это заставляет приложение ждать, пока завершается запись в журнал для каждой зарегистрированной операции. Коллега сделал это однажды, измеряя производительность, и поинтересовался, почему его производительность внезапно стала такой плохой (;-))
--дэйв