3. SuperSockets Functionality and Performance

This section describes how to verify that SuperSockets are working correctly on a cluster.

3.1. SuperSockets Status

The general status of SuperSockets can be retrieved via the SuperSockets init script that controls the service dis_supersockets. On Red Hat systems, this can be done like

# service dis_supersockets status

which should show a status of running. If the status shown here is loaded, but not configured, it means that the SuperSockets configuration failed for some reason. Typically, it means that a configuration file could not be parsed correctly. The configuration can be performed manually like

# /opt/DIS/sbin/dis_ssocks_cfg

If this indicates that a configuration file is corrupted, you can verify them according to the reference in Appendix C, Configuration Files, Section 2, “SuperSockets Configuration”. At any time, you can re-create dishosts.conf using the GUI dis_netconfig or the command line tool dis_mkconf and restore modified SuperSockets configuration files (supersockets_ports.conf and supersockets_profiles.conf) from the default versions that have been installed in /opt/DIS/etc/dis.

Once the status of SuperSockets is running, you can verify their actual configuration via the command dis_ssocks_adm. The output of dis_ssocks_adm -m shows you, which IP address (or network mask) the local Cluster Node's SuperSockets know about. The output should be non-empty and identical on all Cluster Nodes.

3.2. SuperSockets Benchmarks

Several benchmarks that can be used to validate the functionality and performance of SuperSockets is are installed in /opt/DIS/bin/socket.

3.2.1. latency_bench

A benchmark that can be used to validate the functionality and performance of SuperSockets is latency_bench. The basic usage requires two machines (n1 and n2). Start the server process on Cluster Node n1 as server:

$ dis_ssocks_run latency_bench -server

On Cluster Node n2, run the client side of the benchmark like:

$ dis_ssocks_run latency_bench -client n1

The latency reported by latency_bench depends on your system, but should starts around 1µs using a modern machine where the PCIe slot is directly attached to the CPU. Using older machines, the latency may be higher. Latencies above 5µs indicate a problem; typical Ethernet latencies start at 20µs and more.

3.2.2. sockperf

A benchmark that can be used to validate the functionality and performance of SuperSockets is installed as /opt/DIS/bin/socket/sockperf. The basic usage requires two machines (n1 and n2). Start the server process on Cluster Node n1 without any parameters:

$ dis_ssocks_run sockperf

On Cluster Node n2, run the client side of the benchmark like:

$ dis_ssocks_run sockperf -h n1

The output for a working setup should look like this:

In case of latencies being to high, please verify if SuperSockets are running and configured as described in the previous section. Also, verify that the environment variable LD_PRELOAD is set to libksupersockets.so. This is reported for the client in the second line of the output (see above), but LD_PRELOAD also needs to be set correctly on the server side. See Chapter 4, Initial Installation, Section 2.10, “Making Cluster Application use PCI Express” for more information on how to make generic socket applications (like sockperf) use SuperSockets.