views:

481

answers:

6

I've set up a solution that creates rapid fire PDF reports. Currently it seems I can't get Reporting Services to use all the resources it has available to it. The system doesn't appear to be IO bound, CPU bound, or memory bound. Any suggestions on trying to figure out why it's running so?

The application isn't network IO bound, and it is multi-threaded to 2 times the number of processors.

A: 

Maybe the server can't deliver more data over the network (so it's network IO bound)?

Aaron Digulla
A: 

Is this a case of not using a multi threaded approach? Is the machine using 100% of one core of a processor and that's the bottleneck?

EDIT: Sorry for stating the obvious, was just an idea before you mentioned that it was already multi threaded. I'm afraid I can't offer any more suggestions.

Robin Day
This isn't the issue. The code is properly multi-threaded.
Orion Adrian
A: 

Robin Day is probably right, however if you are using a processor that supports hyper threading you may get a performance benefit by turning this off in the BIOS. You can try an a A/B performance test.

You could also check the SQL instance (when you say reporting service you mean SSRS right?) has not a got processor affinity set.

Christopher Edwards
A: 

Any suggestions on trying to figure out why it's running so?

a) There's an API to restrict a whole process to one CPU: test that using GetProcessAffinityMask.

b) 'Thread state' and 'Thread wait reason' are two of the performance counters ... maybe you can read this to see why threads, we you think ought to be running, aren't.

ChrisW
I'm seeing even distribution among all the cores.
Orion Adrian
A: 

All the threads of your application are fighting for a single lock. Use a profiler to see if there is a congestion somewhere.

If you have four cores, that would explain why you see 25% overall CPU usage.

Aaron Digulla
It's a Core 2 Duo running it.
Orion Adrian
Unfortunately I doubt this is it. There doesn't appear to be a lock in my code, but the lock does appear to be in the Reporting Server code. The lock is specifically what I'm trying to get at.
Orion Adrian
+1  A: 

SQL Server Reporting Services limits the number of reports run to 2 simultaneous ad-hoc reports and 2 simultaneous web reports. This is a hard limit imposed by the server.

Orion Adrian