Overview -------- This survey script generates meta-data load on the MDS with varying numbers of threads by using the echo_client to drive different layers of the MDS stack: mdd,mdt, and osd. Currently, we only support mdd layer. It can be used with the following classes of operations 1. Open-create/mkdir/create 2. Lookup/getattr/setxattr 3. Delete/destroy 4. Unlink/rmdir These operations will be run by a variable number of concurrent threads and will test with the number of directories specified by the user. The run can be executed such that all threads operate in a single directory (dir_count=1) or in private/unique directory (dir_count=x thrlo=x thrhi=x). The mdd instance is driven directly. The script automatically loads the obdecho module if required and creates instance of echo_client. This script can also create OST objects by providing stripe_count greater than zero. Running ------- The script must be customised according to the components under test and where it should keep its working files. Customization variables are described as followed: thrlo threads to start testing. skipped if less than dir_count thrhi maximum number of threads to test targets MDT instance file_count total number of files per thread to test dir_count total number of directories to test stripe_count number stripe on OST objects tests_str test operations. Must have at least "create" and "destroy" start_number base number for each thread to prevent name collisions - Create a Lustre configuraton using your normal methods 1. Run without OST objects creation: Setup the Lustre MDS without OST mounted. Then invoke the mds-survey script e.g. : $ thrhi=64 file_count=200000 sh mds-survey 2. Run with OST objects creation: Setup the Lustre MDS with at least one OST mounted. Then invoke the mds-survey script with stripe_count parameter e.g. : $ thrhi=64 file_count=200000 stripe_count=2 sh mds-survey Note: a specific mdt instance can be specified using targets variable. e.g. : $ targets=lustre-MDT0000 thrhi=64 file_count=200000 stripe_count=2 sh mds-survey Output files: ------------- When the script runs, it creates a number of working files and a pair of result files. All files start with the prefix given by ${rslt}. ${rslt}.summary same as stdout ${rslt}.script_* per-host test script files ${rslt}.detail_tmp* per-mdt result files ${rslt}.detail collected result files for post-mortem The script iterates over the given numbers of threads performing all the specified tests and checking that all test processes completed successfully. Note that the script may not clean up properly if it is aborted or if it encounters an unrecoverable error. In this case, manual cleanup may be required, possibly including killing any running instances of 'lctl' (local or remote), removing echo_client instances created by the script and unloading obdecho. Script output ------------- The summary file and stdout contain lines like... mdt 1 file 100000 dir 4 thr 4 create 5652.05 [ 999.01,46940.48] destroy 5797.79 [ 0.00,52951.55] mdt 1 is the total number of MDTs under test. file 100000 is the total number of files to operate dir 4 is the total number of directories to operate thr 4 is the total number of threads operate over all directories create destroy are the test name. More tests will be displayed on the same line. 565.05 is the aggregate operations over all MDTs measured by dividing the total number of operations by the elapsed time. [999.01,46940.48] are the minimum and maximum instantaneous operation seen on any individual MDT.