|
From: Christoph B. <bar...@or...> - 2006-10-24 14:27:22
|
Am Dienstag, 24. Oktober 2006 15:55 schrieb Julian Seward:
> > CPU: AMD64 processors, speed 2605.94 MHz (estimated)
> > Counted CPU_CLK_UNHALTED events (Cycles outside of halt state) with a
> > unit mask of 0x00 (No unit mask) count 100000
> > samples % symbol name
> > 11007731 91.2732 vgPlain_record_ExeContext
>
> Gaaah! If that's true it is really bad. What is the inner loop
> of your application doing?
I would not say that it does something weird. Here is a basic outline of the
inner loop that gets a binary tree as input:
while (tree.has_leaf()) {
for each (buffer/inverter)
check_merge_timing(leaf, leaf->parent)
}
for 2401 possibilites
check_root_connect
check_merge_timing and check_root_connect are functions that spend 95% of
their time in extracting function approximations from a 2-dim lookup table.
Here is the exact count of malloc/free after 19hours in valgrind:
==00:19:53:01.364 9133== malloc/free: 98,138,916 allocs, 97,052,020 frees,
18,848,731,867 bytes allocated.
The run has been killed with STRG+C
And finally an oprofile output during the initialization phase of the
application:
Counted CPU_CLK_UNHALTED events (Cycles outside
warning: /boot/vmlinux-2.6.13-15.12-smp.gz is n
samples % symbol name
7836011 41.8869 (no symbols)
1049427 5.6096 vgPlain_arena_free
758054 4.0521 (no symbols)
722585 3.8625 set_address_range_perms
687323 3.6740 vgMemCheck_helperc_LOADV64le
665990 3.5600 vgMemCheck_helperc_STOREV64le
663955 3.5491 vgModuleLocal_search_one_cfit
584375 3.1237 vgPlain_run_innerloop__dispat
519607 2.7775 vgMemCheck_helperc_MAKE_STACK
476431 2.5467 doRegisterAllocation
297077 1.5880 mc_new_mem_stack_8
274416 1.4669 mc_die_mem_stack_8
241299 1.2898 vgMemCheck_helperc_STOREV8
238227 1.2734 vgPlain_unknown_SP_update
229308 1.2258 (no symbols)
206303 1.1028 unlinkBlock
197175 1.0540 vgPlain_use_CF_info
188233 1.0062 vgPlain_arena_malloc
160315 0.8570 mc_expensive_sanity_check
150404 0.8040 vgMemCheck_helperc_LOADV8
140847 0.7529 vgMemCheck_check_mem_is_noacc
132725 0.7095 vgPlain_scheduler
113339 0.6058 vgPlain_search_transtab
97279 0.5200 (no symbols)
94171 0.5034 get_secmap_ptr
93965 0.5023 vgPlain_record_ExeContext
88662 0.4739 vgMemCheck_helperc_LOADV32le
81197 0.4340 amd64g_calculate_rflags_all_W
69063 0.3692 vgPlain_run_innerloop
64332 0.3439 mkInuseBlock
57323 0.3064 vgPlain_free
53945 0.2884 blockSane
53554 0.2863 arenaId_to_ArenaP
49555 0.2649 vgMemCheck_helperc_STOREV32le
The image name for the first symbol is
anon (tgid:15483 range:0x4029a5000-0x40f2f2000)
and for the second
anon (tgid:15483 range:0x4029a5000-0x41243c000)
One can see that during initialization the application seems to behave
normally.
Christoph Bartoschek
|