-<?xml version='1.0' encoding='UTF-8'?>
-<!-- This document was created with Syntext Serna Free. --><chapter xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US" xml:id="lnetselftest">
+<?xml version='1.0' encoding='UTF-8'?><chapter xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US" xml:id="lnetselftest">
<title xml:id="lnetselftest.title">Testing Lustre Network Performance (LNET Self-Test)</title>
- <para><anchor xml:id="dbdoclet.50438223_36273" xreflabel=""/>This chapter describes the LNET self-test, which is used by site administrators to confirm that Lustre Networking (LNET) has been properly installed and configured, and that underlying network software and hardware are performing according to expectations. The chapter includes:</para>
+ <para><anchor xml:id="dbdoclet.50438223_36273" xreflabel=""/>This chapter describes the LNET
+ self-test, which is used by site administrators to confirm that Lustre networking (LNET) has
+ been properly installed and configured, and that underlying network software and hardware are
+ performing according to expectations. The chapter includes:</para>
<itemizedlist>
<listitem>
<para><xref linkend="dbdoclet.50438223_91742"/></para>
<section xml:id="dbdoclet.50438223_91742">
<title><indexterm><primary>LNET</primary><secondary>self-test</secondary></indexterm>
LNET Self-Test Overview</title>
- <para>LNET self-test is a kernel module that runs over LNET and the Lustre network drivers (LNDs. It is designed to:</para>
+ <para>LNET self-test is a kernel module that runs over LNET and the Lustre network drivers (LNDs). It is designed to:</para>
<itemizedlist>
<listitem>
<para>Test the connection ability of the Lustre network</para>
</itemizedlist>
<para>After you have obtained performance results for your Lustre network, refer to <xref linkend="lustretuning"/> for information about parameters that can be used to tune LNET for optimum performance.</para>
<note>
- <para>Apart from the performance impact, LNET self-test is invisible to Lustre.</para>
+ <para>Apart from the performance impact, LNET self-test is invisible to the Lustre file
+ system.</para>
</note>
<para>An LNET self-test cluster includes two types of nodes:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">
<literal>lst</literal>
- </emphasis> - The user interface for the self-test console (run on the console node). It provides a list of commands to control the entire test system, including commands to create a session, create test groups, etc.</para>
+ </emphasis> - The user interface for the self-test console (run on the <emphasis>console node</emphasis>). It provides a list of commands to control the entire test system, including commands to create a session, create test groups, etc.</para>
</listitem>
<listitem>
<para><emphasis role="bold">
<literal>lstclient</literal>
- </emphasis> - The userspace LNET self-test program (run on a test node). The lstclient utility is linked with userspace LNDs and LNET. This utility is not needed if only kernel space LNET and LNDs are used.</para>
+ </emphasis> - The userspace LNET self-test program (run on a <emphasis>test node</emphasis>). The <literal>lstclient</literal> utility is linked with userspace LNDs and LNET. This utility is not needed if only kernel space LNET and LNDs are used.</para>
</listitem>
</itemizedlist>
<note>
- <para>Test nodes can be in either kernel or userspace. A console user can invite a kernel test node to join the test session by running lstadd_groupNID, but the console user cannot actively add a userspace test node to the test-session. However, the console user can passively accept a test node to the test session while the test node is running lstclient to connect to the console.</para>
+ <para><emphasis>Test nodes</emphasis> can be in either kernel or userspace. A <emphasis>console node</emphasis> can invite a kernel <emphasis>test node</emphasis> to join the session by running <literal>lst add_group NID</literal>, but the <emphasis>console node</emphasis> cannot actively add a userspace <emphasis>test node</emphasis> to the session. A <emphasis>console node</emphasis> can passively accept a <emphasis>test node</emphasis> to the session while the <emphasis>test node</emphasis> is running <literal>lstclient</literal> to connect to the <emphasis>console node</emphasis>.</para>
</note>
<section remap="h3">
<title>Prerequisites</title>
- <para>To run LNET self-test, these modules must be loaded:</para>
+ <para>To run LNET self-test, these modules must be loaded on both <emphasis>console nodes</emphasis> and <emphasis>test nodes</emphasis>:</para>
<itemizedlist>
<listitem>
<para><literal>libcfs</literal></para>
<para><literal>lnet_selftest</literal></para>
</listitem>
<listitem>
- <para> One of the <literal>klnds</literal> (i.e, <literal>ksocklnd</literal>, <literal>ko2iblnd</literal>...) as needed by your network configuration</para>
+ <para><literal>klnds</literal>: A kernel Lustre network driver (LND) (i.e, <literal>ksocklnd</literal>, <literal>ko2iblnd</literal>...) as needed by your network configuration.</para>
</listitem>
</itemizedlist>
<para>To load the required modules, run:</para>
<screen>modprobe lnet_selftest </screen>
<para>This command recursively loads the modules on which LNET self-test depends.</para>
<note>
- <para>While the console and test nodes require all the prerequisite modules to be loaded, userspace test nodes do not require these modules.</para>
+ <para>While the <emphasis>console node</emphasis> and <emphasis>test nodes</emphasis> require all the prerequisite modules to be loaded, userspace test nodes do not require these modules.</para>
</note>
</section>
</section>
<para>This section describes how to create and run an LNET self-test. The examples shown are for a test that simulates the traffic pattern of a set of Lustre servers on a TCP network accessed by Lustre clients on an InfiniBand network connected via LNET routers. In this example, half the clients are reading and half the clients are writing.</para>
<section remap="h3">
<title>Creating a Session</title>
- <para>A <emphasis>session</emphasis> is a set of processes that run on a test node. Only one session can be run at a time on a test node to ensure that the session has exclusive use of the node. The console node is used to create, change or destroy a session (new_session, end_session, show_session). For more about session parameters, see <xref linkend="dbdoclet.50438223_91247"/>.</para>
- <para>Almost all operations should be performed within the context of a session. From the console node, a user can only operate nodes in his own session. If a session ends, the session context in all test nodes is stopped.</para>
- <para>The following commands set the LST_SESSION environment variable to identify the session on the console node and create a session called read_write:</para>
+ <para>A <emphasis>session</emphasis> is a set of processes that run on a <emphasis>test node</emphasis>. Only one session can be run at a time on a test node to ensure that the session has exclusive use of the node. The console node is used to create, change or destroy a session (<literal>new_session</literal>, <literal>end_session</literal>, <literal>show_session</literal>). For more about session parameters, see <xref linkend="dbdoclet.50438223_91247"/>.</para>
+ <para>Almost all operations should be performed within the context of a session. From the <emphasis>console node</emphasis>, a user can only operate nodes in his own session. If a session ends, the session context in all test nodes is stopped.</para>
+ <para>The following commands set the <literal>LST_SESSION</literal> environment variable to identify the session on the console node and create a session called <literal>read_write</literal>:</para>
<screen>export LST_SESSION=$$
lst new_session read_write</screen>
</section>
<section remap="h3">
<title>Setting Up Groups</title>
- <para>A <emphasis>group</emphasis> is a named collection of nodes. Any number of groups can exist in a single LNET self-test session. Group membership is not restricted in that a node can be included in any number of groups.</para>
+ <para>A <emphasis>group</emphasis> is a named collection of nodes. Any number of groups can exist in a single LNET self-test session. Group membership is not restricted in that a <emphasis>test node</emphasis> can be included in any number of groups.</para>
<para>Each node in a group has a rank, determined by the order in which it was added to the group. The rank is used to establish test traffic patterns.</para>
<para>A user can only control nodes in his/her session. To allocate nodes to the session, the user needs to add nodes to a group (of the session). All nodes in a group can be referenced by the group name. A node can be allocated to multiple groups of a session.</para>
- <para>In the following example, three groups are established:</para>
+ <para>In the following example, three groups are established on a console node:</para>
<screen>lst add_group servers 192.168.10.[8,10,12-16]@tcp
lst add_group readers 192.168.1.[1-253/2]@o2ib
lst add_group writers 192.168.1.[2-254/2]@o2ib</screen>
</listitem>
</itemizedlist>
<note>
- <para>A console user can associate kernel space test nodes with the session by running lst <literal>add_group</literal> <literal>NIDs</literal>, but a userspace test node cannot be actively added to the session. However, the console user can passively "accept" a test node to associate with a test session while the test node running <literal>lstclient</literal> connects to the console node, i.e: <literal>lstclient --sesid CONSOLE_NID --group NAME</literal>).</para>
+ <para>A <emphasis>console node</emphasis> can associate kernel space <emphasis>test nodes</emphasis> with the session by running <literal>lst add_group <replaceable>NIDs</replaceable></literal>, but a userspace test node cannot be actively added to the session. A console node can passively "accept" a test node to associate with a test session while the test node running <literal>lstclient</literal> connects to the console node, i.e: <literal>lstclient --sesid <replaceable>CONSOLE_NID</replaceable> --group <replaceable>NAME</replaceable></literal>).</para>
</note>
</section>
<section xml:id="dbdoclet.50438223_42848">
<title>Defining and Running the Tests</title>
- <para>A <emphasis>test</emphasis> generates a network load between two groups of nodes, a source group identified using the <literal>--from</literal> parameter and a target group identified using the <literal>--to</literal> parameter. When a test is running, each node in the <literal>--from<replaceable><group></replaceable></literal> simulates a client by sending requests to nodes in the <literal>--to<replaceable><group></replaceable></literal>, which are simulating a set of servers, and then receives responses in return. This activity is designed to mimic Lustre RPC traffic.</para>
+ <para>A <emphasis>test</emphasis> generates a network load between two groups of nodes, a
+ source group identified using the <literal>--from</literal> parameter and a target group
+ identified using the <literal>--to</literal> parameter. When a test is running, each node in
+ the <literal>--from <replaceable>group</replaceable></literal> simulates a client by sending
+ requests to nodes in the <literal>--to <replaceable>group</replaceable></literal>, which are
+ simulating a set of servers, and then receives responses in return. This activity is
+ designed to mimic Lustre file system RPC traffic.</para>
<para>A <emphasis>batch</emphasis> is a collection of tests that are started and stopped together and run in parallel. A test must always be run as part of a batch, even if it is just a single test. Users can only run or stop a test batch, not individual tests.</para>
- <para>Tests in a batch are non-destructive to the file system, and can be run in a normal Lustre environment (provided the performance impact is acceptable).</para>
- <para>A simple batch might contain a single test, for example, to determine whether the network bandwidth presents an I/O bottleneck. In this example, the <literal>--to<replaceable><group></replaceable></literal> could be comprised of Lustre OSSs and <literal>--from<replaceable><group></replaceable></literal> the compute nodes. A second test could be added to perform pings from a login node to the MDS to see how checkpointing affects the <literal>ls -l</literal> process.</para>
+ <para>Tests in a batch are non-destructive to the file system, and can be run in a normal
+ Lustre file system environment (provided the performance impact is acceptable).</para>
+ <para>A simple batch might contain a single test, for example, to determine whether the network bandwidth presents an I/O bottleneck. In this example, the <literal>--to <replaceable>group</replaceable></literal> could be comprised of Lustre OSSs and <literal>--from <replaceable>group</replaceable></literal> the compute nodes. A second test could be added to perform pings from a login node to the MDS to see how checkpointing affects the <literal>ls -l</literal> process.</para>
<para>Two types of tests are available:</para>
<itemizedlist>
<listitem>
<title>Session Commands</title>
<para>This section describes <literal>lst</literal> session commands.</para>
<para><emphasis role="bold">
+ <literal>LST_FEATURES</literal>
+ </emphasis></para>
+ <para>The <literal>lst</literal> utility uses the <literal>LST_FEATURES</literal> environmental variable to determine what optional features should be enabled. All features are disabled by default. The supported values for <literal>LST_FEATURES</literal> are:</para>
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold"><literal>1</literal> -</emphasis> Enable the Variable Page Size feature for LNet Selftest.</para>
+ </listitem>
+ </itemizedlist>
+ <para>Example:</para>
+ <screen>export LST_FEATURES=1</screen>
+ <para><emphasis role="bold">
<literal>LST_SESSION</literal>
</emphasis></para>
<para>The <literal>lst</literal> utility uses the <literal>LST_SESSION</literal> environmental variable to identify the session locally on the self-test console node. This should be a numeric value that uniquely identifies all session processes on the node. It is convenient to set this to the process ID of the shell both for interactive use and in shell scripts. Almost all <literal>lst</literal> commands require <literal>LST_SESSION</literal> to be set.</para>
<para>Example:</para>
<screen>export LST_SESSION=$$</screen>
<para><emphasis role="bold">
- <literal>new_session [--timeout SECONDS] [--force] NAME</literal>
+ <literal>new_session [--timeout <replaceable>SECONDS</replaceable>] [--force] <replaceable>SESSNAME</replaceable></literal>
</emphasis></para>
- <para>Creates a new session.</para>
+ <para>Creates a new session session named <replaceable>SESSNAME</replaceable>.</para>
<informaltable frame="all">
<tgroup cols="2">
<colspec colname="c1" colwidth="50*"/>
<tbody>
<row>
<entry>
- <para><literal>--timeout<replaceable><seconds></replaceable></literal></para>
+ <para><literal>--timeout <replaceable>seconds</replaceable></literal></para>
</entry>
<entry>
<para>Console timeout value of the session. The session ends automatically if it remains idle (i.e., no commands are issued) for this period.</para>
<para><literal>--force</literal></para>
</entry>
<entry>
- <para>Ends conflicting sessions. This determines who 'wins' when one session conflicts with another. For example, if there is already an active session on this node, then the attempt to create a new session fails unless the -force flag is specified. If the -force flag is specified, then the active session is ended. Similarly, if a session attempts to add a node that is already 'owned' by another session, the -force flag allows this session to 'steal' the node.</para>
+ <para>Ends conflicting sessions. This determines who 'wins' when one session conflicts with another. For example, if there is already an active session on this node, then the attempt to create a new session fails unless the <literal>--force</literal> flag is specified. If the <literal>--force</literal> flag is specified, then the active session is ended. Similarly, if a session attempts to add a node that is already 'owned' by another session, the <literal>--force</literal> flag allows this session to 'steal' the node.</para>
</entry>
</row>
<row>
<entry>
- <para> <emphasis>
- <literal><name></literal>
- </emphasis></para>
+ <para><literal><replaceable>name</replaceable></literal></para>
</entry>
<entry>
<para>A human-readable string to print when listing sessions or reporting session conflicts.</para>
</informaltable>
<para><emphasis role="bold">Example:</emphasis></para>
<screen>$ lst new_session --force read_write</screen>
- <para><literal>
- <replaceable role="bold">end_session</replaceable>
- </literal></para>
+ <para><literal>end_session</literal></para>
<para>Stops all operations and tests in the current session and clears the session's status.</para>
<screen>$ lst end_session</screen>
- <para><literal>
- <replaceable role="bold">show_session</replaceable>
- </literal></para>
+ <para><literal>show_session</literal></para>
<para>Shows the session information. This command prints information about the current session. It does not require LST_SESSION to be defined in the process environment.</para>
<screen>$ lst show_session</screen>
</section>
<section remap="h3">
<title>Group Commands</title>
<para>This section describes <literal>lst</literal> group commands.</para>
- <para><literal>
- <replaceable role="bold">add_group</replaceable>
- <replaceable> <name> <NIDS> [<NIDs>...]</replaceable>
- </literal></para>
+ <para><literal>add_group <replaceable>name</replaceable> <replaceable>NIDS</replaceable> [<replaceable>NIDs</replaceable>...]</literal></para>
<para>Creates the group and adds a list of test nodes to the group.</para>
<informaltable frame="all">
<tgroup cols="2">
<tbody>
<row>
<entry>
- <para> <literal>
- <replaceable><name></replaceable>
- </literal></para>
+ <para> <literal><replaceable>name</replaceable></literal></para>
</entry>
<entry>
<para>Name of the group.</para>
</row>
<row>
<entry>
- <para> <literal>
- <replaceable><NIDs></replaceable>
- </literal></para>
+ <para> <literal><replaceable>NIDs</replaceable></literal></para>
</entry>
<entry>
<para>A string that may be expanded to include one or more LNET NIDs.</para>
<screen>$ lst add_group servers 192.168.10.[35,40-45]@tcp
$ lst add_group clients 192.168.1.[10-100]@tcp 192.168.[2,4].\
[10-20]@tcp</screen>
- <para><literal>
- <replaceable role="bold">update_group</replaceable>
- <replaceable><name></replaceable>
- <replaceable role="bold">[--refresh] [--clean</replaceable>
- <replaceable><status></replaceable>
- <replaceable role="bold">] [--remove</replaceable>
- <replaceable><NIDs></replaceable>
- <replaceable role="bold">]</replaceable>
- </literal></para>
+ <para><literal>update_group <replaceable>name</replaceable> [--refresh] [--clean <replaceable>status</replaceable>] [--remove <replaceable>NIDs</replaceable>]</literal></para>
<para>Updates the state of nodes in a group or adjusts a group's membership. This command is useful if some nodes have crashed and should be excluded from the group.</para>
<informaltable frame="all">
<tgroup cols="3">
<row>
<entry>
<para>
- <literal> --refresh </literal>
+ <literal>--refresh</literal>
</para>
</entry>
<entry nameend="c3" namest="c2">
- <para> Refreshes the state of all inactive nodes in the group.</para>
+ <para>Refreshes the state of all inactive nodes in the group.</para>
</entry>
</row>
<row>
<entry>
- <para> <literal>--clean<replaceable><status></replaceable></literal></para>
+ <para> <literal>--clean <replaceable>status</replaceable></literal></para>
</entry>
<entry nameend="c3" namest="c2">
- <para> Removes nodes with a specified status from the group. Status may be:</para>
+ <para>Removes nodes with a specified status from the group. Status may be:</para>
</entry>
</row>
<row>
<para> </para>
</entry>
<entry>
- <para> active</para>
+ <para>active</para>
</entry>
<entry>
- <para> The node is in the current session.</para>
+ <para>The node is in the current session.</para>
</entry>
</row>
<row>
<para> </para>
</entry>
<entry>
- <para> busy</para>
+ <para>busy</para>
</entry>
<entry>
- <para> The node is now owned by another session.</para>
+ <para>The node is now owned by another session.</para>
</entry>
</row>
<row>
<para> </para>
</entry>
<entry>
- <para> down</para>
+ <para>down</para>
</entry>
<entry>
- <para> The node has been marked down.</para>
+ <para>The node has been marked down.</para>
</entry>
</row>
<row>
<para> </para>
</entry>
<entry>
- <para> unknown</para>
+ <para>unknown</para>
</entry>
<entry>
- <para> The node'â„¢s status has yet to be determined.</para>
+ <para>The node's status has yet to be determined.</para>
</entry>
</row>
<row>
<para> </para>
</entry>
<entry>
- <para> invalid</para>
+ <para>invalid</para>
</entry>
<entry>
- <para> Any state but active.</para>
+ <para>Any state but active.</para>
</entry>
</row>
<row>
<entry>
- <para> <literal>--remove<replaceable><NIDs></replaceable></literal></para>
+ <para><literal>--remove <replaceable>NIDs</replaceable></literal></para>
</entry>
<entry nameend="c3" namest="c2">
<para> Removes specified nodes from the group.</para>
$ lst update_group clients --clean invalid // \
invalid == busy || down || unknown
$ lst update_group clients --remove \192.168.1.[10-20]@tcp</screen>
- <para><literal>
- <replaceable role="bold">list_group [</replaceable>
- <replaceable><name></replaceable>
- <replaceable role="bold">] [--active] [--busy] [--down] [--unknown] [--all]</replaceable>
- </literal></para>
+ <para><literal> list_group [<replaceable>name</replaceable>] [--active] [--busy] [--down] [--unknown] [--all]</literal></para>
<para>Prints information about a group or lists all groups in the current session if no group is specified.</para>
<informaltable frame="all">
<tgroup cols="2">
<tbody>
<row>
<entry>
- <para><literal>
- <replaceable><name></replaceable>
- </literal></para>
+ <para><literal><replaceable>name</replaceable></literal></para>
</entry>
<entry>
- <para> The name of the group.</para>
+ <para>The name of the group.</para>
</entry>
</row>
<row>
<entry>
<para>
- <literal> --active </literal>
+ <literal>--active</literal>
</para>
</entry>
<entry>
- <para> Lists the active nodes.</para>
+ <para>Lists the active nodes.</para>
</entry>
</row>
<row>
<entry>
<para>
- <literal> --busy </literal>
+ <literal>--busy</literal>
</para>
</entry>
<entry>
- <para> Lists the busy nodes.</para>
+ <para>Lists the busy nodes.</para>
</entry>
</row>
<row>
<entry>
- <literal> --down </literal>
+ <literal>--down</literal>
</entry>
<entry>
- <para> Lists the down nodes.</para>
+ <para>Lists the down nodes.</para>
</entry>
</row>
<row>
<entry>
- <literal> --unknown </literal>
+ <literal>--unknown</literal>
</entry>
<entry>
- <para> Lists unknown nodes.</para>
+ <para>Lists unknown nodes.</para>
</entry>
</row>
<row>
<entry>
- <literal> --all </literal>
+ <literal>--all</literal>
</entry>
<entry>
- <para> Lists all nodes.</para>
+ <para>Lists all nodes.</para>
</entry>
</row>
</tbody>
$ lst list_group clients --busy
192.168.1.12@tcp Busy
Total 1 node</screen>
- <para><literal>
- <replaceable role="bold">del_group</replaceable>
- <replaceable> <name></replaceable>
- </literal></para>
+ <para><literal>del_group <replaceable>name</replaceable></literal></para>
<para>Removes a group from the session. If the group is referred to by any test, then the operation fails. If nodes in the group are referred to only by this group, then they are kicked out from the current session; otherwise, they are still in the current session.</para>
<screen>$ lst del_group clients</screen>
- <para><literal><replaceable role="bold">lstclient --sesid</replaceable><replaceable> <NID> </replaceable><replaceable role="bold">--group</replaceable><replaceable> <name></replaceable> [--server_mode]</literal></para>
+ <para><literal>lstclient --sesid <replaceable>NID</replaceable> --group <replaceable>name</replaceable> [--server_mode]</literal></para>
<para>Use <literal>lstclient</literal> to run the userland self-test client. The <literal>lstclient</literal> command should be executed after creating a session on the console. There are only two mandatory options for <literal>lstclient</literal>:</para>
<informaltable frame="all">
<tgroup cols="2">
<tbody>
<row>
<entry>
- <literal> --sesid<replaceable><NID></replaceable></literal>
+ <literal>--sesid <replaceable>NID</replaceable></literal>
</entry>
<entry>
- <para> The first console's NID.</para>
+ <para>The first console's NID.</para>
</entry>
</row>
<row>
<entry>
- <literal> --group<replaceable><name></replaceable></literal>
+ <literal>--group <replaceable>name</replaceable></literal>
</entry>
<entry>
- <para> The test group to join.</para>
+ <para>The test group to join.</para>
</entry>
</row>
<row>
<entry>
- <literal> --server_mode </literal>
+ <literal>--server_mode</literal>
</entry>
<entry>
<para> When included, forces LNET to behave as a server, such as starting an acceptor if the underlying NID needs it or using privileged ports. Only root is allowed to use the <literal>--server_mode</literal> option.</para>
<section xml:id="dbdoclet.50438223_36860">
<title>Batch and Test Commands</title>
<para>This section describes <literal>lst</literal> batch and test commands.</para>
- <para><literal>
- <replaceable role="bold">add_batch NAME</replaceable>
- </literal></para>
- <para>A default batch test set named batch is created when the session is started. You can specify a batch name by using add_batch:</para>
+ <para><literal>add_batch <replaceable>name</replaceable></literal></para>
+ <para>A default batch test set named batch is created when the session is started. You can specify a batch name by using <literal>add_batch</literal>:</para>
<screen>$ lst add_batch bulkperf</screen>
<para>Creates a batch test called <literal>bulkperf</literal>.</para>
<screen>
- <replaceable role="bold">add_test --batch <replaceable><<replaceable role="italic">batchname</replaceable>></replaceable> [--loop<#>] <replaceable role="bold">[--concurrency</replaceable><replaceable><#></replaceable><replaceable role="bold">] [--distribute</replaceable><replaceable><#:#></replaceable><replaceable role="bold">]</replaceable> \ --from<replaceable> <<replaceable role="italic">group</replaceable>></replaceable> --to <replaceable><<replaceable role="italic">group</replaceable>></replaceable> {brw|ping} <test options></replaceable>
+add_test --batch <replaceable>batchname</replaceable> [--loop <replaceable>loop_count</replaceable>] [--concurrency <replaceable>active_count</replaceable>] [--distribute <replaceable>source_count</replaceable>:<replaceable>sink_count</replaceable>] \
+ --from <replaceable>group</replaceable> --to <replaceable>group</replaceable> brw|ping <replaceable>test_options</replaceable>
</screen>
<para>Adds a test to a batch. The parameters are described below.</para>
<informaltable frame="all">
<tbody>
<row>
<entry>
- <para> <literal>--batch<replaceable><batchname></replaceable></literal></para>
+ <para> <literal>--batch <replaceable>batchname</replaceable></literal></para>
</entry>
<entry nameend="c3" namest="c2">
<para>Names a group of tests for later execution.</para>
</row>
<row>
<entry>
- <literal> --loop<replaceable><#></replaceable></literal>
+ <literal>--loop <replaceable>loop_count</replaceable></literal>
</entry>
<entry nameend="c3" namest="c2">
<para>Number of times to run the test.</para>
</row>
<row>
<entry>
- <literal> --concurrency<replaceable><#></replaceable></literal>
+ <literal>--concurrency <replaceable>active_count</replaceable></literal>
</entry>
<entry nameend="c3" namest="c2">
<para>The number of requests that are active at one time.</para>
</row>
<row>
<entry>
- <literal> --distribute<replaceable><#:#></replaceable></literal>
+ <literal>--distribute <replaceable>source_count</replaceable>:<replaceable>sink_count</replaceable></literal>
</entry>
<entry nameend="c3" namest="c2">
<para>Determines the ratio of client nodes to server nodes for the specified test. This allows you to specify a wide range of topologies, including one-to-one and all-to-all. Distribution divides the source group into subsets, which are paired with equivalent subsets from the target group so only nodes in matching subsets communicate.</para>
</row>
<row>
<entry>
- <literal> --from<replaceable><group></replaceable></literal>
+ <literal> --from <replaceable>group</replaceable></literal>
</entry>
<entry nameend="c3" namest="c2">
<para>The source group (test client).</para>
</row>
<row>
<entry>
- <literal> --to<replaceable><group></replaceable></literal>
+ <literal> --to <replaceable>group</replaceable></literal>
</entry>
<entry nameend="c3" namest="c2">
<para>The target group (test server).</para>
<literal>ping</literal>
</entry>
<entry nameend="c3" namest="c2">
- <para>Sends a small request message, resulting in a small reply message. For more details, see <xref linkend="dbdoclet.50438223_42848"/></para>
+ <para>Sends a small request message, resulting in a small reply message. For more details, see <xref linkend="dbdoclet.50438223_42848"/>. <literal>ping</literal> does not have any additional options.</para>
</entry>
</row>
<row>
<para> </para>
</entry>
<entry>
- <literal> read | write </literal>
+ <literal>read | write</literal>
</entry>
<entry>
<para>Read or write. The default is read.</para>
<row>
<entry/>
<entry>
- <literal> size=<#>| <#>K | <#>M </literal>
+ <literal>size=<replaceable>bytes[KM]</replaceable></literal>
</entry>
<entry>
- <para>I/O size in bytes, KB or MB (i.e., <literal>size=1024</literal>, <literal>size=4</literal>K, <literal>size=1M</literal>). The default is 4K bytes.</para>
+ <para>I/O size in bytes, kilobytes, or Megabytes (i.e., <literal>size=1024</literal>, <literal>size=4K</literal>, <literal>size=1M</literal>). The default is 4 kilobytes.</para>
</entry>
</row>
<row>
<entry/>
<entry>
- <literal> check=full|simple </literal>
+ <literal>check=full|simple </literal>
</entry>
<entry>
<para>A data validation check (checksum of data). The default is that no check is done.</para>
--distribute 4:2 (C1,C2,C3,C4->S1,S2), (C5, C6->S3, S1)
--distribute 6:3 (C1,C2,C3,C4,C5,C6->S1,S2,S3)</screen>
<para>The setting <literal>--distribute 1:1</literal> is the default setting where each source node communicates with one target node.</para>
- <para>When the setting <literal>--distribute 1:<replaceable><n></replaceable></literal> (where <literal>
- <replaceable><n></replaceable>
- </literal> is the size of the target group) is used, each source node communicates with every node in the target group.</para>
+ <para>When the setting <literal>--distribute 1: <replaceable>n</replaceable></literal> (where <literal><replaceable>n</replaceable></literal> is the size of the target group) is used, each source node communicates with every node in the target group.</para>
<para>Note that if there are more source nodes than target nodes, some source nodes may share the same target nodes. Also, if there are more target nodes than source nodes, some higher-ranked target nodes will be idle.</para>
<para><emphasis role="bold">Example showing a <literal>brw</literal> test:</emphasis></para>
<screen>$ lst add_group clients 192.168.1.[10-17]@tcp
</listitem>
</itemizedlist>
<para><emphasis role="bold">
- <literal><replaceable role="bold">list_batch [</replaceable><replaceable><replaceable role="italic"><name</replaceable>></replaceable><replaceable role="bold">] [--test</replaceable><replaceable> <<replaceable role="italic">index</replaceable>></replaceable><replaceable role="bold">] [--active] [--invalid]</replaceable> [--server | client<replaceable role="bold">]</replaceable></literal>
+ <literal>list_batch [<replaceable>name</replaceable>] [--test <replaceable>index</replaceable>] [--active] [--invalid] [--server|client]</literal>
</emphasis></para>
<para>Lists batches in the current session or lists client and server nodes in a batch or a test.</para>
<informaltable frame="all">
<tbody>
<row>
<entry>
- <literal> --test<replaceable><index></replaceable></literal>
+ <literal> --test <replaceable>index</replaceable></literal>
</entry>
<entry nameend="c3" namest="c2">
- <para>Lists tests in a batch. If no option is used, all tests in the batch are listed. IIf one of these options are used, only specified tests in the batch are listed:</para>
+ <para>Lists tests in a batch. If no option is used, all tests in the batch are listed. If one of these options are used, only specified tests in the batch are listed:</para>
</entry>
</row>
<row>
<para> </para>
</entry>
<entry>
- <literal> server | client </literal>
+ <literal>server | client</literal>
</entry>
<entry>
<para>Lists client and server nodes in a batch test.</para>
192.168.10.102@tcp Active
192.168.10.103@tcp Active</screen>
<para><literal>
- <replaceable role="bold">run</replaceable>
- <replaceable role="bold">
- <replaceable> <<replaceable role="italic">name</replaceable>></replaceable>
- </replaceable>
+ run
+ <replaceable>name</replaceable>
</literal></para>
<para>Runs the batch.</para>
<screen>$ lst run bulkperf</screen>
<para><literal>
- <replaceable role="bold">
- <replaceable role="bold">stop </replaceable>
- <replaceable><<replaceable role="italic">name</replaceable>></replaceable>
- </replaceable>
+ stop
+ <replaceable>name</replaceable>
</literal></para>
<para>Stops the batch.</para>
<screen>$ lst stop bulkperf</screen>
<para><emphasis role="bold">
<literal>
- <replaceable role="bold">query </replaceable>
- <replaceable><<replaceable role="italic">name</replaceable>> </replaceable>
- <replaceable role="bold">[--test</replaceable>
- <replaceable> <<replaceable role="italic">index</replaceable>></replaceable>
- <replaceable role="bold">] [--timeout</replaceable>
- <replaceable> <<replaceable role="italic">seconds</replaceable>></replaceable>
- <replaceable role="bold">] [--loop</replaceable>
- <replaceable><#></replaceable>
- <replaceable role="bold">] [--delay</replaceable>
- <replaceable><<replaceable role="italic">seconds</replaceable>></replaceable>
- <replaceable role="bold">] [--all]</replaceable>
+ query
+ <replaceable>name</replaceable>
+ [--test <replaceable>index</replaceable>]
+ [--timeout <replaceable>seconds</replaceable>]
+ [--loop <replaceable>loopcount</replaceable>]
+ [--delay <replaceable>seconds</replaceable>]
+ [--all]
</literal>
</emphasis></para>
<para>Queries the batch status.</para>
<tbody>
<row>
<entry>
- <literal> --test<replaceable><index></replaceable></literal>
+ <literal>--test <replaceable>index</replaceable></literal>
</entry>
<entry>
- <para> Only queries the specified test. The test index starts from 1.</para>
+ <para>Only queries the specified test. The test index starts from 1.</para>
</entry>
</row>
<row>
<entry>
- <literal> --timeout<replaceable><seconds></replaceable></literal>
+ <literal>--timeout <replaceable>seconds</replaceable></literal>
</entry>
<entry>
- <para> The timeout value to wait for RPC. The default is 5 seconds.</para>
+ <para>The timeout value to wait for RPC. The default is 5 seconds.</para>
</entry>
</row>
<row>
<entry>
- <literal> --loop<replaceable><#></replaceable></literal>
+ <literal>--loop <replaceable>#</replaceable></literal>
</entry>
<entry>
- <para> The loop count of the query.</para>
+ <para>The loop count of the query.</para>
</entry>
</row>
<row>
<entry>
- <literal> --delay<replaceable><seconds></replaceable></literal>
+ <literal>--delay <replaceable>seconds</replaceable></literal>
</entry>
<entry>
- <para> The interval of each query. The default is 5 seconds.</para>
+ <para>The interval of each query. The default is 5 seconds.</para>
</entry>
</row>
<row>
<entry>
- <literal> --all </literal>
+ <literal>--all</literal>
</entry>
<entry>
- <para> The list status of all nodes in a batch or a test.</para>
+ <para>The list status of all nodes in a batch or a test.</para>
</entry>
</row>
</tbody>
<title>Other Commands</title>
<para>This section describes other <literal>lst</literal> commands.</para>
<para><literal>
- <replaceable role="bold">
- <replaceable role="bold">ping [-session] [--group</replaceable>
- <replaceable><<replaceable role="italic">name</replaceable>></replaceable>
- <replaceable role="bold">] [--nodes</replaceable>
- <replaceable> <NIDs></replaceable>
- <replaceable role="bold">] [--batch</replaceable>
- <replaceable> <<replaceable role="italic">name</replaceable>></replaceable>
- <replaceable role="bold">] [--server] [--timeout</replaceable>
- <replaceable> <<replaceable role="italic">seconds</replaceable>></replaceable>
- <replaceable role="bold">]</replaceable>
- </replaceable>
+ ping [-session] [--group <replaceable>name</replaceable>]
+ [--nodes <replaceable>NIDs</replaceable>]
+ [--batch <replaceable>name</replaceable>]
+ [--server]
+ [--timeout <replaceable>seconds</replaceable>]
</literal></para>
<para>Sends a 'hello' query to the nodes.</para>
<informaltable frame="all">
<tbody>
<row>
<entry>
- <literal> --session </literal>
+ <literal>--session</literal>
</entry>
<entry>
<para>Pings all nodes in the current session.</para>
</row>
<row>
<entry>
- <literal> --group<replaceable><name></replaceable></literal>
+ <literal>--group <replaceable>name</replaceable></literal>
</entry>
<entry>
<para>Pings all nodes in a specified group.</para>
</row>
<row>
<entry>
- <literal> --nodes<replaceable><NIDs></replaceable></literal>
+ <literal>--nodes <replaceable>NIDs</replaceable></literal>
</entry>
<entry>
<para>Pings all specified nodes.</para>
</row>
<row>
<entry>
- <literal> --batch<replaceable><name></replaceable></literal>
+ <literal>--batch <replaceable>name</replaceable></literal>
</entry>
<entry>
<para>Pings all client nodes in a batch.</para>
</row>
<row>
<entry>
- <literal> --server </literal>
+ <literal>--server</literal>
</entry>
<entry>
- <para>Sends RPC to all server nodes instead of client nodes. This option is only used with <literal>--batch<replaceable><name></replaceable></literal>.</para>
+ <para>Sends RPC to all server nodes instead of client nodes. This option is only used with <literal>--batch <replaceable>name</replaceable></literal>.</para>
</entry>
</row>
<row>
<entry>
- <literal> --timeout<replaceable><seconds></replaceable></literal>
+ <literal> --timeout <replaceable>seconds</replaceable></literal>
</entry>
<entry>
<para>The RPC timeout value.</para>
</tgroup>
</informaltable>
<para><emphasis role="bold">Example:</emphasis></para>
- <screen>$ lst ping 192.168.10.[15-20]@tcp
+ <screen># lst ping 192.168.10.[15-20]@tcp
192.168.1.15@tcp Active [session: liang id: 192.168.1.3@tcp]
192.168.1.16@tcp Active [session: liang id: 192.168.1.3@tcp]
192.168.1.17@tcp Active [session: liang id: 192.168.1.3@tcp]
192.168.1.19@tcp Down [session: <NULL> id: LNET_NID_ANY]
192.168.1.20@tcp Down [session: <NULL> id: LNET_NID_ANY]</screen>
<para><literal>
- <replaceable role="bold">
- <replaceable role="bold">stat [--bw] [--rate] [--read] [--write] [--max] [--min] [--avg] " " [--timeout</replaceable>
- <replaceable> <<replaceable role="italic">seconds</replaceable>></replaceable>
- <replaceable role="bold">] [--delay </replaceable>
- <replaceable><<replaceable role="italic">seconds</replaceable>></replaceable>
- <replaceable role="bold">] </replaceable>
- <replaceable><<replaceable role="italic">group</replaceable>></replaceable>
- <replaceable role="bold">|<</replaceable>
- <replaceable><replaceable role="italic">NIDs</replaceable>> </replaceable>
- <replaceable role="bold">[</replaceable>
- <replaceable><<replaceable role="italic">group</replaceable>></replaceable>
- <replaceable role="bold">|</replaceable>
- <replaceable><<replaceable role="italic">NIDs</replaceable>></replaceable>
- <replaceable role="bold">]</replaceable>
- </replaceable>
+ stat [--bw] [--rate] [--read] [--write] [--max] [--min] [--avg] " "
+ [--timeout <replaceable>seconds</replaceable>]
+ [--delay <replaceable>seconds</replaceable>]
+ <replaceable>group|NIDs</replaceable>
+ [<replaceable>group|NIDs</replaceable>]
</literal></para>
<para>The collection performance and RPC statistics of one or more nodes.</para>
<informaltable frame="all">
<tbody>
<row>
<entry>
- <literal> --bw </literal>
+ <literal>--bw</literal>
</entry>
<entry>
<para>Displays the bandwidth of the specified group/nodes.</para>
</row>
<row>
<entry>
- <literal> --rate </literal>
+ <literal>--rate</literal>
</entry>
<entry>
<para>Displays the rate of RPCs of the specified group/nodes.</para>
</row>
<row>
<entry>
- <literal> --read </literal>
+ <literal>--read</literal>
</entry>
<entry>
<para>Displays the read statistics of the specified group/nodes.</para>
</row>
<row>
<entry>
- <literal> --write </literal>
+ <literal>--write</literal>
</entry>
<entry>
<para>Displays the write statistics of the specified group/nodes.</para>
</row>
<row>
<entry>
- <literal> --max </literal>
+ <literal>--max</literal>
</entry>
<entry>
<para>Displays the maximum value of the statistics.</para>
</row>
<row>
<entry>
- <literal> --min </literal>
+ <literal>--min</literal>
</entry>
<entry>
<para>Displays the minimum value of the statistics.</para>
</row>
<row>
<entry>
- <literal> --avg </literal>
+ <literal>--avg</literal>
</entry>
<entry>
<para>Displays the average of the statistics.</para>
</row>
<row>
<entry>
- <literal> --timeout<replaceable><seconds></replaceable></literal>
+ <literal>--timeout <replaceable>seconds</replaceable></literal>
</entry>
<entry>
<para>The timeout of the statistics RPC. The default is 5 seconds.</para>
</row>
<row>
<entry>
- <literal> --delay<replaceable><seconds></replaceable></literal>
+ <literal>--delay <replaceable>seconds</replaceable></literal>
</entry>
<entry>
<para>The interval of the statistics (in seconds).</para>
[W] Avg: 16.60 MB/s Min: 16.10 MB/s Max: 17.1 MB/s
[R] Avg: 40.49 MB/s Min: 40.30 MB/s Max: 40.68 MB/s</screen>
<para>Specifying a group name (<emphasis>
- <literal><group></literal>
+ <literal><replaceable>group</replaceable></literal>
</emphasis>) causes statistics to be gathered for all nodes in a test group. For example:</para>
<screen>$ lst stat servers
</screen>
<para>where servers is the name of a test group created by <literal>lst add_group</literal></para>
- <para>Specifying a <literal>NID</literal> range (<emphasis><<literal>NIDs</literal>></emphasis>) causes statistics to be gathered for selected nodes. For example:</para>
+ <para>Specifying a <literal><replaceable>NID</replaceable></literal> range (<literal><replaceable>NIDs</replaceable></literal>) causes statistics to be gathered for selected nodes. For example:</para>
<screen>$ lst stat 192.168.0.[1-100/2]@tcp</screen>
<para>Only LNET performance statistics are available. By default, all statistics
information is displayed. Users can specify additional information with these options.</para>
- <para><literal>
- <replaceable role="bold">show_error [--session] [<group>|<NIDs>]...</replaceable>
- </literal></para>
+ <para><literal>show_error [--session] [<replaceable>group</replaceable>|<replaceable>NIDs</replaceable>]... </literal></para>
<para>Lists the number of failed RPCs on test nodes.</para>
<informaltable frame="all">
<tgroup cols="2">
<tbody>
<row>
<entry>
- <literal> --session </literal>
+ <literal>--session</literal>
</entry>
<entry>
<para>Lists errors in the current test session. With this option, historical RPC errors are not listed.</para>