8. |
Q:
How can I predict the performance of my CGIs?
A:
This matter is discussed in manual
SC41-0607-02 AS/400 Performance Capabilities Reference - Version 4, Release 4
You should read
Chapter 6, Web serving performance
(click
to display this manual in PDF format).
(click
to display this chapter in HTML format).
In this chapter they report a benchmark done on a
simple non-persistent CGI, rather different from the
ones one could develop with our CGI service program
method.
I myself ran some measurements on simple CGIs using our method
(Mel Rothman's CGI service program Version 2).
To run my measurements I imbedded some JavaScript
in the HTML. This JavaScript would immediately
re-run the same transaction.
I had to use up to three different browsers to achieve
a significative consumption of the CPU power.
For measurement no. 1 I used CGI
perf02 in library
centaur2.
For measurement no. 2 I used CGI
perf01 in library
centaur2.
The following table summarizes the results.
My measurement no. 1
|
My measurement no. 2
|
trans/sec = CPW / 11
|
trans/sec = CPW / 13
|
The difference in the transaction rates
depends on the CGI's,
see the following table.
|
My measurement no. 1
|
My measurement no. 2
|
Web serving system |
Model 170
Processor feature 2292
220 CPW
V4R4
Access logging
|
Model 170
Processor feature 2292
220 CPW
V4R4
Access logging
|
CPU consumption |
93.4% |
98.8% |
Trans/sec |
19.80 |
17.03 |
Functional specifications |
- runs in a "named" activation group
- accesses no data
- writes 1 HTML section
- serves an HTML page, size 5KB,
without images (GIF, JPG).
|
- runs in a "named" activation group
- accesses data from a QSYS library file
to provide a subfile-like table
of 26 rows
- writes 56 HTML sections
- serves an HTML page, size 5KB,
without images (GIF, JPG).
|
In both cases my CGI's load their skeleton HTML scripts
from source file members. In the second case,
a small database file is also opened, and two html
sections are isssued for each record read, then this
database file is closed.
The second case performs worse because of more
database accesses.
|