0

I am looking at running perfmon on our servers and storing the data to a data source, which is relatively easy to do. However, my concern is with how frequently Perfmon will perform data updates.

Does it do this for every update? Meaning, if I have the interval set to 1second, does it perform an insert every second? Or does it wait and batch them together? Is there any way to control this?

Erik Funkenbusch
  • 600
  • 10
  • 27

2 Answers2

4

Does it do this for every update?

Yes.

Chopper3
  • 101,299
  • 9
  • 108
  • 239
  • So there's no way to cache these updates and batch-update? – Erik Funkenbusch Aug 20 '13 at 16:54
  • Can you more fully express what actual problem you're having, instead of starting with how you're trying to solve it? – mfinni Aug 20 '13 at 17:14
  • @mfinni - I have to go to my database administrator and explain the kind of extra load this will place on the production database servers. I would prefer to have a way to minimize the load. 1 Update * 200 counters every second is not something I can bring to them. Yes, I know I can reduce the interval, but i'd rather not if I don't have to. If I can tell them it will batch update 2000 rows every 10 seconds, that's a lot better. – Erik Funkenbusch Aug 20 '13 at 17:54
  • I see. It may justify having its own DB server, if you're going to be driving a lot of load to it. – mfinni Aug 20 '13 at 17:59
  • @mfinni - This is why i'm trying to understand the options. – Erik Funkenbusch Aug 20 '13 at 18:06
1

You could use another process to do this for you.

"Another alternative is to log the data to a *.blg (binary) format on the local disk of the machine that you’re monitoring, then post-process it later."

http://blogs.msdn.com/b/granth/archive/2008/09/23/relogging-perfmon-binary-log-files-to-sql.aspx

Now, the relog process will presumably hammer the crap out of your DB when it runs if you configure as above : once a day. Maybe you configure perfmon to restart once every 10 minutes, and then have your copy-and-relog processes configured similarly.

At any rate, you should test out different scenarios on a test SQL server, if you're concerned about impact to production and want to get this right the first time. Either way, you can only spread out or concentrating the load, not reduce it. All those writes will hit the SQL server, from my reading of it, it doesn't seem like it will do a BULK INSERT, from the documented command line options.

mfinni
  • 36,144
  • 4
  • 53
  • 86
  • Very nice catch there. Exactly what I am looking for. Thanks. Technically, Chopper3 answered the question I asked, but you provided the info I needed. – Erik Funkenbusch Aug 20 '13 at 20:47
  • Yup - that's why we want to know what problem you're really trying to solve. Including what you've done and what you're trying is very important information, but always give the big picture. – mfinni Aug 20 '13 at 21:05