perf(1M)
NAME
perf − test the NCS RPC runtime library
SYNOPSIS
/etc/ncs/perf/server [−d] max_calls family
/etc/ncs/perf/run_client family hostname
/etc/ncs/perf/client test_number test_args
DESCRIPTION
The perf exerciser tests the functionality and measures the performance of the Remote Procedure Call (RPC) runtime library, part of the Network Computing System (NCS).
perf consists of client and server programs called client and server and a shell script called run_client. These executables reside in the directory /etc/ncs/perf.
The perf client and server programs run as separate processes, either on one host or on two different hosts. Any host that runs either the client or the server must have the Network Computing Kernel (NCK), the runtime portion of NCS, installed.
perf makes only minimal use of the Location Broker.
To use perf, first start the server, then run the client to conduct various NCK tests against that server, as described in the following sections.
Starting the perf Server
Any host that runs the perf server must also run llbd, the Local Location Broker daemon. Ensure that an llbd is running.
The perf server has the following syntax:
/etc/ncs/perf/server [−d] max_calls family
The −d option instructs the server to display debug messages.
The max_calls argument specifies the maximum number of calls that the server can execute in parallel. Unless your system provides Concurrent Programming Support (currently available only on Apollo Domain/OS systems), specify the value 1.
The family argument specifies one or more address families for which the server should create sockets to listen on. On HP-UX systems, specify ip.
For testing NCK functionality, a typical invocation of the perf server is
$ server
which creates a perf server that handles one call at a time, listens for perf client tests on an internet socket, and does not run in debug mode.
Running the run_client Script
The perf client consists of 11 tests, each of which exercises a particular feature of NCK.
To test NCK functionality, invoke the run_client script, which runs all 11 of the perf tests. (Several of the tests are run twice, once with the idempotent operation attribute and once without.)
The syntax for run_client is
$ run_client family hostname
The family and hostname arguments specify the host that is running the perf server.
Running Individual perf Client Tests
You can run the perf tests individually by directly invoking the client program.
Following are the individual perf client tests.
TestSyntax
Null callclient 0 host passes calls/pass verify? idempotent?
Variable lengthclient 1 host passes calls/pass verify? idempotent? nbytes
input argument
Variable lengthclient 2 host passes calls/pass verify? idempotent? nbytes
output argument
Broadcastclient 3 family
Maybeclient 4 host
Broadcast/maybeclient 5 family
Floating pointclient 6 host passes calls/pass verify? idempotent?
Unregisteredclient 7 host
interface
Forwardingclient 8 host global?
Exceptionclient 9 host
Slow callclient 10 host passes calls/pass verify? idempotent? seconds
Shutdownclient 11 host
Shutdownclient 11 host
Test 0 makes the simplest possible remote procedure call, one with no parameters.
Tests 1 and 2 pass open arrays as input and output parameters, respectively.
Tests 3, 4, and 5 use the broadcast and maybe operation attributes. (Tests 3 and 5 will not work if the server and the client are running on hosts in different networks.)
Test 6 passes floating-point parameters.
Test 7 requests an operation in an interface that is not registered with the RPC runtime library at the server.
Test 8 sends a call to the Location Broker forwarding port at the server, testing the forwarding facility provided by llbd. (Test 8 requires an llbd to be running at the server. The others specify well-known ports.)
Test 9 makes a call that raises an exception at the server.
Test 10 makes a call from which the server will return after the specified period of time.
Test 11 remotely shuts down the server.
Following are descriptions of the arguments that appear in the syntax table.
host The host on which the perf server is running, specified in the form family:name (for example, ip:toscanini).
passes The number of times to run the test. The perf client displays a message after each pass.
calls/pass
The number of remote calls to make during one pass.
verify?
Yes/no (y or n) input. A "yes" input directs perf to run the test for correct operation. A "no" input directs perf to run the test to obtain performance statistics.
idempotent?
Yes/no (y or n) input. A "yes" input directs the perf client to call an idempotent operation at the perf server. A "no" input directs the perf client to call a non-idempotent operation.
nbytes The number of bytes the input and output parameters should have.
family An address family (for example, ip or dds).
global?
Yes/no (y or n) input. At this release, specify n.
seconds
The number of seconds the server should wait before returning.
Using perf to Troubleshoot NCK
If perf is not running successfully, check that the networking software and hardware used by NCK is functioning correctly. On networks that support IP protocols, for example, try running telnet, ftp, and other IP-based applications between the hosts that ran perf. Network services must be available and working correctly before you start Location Brokers and other NCS-based programs.
If the perf tests appear to be running successfully but NCK appears to be functioning incorrectly, try reversing the roles of the perf hosts. It is possible that the perf tests will work correctly with the client running on host A and the server running on host B but will fail with the client running on host B and the server running on host A.
If any of the perf tests fail, try running the tests locally, with both the client and the server running on the same host. Failure in this case could be due to incorrect mapping of names to addresses (in a host table, for instance), absence of required daemons or servers, or mismatch of versions between the perf client and server.
SEE ALSO
Hewlett-Packard Company — HP-UX Release 9.0: August 1992