Comments
Sort by recent activity
Hmm, that sounds like it might be something new, then. ANTS should create a log file in the results directory: do there appear to be any errors reported in there?
Is the service already running when you try to start profiling? If so, you could try stopping it in the services manager to see if that fixes the problem.
Does the service appear to be running in task manager while ANTS is hung? It's possible it has launched but hasn't signalled that it has finished starting. ANTS will wait quite a long time for the service to finish starting and may appear to be hung during this time. There is an issue in RC0 that could cause some unexpected exceptions, which could in turn be affecting your service startup in some way (this will be fixed in the final release).
Can you monitor any performance counters for the service when it's running normally using perfmon? Some strange behaviour is possible if the registry entries for the performance counters has become corrupted.
Can you profile standard desktop applications without an issue? / comments
Hmm, that sounds like it might be something new, then. ANTS should create a log file in the results directory: do there appear to be any errors reported in there?
Is the service already running whe...
This problem is going to be a knowledge base article for 4.0, though we hope to improve the error reporting to make this problem easier to diagnose in future releases.
The problem is due to the service not being able to write results out to the ANTS results directory - for example because it is running as LocalService - which causes it to fail on startup. There are a few things you can do to rectify this problem:
The best solution to this problem is to ensure that the directory that ANTS is using can be written to by the service you are profiling. By default this is C:\Documents and settings\<user>\Local Settings\Application Data\Red Gate\ANTS Performance Profiler 4 on XP. Setting the security so that Everyone has Full Control will ensure that anything can be profiled, though you may prefer to just add the service user. If you want to use a different directory, you can change it by setting the RGTEMP environment variable to whichever directory you want ANTS to use.
An alternative is to change the user that the service is configured to run as: LocalSystem services will typically have no problems, as will ones configured to run as your own user account. / comments
This problem is going to be a knowledge base article for 4.0, though we hope to improve the error reporting to make this problem easier to diagnose in future releases.
The problem is due to the ser...
An installer doesn't have to have a UI, so it would be possible to provide a 'quick install' version that puts everything in the default locations. It would also be possible to make a version with the usual prompts, but which could be disabled by using an msiexec command. / comments
An installer doesn't have to have a UI, so it would be possible to provide a 'quick install' version that puts everything in the default locations. It would also be possible to make a version with ...
ANTS puts logging data into the Local Settings\Application Data\Red Gate\ANTS Performance Profiler 4 directory. I'm not sure if this will contain any helpful information in your case, though.
The system log may contain information written by the w3wp process giving more information on why it failed. Something that does occur to me now is that the process being profiled does require a location to which it can write data. Normally we use the same directory as above, but IIS typically can't write there so we use the local settings directory that belongs to whichever user w3wp is launched as. On my system, this is at C:\Documents And Settings\A\Local Settings. If the process can't write there it won't be able to start profiling and will fail to start properly. With the default security settings this isn't a problem, but it can be if they've been changed.
As to your other question: it is possible to change the format ANTS displays the times in - you can find the options in the view menu. / comments
ANTS puts logging data into the Local Settings\Application Data\Red Gate\ANTS Performance Profiler 4 directory. I'm not sure if this will contain any helpful information in your case, though.
The s...
If the ANTS service is enabled, it will start as whichever user the ANTS service is running as; if not it will try to start it using the account it is running under. The worker process changes its credentials as set in the IIS security settings. If you're an administrator and not on Vista this will produce nearly identical behaviour: on Vista if the service isn't installed the worker process probably won't start.
For most cases, you can change where the profiler writes its data to by setting the RGTEMP environment variable to whichever directory you want to use; as the default behaviour doesn't work on IIS we use a different directory. We could change this behaviour, but you would then need to set up the security settings for the RGTEMP directory appropriately before you could profile IIS tasks.
The application log error message could explain why profiling isn't starting, though I'm at a bit of a loss to work out why this is happening: both the COR_PROFILER and the profiler flag variable are set in the same place in our code, so it's odd that one would get passed through and not the other. I'll pass this on to our testers to see if they can find a way of reproducing this. / comments
If the ANTS service is enabled, it will start as whichever user the ANTS service is running as; if not it will try to start it using the account it is running under. The worker process changes its ...
Is the IP address 146.254.189.105 assigned to your local machine or a remote machine? ANTS 4 only supports profiling websites hosted on a local machine.
This error will result when you try to profile a website hosted on another machine, as ANTS will start profiling a local instance of IIS and then wait for it to start on the remote machine (which won't ever happen, so it times out). The text of this error is fairly unhelpful, so we're going to look at improving it. / comments
Is the IP address 146.254.189.105 assigned to your local machine or a remote machine? ANTS 4 only supports profiling websites hosted on a local machine.
This error will result when you try to profi...
The 'recycle' icons do indeed indicate a recursive node. When a method is presented in the call graph we include all instances of that method, including recursive calls, so we can display the graph for all of the calls from that location.
In this case, the graph is fairly hard to read - most cases of recursion appear much simpler - but essentially the call you are looking at is called from the second level of recursion, so it appears twice: once as a child of the method you are looking at and once again at the level of recursion it appears at. The 'recycle' icon appears in the recursive path to indicate that you will get some duplicate results by following it.
There was some debate as to whether or not we should just cut down the set of methods to just the 'top-level' methods, though we decided against this as it would make it very hard to find a method call that occurs only after the recursion has reached a deep level: with the current implementation all methods that can be called by the graphed method will be displayed immediately. / comments
The 'recycle' icons do indeed indicate a recursive node. When a method is presented in the call graph we include all instances of that method, including recursive calls, so we can display the graph...
ANTS Profiler stores quite a lot of detail about the running program which does mean we can require a lot of memory in some circumstances. The main culprit is the data for individual stack timings: a .NET program can produce 5-10 million stack traces easily, which requires several hundred Mb to process as things stand. 600Mb is definitely on the high side, but not entirely unexpected for a reasonably complex Windows Forms application.
We do a couple of things to try to reduce the load: we simplify certain kinds of complex stack traces and we try to discard particularly irrelevant results (both these behaviours will be optional in the release version). We're not very aggressive with this, though as it's fairly hard to decide whether or not a particular result is interesting or not.
ANTS will only keep the data it needs in memory, so you will find if you select a time region the memory usage will usually go down. Using the 'only methods with source' profiling method will also reduce the memory requirements substantially. / comments
ANTS Profiler stores quite a lot of detail about the running program which does mean we can require a lot of memory in some circumstances. The main culprit is the data for individual stack timings:...
Hi,
I've taken a look through our source control logs and I think there's only one change that could impact performance. The previous builds would not instrument functions with more than 30,000 lines in them: we've increased the limit to 300,000 lines.
In general this means very large designer-generated files: these also happen to produce a lot of instrumentation so the effect could be quite large in some cases. Could you check to see if you have any of these files?
This could be something we make optional, as quite often the results produced for these functions aren't very enlightening, so being able to disable them in cases where they are dragging performance down could be useful.
You could also check task manager as your application is starting: having something else loading the CPU at the same time can cause quite a substantial difference in times - because profiling is quite CPU-intensive, the effect can be quite marked. / comments
Hi,
I've taken a look through our source control logs and I think there's only one change that could impact performance. The previous builds would not instrument functions with more than 30,000 lin...
We have changed the code in ANTS 4 that deals with working out the amount of overhead the profiler incurs: however in all of the builds we've released so far this feature is turned off, so the reported times always include the time added by the profiling code.
This is probably something that we'll add as an option so you can switch between the times with and without compensation applied - it's a post-processing step in ANTS 4, so we can calculate the results after the fact.
The current implementation does have a few limitations: in particular it only covers overhead added by the method-level profiling and not the line-level code. I'm going to look at improving this but there are some technical issues that make this a hard problem - the two big ones being that the instrumentation alters the behaviour of the JIT (and we can't compensate for that), and that the line-level timing code is now so short that the overhead it applies is highly dependent on the surrounding code, a result of modern processor architectures.
There are a couple of other effects the profiler will have that we probably won't be able to compensate for: in particular because more code is being executed and more memory is being accessed, more cache misses will occur which will cause the program to run slower. I don't think we've seen anything in our tests so far for which this is hugely significant, though. / comments
We have changed the code in ANTS 4 that deals with working out the amount of overhead the profiler incurs: however in all of the builds we've released so far this feature is turned off, so the repo...