[Mono-list] Profiling is not working?

fsmac yves at mindset-media.com
Thu Aug 6 13:55:39 EDT 2009


Hi,

I've been trying to use profiling with mono to look at the performance of
our application. (We have an F# application that runs pretty fast on Windows
but is extremely slow on Linux or Mac OS X). I have tried a few different
invocations of profiling, the last one being:

    mono --profile=default:stat .....

On Linux, I some output but none is about my code and mono says 0 methods
compiled and 0 calls made. The following is mono's output.

prof counts: total/unmanaged: 182/175
     11	 6.08 % mono(mono_local_cprop
      9	 4.97 % mono(mono_method_to_ir
      8	 4.42 % mono(mono_local_regalloc
      7	 3.87 % /lib64/libc.so.6(memset
      6	 3.31 % mono(mono_local_deadce
      5	 2.76 % /lib64/libc.so.6(_int_malloc
      5	 2.76 % mono(mono_generic_inst_equal_full
      5	 2.76 % mono(mono_handle_global_vregs
      4	 2.21 % mono(mono_spill_global_vars
      4	 2.21 % /lib64/libc.so.6(bsearch
      4	 2.21 % mono(lookup_internal
      4	 2.21 % /lib64/libpthread.so.0(write
      4	 2.21 % /lib64/libpthread.so.0(pthread_mutex_lock
      4	 2.21 % mono(mono_peephole_ins
      4	 2.21 % /lib64/libglib-2.0.so.0(g_hash_table_lookup
      4	 2.21 % mono(mono_metadata_decode_row
      4	 2.21 % mono(get_method_token
      3	 1.66 % mono(mono_type_equal
      3	 1.66 % /lib64/libpthread.so.0(__pthread_mutex_unlock_usercnt
      3	 1.66 % /lib64/libglib-2.0.so.0(g_str_hash
      2	 1.10 % /lib64/libglib-2.0.so.0(g_slice_free_chain_with_offset
      2	 1.10 % /lib64/libc.so.6(__libc_calloc
      2	 1.10 % mono(mono_mempool_alloc
      2	 1.10 % mono(mono_class_init
      2	 1.10 % /lib64/libc.so.6(strcmp
      2	 1.10 % mono(mono_optimize_branches
      2	 1.10 % mono(mono_metadata_type_hash
      2	 1.10 % mono(get_hazardous_pointer
      2	 1.10 % mono(set_vreg_to_inst
      2	 1.10 % mono(table_locator
      2	 1.10 % /lib64/libc.so.6(__libc_malloc
      2	 1.10 % mono(mono_find_block_region
      2	 1.10 % mono(mono_arch_output_basic_block
      2	 1.10 % mono(do_mono_metadata_type_equal
      2	 1.10 % mono(get_basic_blocks
      1	 0.55 % /lib64/libglib-2.0.so.0(g_list_foreach
      1	 0.55 % mono(mono_if_conversion
      1	 0.55 % /lib64/libglib-2.0.so.0(g_list_insert_before
      1	 0.55 % mono(do_mono_metadata_parse_type
      1	 0.55 % mono(mono_codegen
      1	 0.55 % mono(get_call_info
      1	 0.55 % /lib64/libglib-2.0.so.0(g_realloc
      1	 0.55 % mono(GC_mark_from
      1	 0.55 % Mono.Xml2.XmlTextReader:ReadChar ()
      1	 0.55 % /lib64/libc.so.6(brk
      1	 0.55 % mono(find_method_icall
      1	 0.55 % mono(compute_dominators
      1	 0.55 % mono(move_basic_block_to_end
      1	 0.55 % mono(mono_metadata_parse_type_full
      1	 0.55 % mono(mono_loader_lock
      1	 0.55 % mono(emit_stloc_ir
      1	 0.55 % System.Configuration.PropertyInformationCollection:get_Item
(string)
      1	 0.55 % mono(g_direct_hash
      1	 0.55 % /lib64/libc.so.6(_int_free
      1	 0.55 % /lib64/libc.so.6(malloc_consolidate
      1	 0.55 % mono(inflate_generic_type
      1	 0.55 % System.Text.StringBuilder:Append (char)
      1	 0.55 % string:GetHashCode ()
      1	 0.55 % mono(check_call_signature
      1	 0.55 % mono(mono_metadata_decode_row_col
      1	 0.55 % /lib64/libglib-2.0.so.0(g_hash_table_insert
      1	 0.55 % mono(mono_get_method_from_token
      1	 0.55 % /lib64/libglib-2.0.so.0(g_atomic_int_exchange_and_add
      1	 0.55 % mono(mono_metadata_class_equal
      1	 0.55 % Mono.Globalization.Unicode.SimpleCollator:GetContraction
(string,int,int,Mono.Globalization.Unicode.Contraction[])
      1	 0.55 % mono(type_from_op
      1	 0.55 % mono(find_method_in_class
      1	 0.55 % mono(mono_varlist_sort
      1	 0.55 % mono(mono_decompose_vtype_opts
      1	 0.55 % /lib64/libglib-2.0.so.0(g_list_prepend
      1	 0.55 % mono(mono_metadata_string_heap
      1	 0.55 % /lib64/libc.so.6(_IO_old_init
      1	 0.55 % mono(mono_save_args
      1	 0.55 % mono(mono_object_new
      1	 0.55 % mono(mono_call_inst_add_outarg_reg
      1	 0.55 % mono(mono_class_vtable
      1	 0.55 % mono(mono_domain_get
      1	 0.55 % mono(mono_jit_compile_method
      1	 0.55 % mono(mono_metadata_parse_mh_full
      1	 0.55 % mono(setup_interface_offsets
      1	 0.55 % mono(mono_get_root_domain
      1	 0.55 % System.Text.StringBuilder:set_Length (int)
      1	 0.55 % mono(mono_analyze_liveness
      1	 0.55 % mono(emit_call_body
      1	 0.55 % 
Total time spent compiling 0 methods (sec): 0
Total number of calls: 0

Allocation profiler
Total memory allocated: 0 KB

for this version of mono:

% mono -V
Mono JIT compiler version 2.4 (tarball Wed Jun 17 17:53:35 EDT 2009)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
	TLS:           __thread
	GC:            Included Boehm (with typed GC)
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none

On Mac OS/X I get a SIGABRT:

**
ERROR:handles.c:497:_wapi_handle_new: assertion failed: (_wapi_has_shut_down
== FALSE)

** (Metrics.exe:7915): WARNING **: Thread 0x0 may have been prematurely
finalized
Stacktrace:


** (Metrics.exe:7915): WARNING **: Thread 0x0 may have been prematurely
finalized

** (Metrics.exe:7915): WARNING **: Thread 0x0 may have been prematurely
finalized

Native stacktrace:

	0   mono                                0x00081b29
mono_handle_native_sigsegv + 265
	1   libSystem.B.dylib                   0x93b5c2bb _sigtramp + 43
	2   ???                                 0xffffffff 0x0 + 4294967295
	3   libSystem.B.dylib                   0x93bd023a raise + 26
	4   libSystem.B.dylib                   0x93bdc679 abort + 73
	5   libglib-2.0.0.dylib                 0x00370e72 g_assertion_message +
258
	6   libglib-2.0.0.dylib                 0x003714e8 g_assertion_message_expr
+ 88
	7   mono                                0x0017ab82 _wapi_handle_new + 130
	8   mono                                0x001a04db _wapi_thread_duplicate +
203
	9   mono                                0x0017a0e5 DuplicateHandle + 101
	10  mono                                0x00160d49 mono_thread_attach + 201
	11  mono                                0x0013aa06
mono_profiler_coverage_get + 3398
	12  mono                                0x00139926 mono_profiler_shutdown +
38
	13  mono                                0x0000b202 mini_cleanup + 66
	14  mono                                0x00065f96 mono_main + 5670
	15  mono                                0x00001776 start + 54

Debug info from gdb:


=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================


Debug info from gdb:


=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

zsh: abort      mono --profile=default:stat Metrics.exe --help

% mono -V
Mono JIT compiler version 2.4 (tarball Wed May 27 21:40:43 PDT 2009)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
	TLS:           normal
	GC:            Included Boehm (with typed GC)
	SIGSEGV:       normal
	Notification:  Thread + polling
	Architecture:  x86
	Disabled:      none



How can I get profiling to work? The code was compiled on Windows using MS's
F# compiler (which does not work on mono right now).

Thanks for any help.
YA

-- 
View this message in context: http://www.nabble.com/Profiling-is-not-working--tp24834274p24834274.html
Sent from the Mono - General mailing list archive at Nabble.com.



More information about the Mono-list mailing list