LDD Today


[back to "Optimizing server performance: Port encryption & Buffer Pool settings"]
Test Case #3 Results (sidebar)
These are the results we found when testing whether different system parameters affect the time required for rebuilding views. This first table shows the overall results:
Database Size (number of records)
At Start
At End
% Growth (after rebuilding)
8,000
7,127,040
24,788,992
248%
16,000
11,878,400
47,611,904
301%
32,000
21,381,120
93,028,352
335%
64,000
40,517,632
184,811,520
356%
128,000
78,675,968
369,360,896
369%
256,000
155,009,024
746,700,800
382%
In the next few tables, we used varying base database sizes, by varying the number of records the database stored. The tables show the resulting time it took to rebuild the view, the NSF_BUFFER_POOL_SIZE (at peak), and the total amount of memory allocated to perform the operation for the task. We performed this test with the following specifications:
    • One CPU, 64MB, no NSF_BUFFER_POOL_SIZE set, and one database
    • One CPU, 64MB, no NSF_BUFFER_POOL_SIZE set, and two databases running at the same time
    • One CPU, 64MB, the NSF_BUFFER_POOL_SIZE set at a quarter of available memory, and one database
    • One CPU, 64MB, the NSF_BUFFER_POOL_SIZE set at a quarter of available memory, and two databases running at the same time
    • One CPU, 64MB, the NSF_BUFFER_POOL_SIZE set at half of available memory, and one database
    • One CPU, 128MB, no NSF_BUFFER_POOL_SIZE set, and two databases running at the same time
    • Two CPUs, 64MB, no NSF_BUFFER_POOL_SIZE set, and two databases running at the same time
The following table shows the effect of rebuilding views for one database (one Update task), with one CPU 64MB, and no NSF_BUFFER_POOL_SIZE specification.
Database Size (number of records)
Time to rebuild view (sec)
BufferPool.Peak (K)
Memory Allocated (MB)
8,000
129
7,142
13
16,000
269
8,352
14
32,000
580
8,352
14
64,000
1204
8,352
14
128,000
2540
8,352
14
256,000
5571
8,352
13
The following table shows the affect of rebuilding views for two same sized databases (two Update tasks), with one CPU 64MB, and no NSF_BUFFER_POOL_SIZE specification. Notice that the time it takes to rebuild the views for two databases with the same size was about double the time it took for one database. For example, you can compare the results where we didn't specify a buffer pool size (this is the default), with a 32,000 record (single) database, and with the rebuilding results of two 16,000 record databases (a total of 32,000). In this case, the time it took to complete the rebuild was almost the same, and the memory allocation was greater when we rebuilt two smaller databases at the same time.
Database Size (number of records)
Time to rebuild view (sec)
BufferPool.Peak (K)
Memory Allocated (MB)
8,000
270
9,792
16
16,000
516
12,033
13
32,000
1073
12,033
17
64,000
2194
12,033
17
128,000
4819
12,033
17
The following table shows the effect of rebuilding views for one database (one Update task), with one CPU 64MB, and the NSF_BUFFER_POOL_SIZE specification set to a quarter of available memory.
Database Size (number of records)
Time to rebuild view (sec)
BufferPool.Peak (K)
Memory Allocated (MB)
8,000
128
7,546
13
16,000
285
13,420
19
32,000
608
16,934
22
64,000
2194
16,934
23
128,000
2466
16,934
22
The following table shows the effect of rebuilding views for two same-sized databases (two Update tasks), with one CPU 64MB, and the NSF_BUFFER_POOL_SIZE specification set to a quarter of available memory. The time it took to rebuild the views for two databases with the same size, was about double the time it took for one database.
Database Size (number of records)
Time to rebuild view (sec)
BufferPool.Peak (K)
Memory Allocated (MB)
8,000
262
9,792
16
16,000
513
12,038
18
32,000
1069
12,038
17
64,000
2171
12,038
17
128,000
4933
12,038
17
The following table shows the effect of rebuilding views for one database (one Update task), with one CPU 64MB, and the NSF_BUFFER_POOL_SIZE specification set to half of available memory. The time it takes to rebuild the view was consistent with the other rebuild times. Since we specified the buffer pool size, the overall memory allocation was higher.
Database Size (number of records)
Time to rebuild view (sec)
BufferPool.Peak (K)
Memory Allocated (MB)
8,000
144
8,640
15
16,000
284
14,457
21
32,000
625
26,035
33
64,000
1465
33,753
40
128,000
2786
33,753
39
256,000
6444
33,753
39
The following table shows the effect of rebuilding views for one database (one Update task), with one CPU 128MB, and no NSF_BUFFER_POOL_SIZE specification. Notice that except for the smallest sized database, there was a decrease in performance with the extra memory. As there was extra memory, the buffer pool handling logic started with a large base pool size, and incremented in larger pieces.
Database Size (number of records)
Time to rebuild view (sec)
BufferPool.Peak (K)
Memory Allocated (MB)
8,000
186
9,488
14
16,000
259
13,651
20
32,000
546
22,579
28
64,000
1096
22,579
28
128,000
2278
22,579
28
256,000
5320
22,579
28
The following table shows the effect of rebuilding views for two databases (two Update tasks), with two CPUs 64MB, and no NSF_BUFFER_POOL_SIZE specification.
Database Size (number of records)
Time to rebuild view (sec)
BufferPool.Peak (K)
Memory Allocated (MB)
8,000
143
12,844
19
16,000
294
12,844
19
32,000
621
12,844
19
64,000
1357
12,844
18
128,000
3028
12,844
18
256,000
7683
12,844
18
It is important to know the rate, and at what point the system allocates the buffer pool, when reviewing some of the performance numbers. Where there are changes in direction for some of the performance curves, this may be due to an increase in the NSF_BUFFER_POOL_SIZE specification, which would take a load off the processor and allow it to process additional information within the allocated space.