[tor-dev] CPU utilization for relay
swsnyder at snydernet.net
swsnyder at snydernet.net
Fri Jul 15 18:38:59 UTC 2011
Mike Perry wrote:
>Thus spake swsnyder at snydernet.net (swsnyder at snydernet.net):
>
>> FYI, this is a profile of my Tor v0.2.2.30-rc relay, taken in a 10-minute sampling:
>>
>> CPU: CPU with timer interrupt, speed 0 MHz (estimated)
>> Profiling through timer interrupt
>> samples % linenr info symbol name
>> 3126 29.7290 cast-586.s:9 CAST_encrypt
>
>Can you attach gdb to your relay and set a breakpoint for
>CAST_encrypt? We have no idea why this function should be called at
>all (unless it is for something like reading keyfiles off disk?) let
>alone dominate your profile output.
I didn't break on CAST_encrypt() either in a running process or in tor started from a gdb command line. Either way, I could set a breakpoint on the symbol but never actually got there.
I think the symbols were screwed-up from building Tor with GCC's Profile Guided Optimization. When I built the same code without PGO I get this from another 10-minute run:
CPU: CPU with timer interrupt, speed 0 MHz (estimated)
Profiling through timer interrupt
samples % linenr info symbol name
2386 58.6241 x86-mont.s:8 bn_mul_mont
262 6.4373 aes-586.s:269 _sse_AES_encrypt_compact
207 5.0860 sha1-586.s:8 sha1_block_data_order
199 4.8894 aes-586.s:424 _x86_AES_encrypt
189 4.6437 aes-586.s:1610 _x86_AES_decrypt
55 1.3514 aes.c:329 aes_crypt_inplace
48 1.1794 di_ops.c:97 tor_memeq
Breakpoints *do* hit on bn_mul_mont(). I assume the reduced number of samples is a result of only having half as many active connection as the prior profiling run.
Thanks for the reply.
More information about the tor-dev
mailing list