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.

_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to