[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