Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-05 Thread Massimiliano Mantione

On Sun, 2008-08-03 at 21:57 +0200, Andreas Färber wrote:
 What I will be looking into next is method-enter/method-exit probes  
 for tracing managed function flow, but it seems more complicated (the  
 JIT would need to always emit a call to a helper function, supplying  
 it the data to conditionally pass out - otherwise the dynamic part of  
 DTrace wouldn't work) and thus cannot be on by default for performance  
 reasons, just like in Java.

IMO, the correct way of doing this would be to implement it in a
profiler module, and it's amazingly easy doing so.

But actually the logging profiler does just that if you invoke it with
the c option: it logs all method enter and exit events.
It uses per-thread buffers (periodically flushed) to minimize overhead
and locking, each event takes between 2 and 5 bytes in the log file
(including the full timestamp!), and even this way the overhead is
really high.
I doubt dtrace could be any faster... but if it is I'd like to know how
it does it :-)

What the profiler misses, in this case, is a GUI that is oriented
towards browsing the log, maybe with a timeline, showing the threads
in parallel, and with a filter and fast search functions...

The data is all in the log, the problem is those log files can take
several hundreds of Mb on disk (with the events compacted that way), so
IMO keeping all the data in RAM in the GUI would be the wrong approach
(because each event would take much more than 5 bytes!).
This is the main reason why this kind of tool has not yet been written:
doing it well for the general case (a typical program run during more
than ten minutes) is not trivial.

But if you need only one line in a text file for each method enter-exit,
take the Mono.Profiler code, put a couple of WriteLine inside
MethodEnter and MethodExit in the EventProcessor, be sure to print also
stack.Depth, and you have your trace :-)
As a bonus, if you want to be able to distinguish threads, also print
stack.ThreadId.
It is worse than mono --trace because you don't have the method
arguments, but it is much more efficient during execution so there are
more cases when this is actually doable.

I *know* this is not dtrace, it does not profile the whole system but
only Mono... but this works also on Linux.

Ciao,
  Massi


___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-05 Thread Andreas Färber
Ciao Massi,

Am 05.08.2008 um 08:23 schrieb Massimiliano Mantione:


 On Sun, 2008-08-03 at 21:57 +0200, Andreas Färber wrote:
 What I will be looking into next is method-enter/method-exit probes
 for tracing managed function flow, but it seems more complicated (the
 JIT would need to always emit a call to a helper function, supplying
 it the data to conditionally pass out - otherwise the dynamic part of
 DTrace wouldn't work) and thus cannot be on by default for  
 performance
 reasons, just like in Java.

 IMO, the correct way of doing this would be to implement it in a
 profiler module, and it's amazingly easy doing so.

Although not really familiar with it, I am aware of the existing cross- 
platform tracing and profiling mechanisms in Mono. (The JIT profiling  
DTrace probes mostly match Mono's own hooks except that I reported  
some profiler hooks were missing for generic sharing and when some  
optimizations were not run - I got no reply to that, maybe you want to  
check on that.)

DTrace is a different paradigm...

 But actually the logging profiler does just that if you invoke it with
 the c option: it logs all method enter and exit events.
 It uses per-thread buffers (periodically flushed) to minimize overhead
 and locking, each event takes between 2 and 5 bytes in the log file
 (including the full timestamp!), and even this way the overhead is
 really high.
 I doubt dtrace could be any faster... but if it is I'd like to know  
 how
 it does it :-)

...currently, having to start mono with the DTrace tool as documented  
is an intermediate step - the final goal is to deploy a runtime with  
DTrace compiled in, no probes activated at startup. Then when  
something goes wrong, e.g. while running ASP.NET with mod_mono, you  
connect to the mono pid (or to all running mono instances) and see  
what's going on.

What DTrace is doing afaik is it pre-compiles the D script to bytecode  
and it has per-CPU buffers. Unless I activate a certain probe, no data  
gets collected for it. Even if activated (i.e., called and data passed  
into), the script can use predicates to minimize the data collected to  
that of interest (e.g., only profile compilation of method starting  
with A), and built-in aggregation functions can further reduce the  
amount of data actually kept (e.g., a histogram). So this means that  
the actual if (enabled) needs to be different, and I wouldn't want  
to mess with the semantics of the cross-platform mechanism.

Personally, I have used DTrace for my thesis on H.264 SVC streaming,  
and being under great time pressure DTrace has allowed me to get the  
statistics I wanted with a minimum of work - for absolute numbers I  
got histograms directly in GNUplot format, for a cumulative  
distribution function I postprocessed the output with an existing Mono  
tool of mine (probably there's an easier way too but I'm no expert).
http://www.informatik.uni-mannheim.de/pi4/publications/Faerber2008a  
(pp. 14ff)

Anyway, believing that DTrace will be slightly faster, I have taken  
care to place the DTrace probes enclosed by Mono's hooks (e.g., start  
profiler hook, start DTrace probe, whatever, end DTrace probe, end  
profiler hook) and would ask that we stick with this order. It should  
not have any influence when DTrace is not compiled in (e.g., Linux) as  
my macros become no-op then.

I don't wish to replace or belittle your profiler work. I think the  
two have different scopes and different use cases and can live side by  
side, even benefitting from increased review.

Andreas

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-05 Thread Massimiliano Mantione

On Tue, 2008-08-05 at 12:26 +0200, Andreas Färber wrote:
  IMO, the correct way of doing this would be to implement it in a
  profiler module, and it's amazingly easy doing so.
 [...]
 I don't wish to replace or belittle your profiler work. I think the  
 two have different scopes and different use cases and can live side by  
 side, even benefitting from increased review.

Don't worry, I did not take your post that way.
I *know* dtrace is a different thing, even if I have never used it.

I was trying to say the following:

[1] If you want dtrace hooks for every enter-exit method, the easiest
way to implement them is inside a profiler module that uses the
existing enter-exit profiling hooks.
This has its downsides: you must start the runtime enabling this dtrace
profiler module, and at this point the overhead is not zero.
However it seems so easy to do that it could be useful anyway if you
need the feature now instead of in a few weeks or months.

[2] Anyway, if you want to extend the JIT to insert enter and exit
empty dtrace hooks to every method, it's very likely that you should
reuse (and extend) the existing prologue-epilogue instrumentation code
instead of trying to reinvent it.

[3] As nice as dtrace can be, we don't have it on Linux, and our main
focus is Linux. Here, the easiest way you have to log all enter-exit
events efficiently is the c option of the logging profiler, so I
explained how to use it for that purpose in case somebody needed it now.

Of course the logging profiler is not dtrace :-)
And of course there's place for both in the world...

My points [1] and [2] are suggestions on how to get those dtrace hooks
into Mono, point [3] is about how to get something similar without using
dtrace.

Anyway, I get your point that dtrace hooks are conditional, and the
conditions can be given dynamically as D scripts.
This is something we miss in Mono-land, and can cut the event bandwidth
significantly.
So, to answer my question, maybe dtrace would be slower than the logging
profiler in logging individual enter-exit events, but typically when
using dtrace you will never ask the system to log *all* of them, you
will select them with a D script, so the resulting event bandwidth will
be much slower and the performance acceptable.
Did I get it right?

Thanks!
  Massi


___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-03 Thread Andreas Färber
Hi,

Are you talking of the once announced binary snapshots of trunk  
Mono.framework, so that you would make some Novell-internal setting to  
configure with --enable-dtrace?

Or do you suggest me to change trunk's configure.in to enable DTrace  
when specifically Mac OS X v10.5+ is detected and no --disable-dtrace  
was passed? Changes other than that I am skeptical about.

Btw Universal Binaries shouldn't be a problem, since iirc you use lipo  
to combine two separate builds and the mono.d file would be platform- 
independent so no special handling necessary.

Andreas

Am 02.08.2008 um 20:14 schrieb Geoff Norton:

 Zoltan,

  I'm fine with this on trunk, but I still think barring any compelling
 reason we should leave the branch as is.

 -g

 On Sat, 2008-08-02 at 19:20 +0200, Zoltan Varga wrote:
 Hi,

  Looking at dtrace.h, all the current probes seem to be in
 non-critical code-paths, so they
 are unlikely to have a perf impact. We could make --enable- 
 dtrace=true
 the default in HEAD,
 so it gets some testing.

  Zoltan

 On Sat, Aug 2, 2008 at 7:16 PM, Geoff Norton [EMAIL PROTECTED]  
 wrote:
 On Sat, 2008-08-02 at 18:30 +0200, Andreas Färber wrote:

 Not fully true, there is of course a minimal degradation (~5 nop
 instructions on Solaris), but it should be hardly noticeable. I  
 have
 taken care to only call helper functions when the probe is active.

 Was the answer on IRC in any way official? I could think of three
 possible reasons:

 a) Worries about performance degradation.

 Yes

 b) No one updated the build system.

 True but minor

 c) The build machine isn't DTrace-capable.

 d) We havn't tested it fully in our QA process, nor has it been
 available long enough for us to feel comfortable turning it on at  
 this
 stage.  We also would need to invesgate how to do it in our  
 universal
 binaries, etc.  Its a lot of testing and it unfortunately will not  
 make
 2.0 unless there is a compelling argument against this and support  
 from
 the runtime team and from the QA team.

 -g


 ___
 Mono-devel-list mailing list
 Mono-devel-list@lists.ximian.com
 http://lists.ximian.com/mailman/listinfo/mono-devel-list



___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-03 Thread Zoltan Varga
Hi,

  On mono HEAD, dtrace is now enabled under solaris and macosx if the
dtrace utility is
detected by configure.

   Zoltan

On Sun, Aug 3, 2008 at 4:08 PM, Andreas Färber [EMAIL PROTECTED] wrote:
 Hi,

 Are you talking of the once announced binary snapshots of trunk
 Mono.framework, so that you would make some Novell-internal setting to
 configure with --enable-dtrace?

 Or do you suggest me to change trunk's configure.in to enable DTrace when
 specifically Mac OS X v10.5+ is detected and no --disable-dtrace was passed?
 Changes other than that I am skeptical about.

 Btw Universal Binaries shouldn't be a problem, since iirc you use lipo to
 combine two separate builds and the mono.d file would be
 platform-independent so no special handling necessary.

 Andreas

 Am 02.08.2008 um 20:14 schrieb Geoff Norton:

 Zoltan,

  I'm fine with this on trunk, but I still think barring any compelling
 reason we should leave the branch as is.

 -g

 On Sat, 2008-08-02 at 19:20 +0200, Zoltan Varga wrote:

 Hi,

  Looking at dtrace.h, all the current probes seem to be in
 non-critical code-paths, so they
 are unlikely to have a perf impact. We could make --enable-dtrace=true
 the default in HEAD,
 so it gets some testing.

 Zoltan

 On Sat, Aug 2, 2008 at 7:16 PM, Geoff Norton [EMAIL PROTECTED] wrote:

 On Sat, 2008-08-02 at 18:30 +0200, Andreas Färber wrote:

 Not fully true, there is of course a minimal degradation (~5 nop
 instructions on Solaris), but it should be hardly noticeable. I have
 taken care to only call helper functions when the probe is active.

 Was the answer on IRC in any way official? I could think of three
 possible reasons:

 a) Worries about performance degradation.

 Yes

 b) No one updated the build system.

 True but minor

 c) The build machine isn't DTrace-capable.

 d) We havn't tested it fully in our QA process, nor has it been
 available long enough for us to feel comfortable turning it on at this
 stage.  We also would need to invesgate how to do it in our universal
 binaries, etc.  Its a lot of testing and it unfortunately will not make
 2.0 unless there is a compelling argument against this and support from
 the runtime team and from the QA team.

 -g


 ___
 Mono-devel-list mailing list
 Mono-devel-list@lists.ximian.com
 http://lists.ximian.com/mailman/listinfo/mono-devel-list




___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-03 Thread Andreas Färber
Hi,

Am 03.08.2008 um 16:52 schrieb Zoltan Varga:

  On mono HEAD, dtrace is now enabled under solaris and macosx if the
 dtrace utility is
 detected by configure.

Looks okay to me.

In this form it would even allow to build with DTrace enabled on  
pre-10 Solaris once the tool becomes available there. Let's just hope  
my Solaris build script doesn't break too soon...

Andreas

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-03 Thread Boris Dušek
Hi Andreas,

On Sat, Aug 2, 2008 at 6:30 PM, Andreas Färber [EMAIL PROTECTED] wrote:
 I grabbed the Mono Preview 2.0 installer for OS X and wanted to test
 new DTrace probes mentioned in Release Notes[1], but it did not work.

 Just to be sure, how did you test? As described in mono's man page?

With the same command that worked with mono that I compiled myself.
(with one difference - I used '/path/to/mono' for customly compiled
mono since my install prefix binary dir was not in $PATH):

[EMAIL PROTECTED]:~/Documents/dev/mono/usr/bin$ sudo dtrace -P
mono'$target' -l -c mono
   ID   PROVIDERMODULE  FUNCTION NAME
dtrace: failed to match mono3618 No probe matches description

[EMAIL PROTECTED]:~/Documents/dev/mono/usr/bin$ sudo dtrace -P
mono'$target' -l -c ./mono
   ID   PROVIDERMODULE  FUNCTION NAME
20188   mono3620  mono   mono_gc_collect gc-begin
20189   mono3620  mono   mono_gc_collect gc-end
21858   mono3620  mono   mini_method_compile
method-compile-begin
21859   mono3620  mono   mini_method_compile
method-compile-end
21860   mono3620  mono mini_init
ves-init-begin
21861   mono3620  mono mini_init
ves-init-end

btw. while we are at it, is it already possible now or do you plan to
add jstack support (so that the names of .NET functions appear
instead of addresses of frames for the part inside mono runtime?)

right now, with this Hello World program:

class Test {
public static void Main(string[] args) {
System.Console.WriteLine(Hello from C#);
}
}

and this tracing script (tracing usermode stack at every write syscall):

syscall::write:entry
/pid == $target/
{
trace(arg0);
jstack();
}

I get this output which makes me believe it's either not implemented
or I am doing something wrong (both writes are to fd 1 = stderr):

[EMAIL PROTECTED]:~/Documents/dev/mono/usr/bin$
DYLD_LIBRARY_PATH=`pwd`/../lib sudo dtrace -s tracemono.d -c './mono
/Users/boris/Test.exe'
dtrace: script 'tracemono.d' matched 1 probe
Hello from C#
dtrace: pid 1528 has exited
CPU IDFUNCTION:NAME
  1  17600  write:entry 1
  libSystem.B.dylib`write$UNIX2003+0xa
  mono`ves_icall_System_IO_MonoIO_Write+0x66
  0x7d6084
  0x7d5d60
  0x7d5bae
  0x7d5ae6
  0x7cc8cd
  0x7d4ed8
  0x7d4e6e
  0x7d4df8
  0x7d4db6
  0x7ca289
  0x7ca24b
  0x7ca1ce
  mono`mono_runtime_exec_main+0xfe
  mono`mono_runtime_run_main+0x153
  mono`mono_main+0x1360
  mono`start+0x36
  0x2

  1  17600  write:entry 1
  libSystem.B.dylib`write$UNIX2003+0xa
  mono`ves_icall_System_IO_MonoIO_Write+0x66
  0x7d6084
  0x7d5d60
  0x7d5bae
  0x7d5ae6
  0x7cc8cd
  0x7d63bf
  0x7d61bd
  0x7d614e
  0x7d6128
  0x7d4e0a
  0x7d4db6
  0x7ca289
  0x7ca24b
  0x7ca1ce
  mono`mono_runtime_exec_main+0xfe
  mono`mono_runtime_run_main+0x153
  mono`mono_main+0x1360
  mono`start+0x36
  0x2

Tracing Java in this way yields empty trace, so probably it's me doing
something stupid.

Thanks,
Boris
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-03 Thread Andreas Färber

Hi Boris,

Am 03.08.2008 um 17:32 schrieb Boris Dušek:

On Sat, Aug 2, 2008 at 6:30 PM, Andreas Färber  
[EMAIL PROTECTED] wrote:

I grabbed the Mono Preview 2.0 installer for OS X and wanted to test
new DTrace probes mentioned in Release Notes[1], but it did not  
work.


Just to be sure, how did you test? As described in mono's man page?


With the same command that worked with mono that I compiled myself.
(with one difference - I used '/path/to/mono' for customly compiled
mono since my install prefix binary dir was not in $PATH):

[EMAIL PROTECTED]:~/Documents/dev/mono/usr/bin$ sudo dtrace -P
mono'$target' -l -c mono
  ID   PROVIDERMODULE  FUNCTION  
NAME

dtrace: failed to match mono3618 No probe matches description

[EMAIL PROTECTED]:~/Documents/dev/mono/usr/bin$ sudo dtrace -P
mono'$target' -l -c ./mono
  ID   PROVIDERMODULE  FUNCTION  
NAME
20188   mono3620  mono   mono_gc_collect  
gc-begin
20189   mono3620  mono   mono_gc_collect  
gc-end

21858   mono3620  mono   mini_method_compile
method-compile-begin
21859   mono3620  mono   mini_method_compile
method-compile-end
21860   mono3620  mono mini_init
ves-init-begin
21861   mono3620  mono mini_init
ves-init-end


Looks right.


btw. while we are at it, is it already possible now or do you plan to
add jstack support (so that the names of .NET functions appear
instead of addresses of frames for the part inside mono runtime?)

right now, with this Hello World program:

class Test {
   public static void Main(string[] args) {
   System.Console.WriteLine(Hello from C#);
   }
}

and this tracing script (tracing usermode stack at every write  
syscall):


syscall::write:entry
/pid == $target/
{
   trace(arg0);
   jstack();
}

I get this output which makes me believe it's either not implemented
or I am doing something wrong (both writes are to fd 1 = stderr):

[EMAIL PROTECTED]:~/Documents/dev/mono/usr/bin$
DYLD_LIBRARY_PATH=`pwd`/../lib sudo dtrace -s tracemono.d -c './mono
/Users/boris/Test.exe'
dtrace: script 'tracemono.d' matched 1 probe
Hello from C#
dtrace: pid 1528 has exited
CPU IDFUNCTION:NAME
 1  17600  write:entry 1
 libSystem.B.dylib`write$UNIX2003+0xa
 mono`ves_icall_System_IO_MonoIO_Write+0x66
 0x7d6084
 0x7d5d60
 0x7d5bae
 0x7d5ae6
 0x7cc8cd
 0x7d4ed8
 0x7d4e6e
 0x7d4df8
 0x7d4db6
 0x7ca289
 0x7ca24b
 0x7ca1ce
 mono`mono_runtime_exec_main+0xfe
 mono`mono_runtime_run_main+0x153
 mono`mono_main+0x1360
 mono`start+0x36
 0x2

 1  17600  write:entry 1
 libSystem.B.dylib`write$UNIX2003+0xa
 mono`ves_icall_System_IO_MonoIO_Write+0x66
 0x7d6084
 0x7d5d60
 0x7d5bae
 0x7d5ae6
 0x7cc8cd
 0x7d63bf
 0x7d61bd
 0x7d614e
 0x7d6128
 0x7d4e0a
 0x7d4db6
 0x7ca289
 0x7ca24b
 0x7ca1ce
 mono`mono_runtime_exec_main+0xfe
 mono`mono_runtime_run_main+0x153
 mono`mono_main+0x1360
 mono`start+0x36
 0x2

Tracing Java in this way yields empty trace, so probably it's me doing
something stupid.


DTrace support has been a recurrently requested feature for about two  
years now. I'm happy that I got it working so far! :)


All current DTrace features are documented in mono's man page, that is  
the six probes. I don't pretend that this is in any way conclusive,  
there are many more probes and features imaginable, some listed as a  
roadmap in the to-be Wiki documentation, see attached. Suggestions and  
contributions always welcome. The current probes are meant to allow a  
little profiling of the runtime, and were a convenient way for me to  
trace what the runtime would be doing if my ppc64 port were working...


I haven't used jstack() yet and would need to look it up in the  
documentation. It sounds non-trivial to implement compared to probes.


What I will be looking into next is method-enter/method-exit probes  
for tracing managed function flow, but it seems more complicated (the  
JIT would need to always emit a call to a helper function, supplying  
it the data to conditionally pass out - otherwise the dynamic part of  
DTrace wouldn't work) and thus cannot be on by default for performance  
reasons, just like in Java.


Andreas
==Using DTrace with Mono==

Mono 2.0 includes DTrace probes when configured with 
code--enable-dtrace/code. This 

[Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-02 Thread Boris Dušek
Hi,

I grabbed the Mono Preview 2.0 installer for OS X and wanted to test
new DTrace probes mentioned in Release Notes[1], but it did not work.
On the #mono IRC channel, I learned that DTrace probes in mono are not
enabled in the binary packages provided, since it would incur
performance penalty even when no tracing is done. However, from the
DTrace docs, they say especially that ... No instrumented code is
present for inactive probes, so your system does not experience any
kind of performance degradation when you are not using DTrace. ... No
effective difference exists between a system where DTrace is not
active and one where the DTrace software is not installed. (quote
from 2nd paragraph of
http://docs.sun.com/app/docs/doc/817-6223/chp-intro-3?a=view )

I will understand not having DTrace-enabled Mono binary package for OS
X if there is a performance penalty, however in situation when the
DTrace documentation states the contrary, and Perl, Python, Ruby and
Java SE 6 shipped[1] with OS X Leopard are DTrace-enabled, I really
want to know if disabling of DTrace probes in Mono is correctly
reasoned. I think with the release notes wording In MacOS and Solaris
Mono supports DTrace probes. To use this feature, you must configure
mono with --enable-dtrace., many people will think like me that the
configure with --enable-dtrace holds only for compiling from source,
and that the Mono binary package offered for download has this enabled
just like Java, Python etc. in OS X.

I have to note that I am no DTrace usage expert (not to speak about
implementation), and started learning DTrace just this Monday, so I am
just curious about the situation.

Anyway, thanks for making the DTrace probes, compiling Mono from
source with --enable-dtrace configure flag, as specified in Release
Notes, does the trick.

Boris Dušek

[1]: yes, I know it says it must be enabled with configure
--enable-dtrace flag, but I thought that holds for compiling from
source only and that the binary packages provided for OS X do have
this enabled
[2]: OK, Java SE 6 was shipped after Leopard
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-02 Thread Andreas Färber
Hi,

Am 02.08.2008 um 17:25 schrieb Boris Dušek:

 I grabbed the Mono Preview 2.0 installer for OS X and wanted to test
 new DTrace probes mentioned in Release Notes[1], but it did not work.

Just to be sure, how did you test? As described in mono's man page?

 On the #mono IRC channel, I learned that DTrace probes in mono are not
 enabled in the binary packages provided, since it would incur
 performance penalty even when no tracing is done.

I had inquired about the sentence in the Release Notes myself and have  
not yet received an answer. ;)

 However, from the
 DTrace docs, they say especially that ... No instrumented code is
 present for inactive probes, so your system does not experience any
 kind of performance degradation when you are not using DTrace. ... No
 effective difference exists between a system where DTrace is not
 active and one where the DTrace software is not installed. (quote
 from 2nd paragraph of
 http://docs.sun.com/app/docs/doc/817-6223/chp-intro-3?a=view )

Not fully true, there is of course a minimal degradation (~5 nop  
instructions on Solaris), but it should be hardly noticeable. I have  
taken care to only call helper functions when the probe is active.

Was the answer on IRC in any way official? I could think of three  
possible reasons:

a) Worries about performance degradation.

b) No one updated the build system.

c) The build machine isn't DTrace-capable.

The main reason for not automatically enabling DTrace support was that  
it is somewhat hard to detect correctly. That's why we preferred -- 
enable-dtrace over --disable-dtrace. So, to get a DTrace-enabled  
Mono.framework, the build bots need to specify that argument.

And I thought we had agreed that if someone is really worried about  
performance, they should build their own Mono. Inversing this  
significantly limits the usefulness of the feature as most Mac users  
will just download the available binary.

Not enabling it during the previews is especially bad, since it  
reduces the amount of testing this new feature gets. Apart from the  
issue of mono.d not yet being installed, I've been considering marking  
the provider as stable for better usability.

Andreas

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-02 Thread Geoff Norton
On Sat, 2008-08-02 at 18:30 +0200, Andreas Färber wrote:

 Not fully true, there is of course a minimal degradation (~5 nop  
 instructions on Solaris), but it should be hardly noticeable. I have  
 taken care to only call helper functions when the probe is active.
 
 Was the answer on IRC in any way official? I could think of three  
 possible reasons:
 
 a) Worries about performance degradation.

Yes

 b) No one updated the build system.

True but minor

 c) The build machine isn't DTrace-capable.

d) We havn't tested it fully in our QA process, nor has it been
available long enough for us to feel comfortable turning it on at this
stage.  We also would need to invesgate how to do it in our universal
binaries, etc.  Its a lot of testing and it unfortunately will not make
2.0 unless there is a compelling argument against this and support from
the runtime team and from the QA team.

-g


___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-02 Thread Zoltan Varga
Hi,

  Looking at dtrace.h, all the current probes seem to be in
non-critical code-paths, so they
are unlikely to have a perf impact. We could make --enable-dtrace=true
the default in HEAD,
so it gets some testing.

  Zoltan

On Sat, Aug 2, 2008 at 7:16 PM, Geoff Norton [EMAIL PROTECTED] wrote:
 On Sat, 2008-08-02 at 18:30 +0200, Andreas Färber wrote:

 Not fully true, there is of course a minimal degradation (~5 nop
 instructions on Solaris), but it should be hardly noticeable. I have
 taken care to only call helper functions when the probe is active.

 Was the answer on IRC in any way official? I could think of three
 possible reasons:

 a) Worries about performance degradation.

 Yes

 b) No one updated the build system.

 True but minor

 c) The build machine isn't DTrace-capable.

 d) We havn't tested it fully in our QA process, nor has it been
 available long enough for us to feel comfortable turning it on at this
 stage.  We also would need to invesgate how to do it in our universal
 binaries, etc.  Its a lot of testing and it unfortunately will not make
 2.0 unless there is a compelling argument against this and support from
 the runtime team and from the QA team.

 -g


 ___
 Mono-devel-list mailing list
 Mono-devel-list@lists.ximian.com
 http://lists.ximian.com/mailman/listinfo/mono-devel-list

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono preview 2.0 binary and DTrace

2008-08-02 Thread Geoff Norton
Zoltan,

  I'm fine with this on trunk, but I still think barring any compelling
reason we should leave the branch as is.

-g

On Sat, 2008-08-02 at 19:20 +0200, Zoltan Varga wrote:
 Hi,
 
   Looking at dtrace.h, all the current probes seem to be in
 non-critical code-paths, so they
 are unlikely to have a perf impact. We could make --enable-dtrace=true
 the default in HEAD,
 so it gets some testing.
 
   Zoltan
 
 On Sat, Aug 2, 2008 at 7:16 PM, Geoff Norton [EMAIL PROTECTED] wrote:
  On Sat, 2008-08-02 at 18:30 +0200, Andreas Färber wrote:
 
  Not fully true, there is of course a minimal degradation (~5 nop
  instructions on Solaris), but it should be hardly noticeable. I have
  taken care to only call helper functions when the probe is active.
 
  Was the answer on IRC in any way official? I could think of three
  possible reasons:
 
  a) Worries about performance degradation.
 
  Yes
 
  b) No one updated the build system.
 
  True but minor
 
  c) The build machine isn't DTrace-capable.
 
  d) We havn't tested it fully in our QA process, nor has it been
  available long enough for us to feel comfortable turning it on at this
  stage.  We also would need to invesgate how to do it in our universal
  binaries, etc.  Its a lot of testing and it unfortunately will not make
  2.0 unless there is a compelling argument against this and support from
  the runtime team and from the QA team.
 
  -g
 
 
  ___
  Mono-devel-list mailing list
  Mono-devel-list@lists.ximian.com
  http://lists.ximian.com/mailman/listinfo/mono-devel-list
 

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list