Guidelines for concurrent query execution
We recommend that you follow these guidelines to improve the efficiency of your concurrent query execution.
Report Servers can execute multiple reports at the same time. Each report runs on one thread within the Report Server. Having more CPUs allows more reports to run at the same time. As a report is executed, requests for data will be made via the query engine. In some scenarios, leveraging the concurrent query feature can allow several queries to be started prior to the data being required for rendering. This in turn reduces the total elapsed time for a report to complete.
Concurrent query execution allows an individual report to consume more resources, which in turn may reduce elapsed times. Increasing the number of concurrent activities may impact the throughput of the Cognos Application or database tiers in an environment.
Trying to use more threads than there are actual CPUs on a computer does not reduce the time it takes to run a report. It may also cause reports to run more slowly due to more contention on the memory heap in the Report Server process.
One scenario in which concurrent queries may improve elapsed times would be when a report renders very few pages, perhaps one page. That page may include several layouts whose queries execute quickly within the database, when run at the same time.
As a starting point, define max helpers per process set to the number of CPUs on the machine. Cognos Application tier servers normally run several services. Therefore the actual number per server would be a smaller value.
If a Report Server is frequently running multiple reports at the same time, set the number of helpers per report to a smaller number so that each report gets a few threads. This will produce more consistent execution times. If you set the max per report equal to max per process, you run the risk that one report gets all the additional threads while others don't get any additional threads.
By increasing the threads used to n
, each Report Server (BiBusTKServerMain) process has
n
threads. The potential load on the computer will be the sum of (Report Server
processes * n).
When Compatible Query Mode (CQM) is used, each Report Server has its own in-process query engine. When Dynamic Query Mode (DQM) is used, Report Servers send their data request to a DQM service. As a result, the Dynamic Query server resource usage and load may increase.