Tuesday, September 18, 2012

Performance Monitor (Perfmon) - Schedule and Stop Condition

I use performance monitor (perfmon) to collect different set of counters for my server. I tried to automate the process to run on certain schedule. However, I found the interface of perfmon not that user friendly, and sometimes confusing. Here I try to clarify a little more on the schedule and stop condition.

There isn't many guidance online on perfmon schedule. Microsoft TechNet site provide a pretty comprehensive description on Windows Performance Monitor. However, it can get quite confusing configuring the schedule.


Let's start with Schedule tab. The Schedule tab allow you to create multiple schedules to launch the data collector set. Click on Edit will pop up a folder action window. The Launch box at the bottom indicates when it launch the collection (not how many). If you check Monday and Thursday and start time at 12:00:00AM, it will launch the collection on Monday 12AM and depending if the collection is still running or not, it will launch collection on Thursday 12AM. (You will see how the stop condition (described later) affects the schedule launch). The active range box on the top with beginning date and expiration date, is where the the launch schedule still valid. The schedule will not start to run the collection (if it is not currently run) before beginning date and after expiration date (optional, un-check the expiration date to let this schedule run continuously). In other words, if you haven't notice, the expiration date does NOT stop the collection, but rather stop launching collection if it is not currently run). Back to schedule tab. Make sure you check All schedules enabled at the bottom left. If not, all the schedules are not valid. It appears that there is no way enable or disable partial schedules.


Once you launch the collection, unless you want to run it forever, you most likely have a strategy when the collection should stop. You can configure when it stops under the Stop Condition tab. The Overall duration determine how long a collection run. For example if you have 6 hours, then it would stop 6 hours after the schedule first start running. See I put first? Mean if you have overlap schedules, let say one schedule start at 1:00AM, and another schedule start at 2:00AM. If you set the overall duration to 2 hours, it stops at 3AM (2 hour after when it first run). Next is where it gets a little bit complicated. The limits is another way to stop the collection. You have two types of limit: Duration and Maximum Size. Whichever limit is reached first will stop the collection. There is one nice option Restart the data collector set at limit. It creates a separate log file once the limit hit. You want to configure the file name convention correctly, if not you will get an error. e.g. if you configure your file to not overwrite and not append, and it tries to create the same file name. Please notes that the overall duration override the limits. The Stop when all data collectors have finished option description is a little confusing. if you have configured overall duration, this option basically stop the collection once all the data collectors record its most recent values. Mean, as long as all your data collectors (if you have multiple) record a value, it will stop the collection. I still couldn't think of a use case for this purpose. If you do, please leave a comment below. I always leave this option unchecked.

That's pretty much for the schedule and stop condition for the performance monitor. Now start monitoring your server performance! Also check out how to use Logman make monitoring multiple servers easier.

Google+