[Lustre-devel] loadgen improvements

Andreas Dilger adilger at sun.com
Tue Dec 8 22:35:32 PST 2009

On 2009-12-08, at 22:07, Alexey Lyashkov wrote:
> This can be something similar as
>     pattern $name $pool_name $operation [$stripe_size [$stripe_count]]
> where
> name - is pattern name
> pool_name - is name of OST pools assigned to this pattern
> operation - is one of READ or WRITE.
> stripe_size - if set, workload need to setup LOV and add linkage  
> between
> LOV and OSC targets, and separate single operation to stripes.
> stripe_count - if set, workload should be use for only part of OST  
> pool
> to each echo object.

Please do not use positional parameters.  That makes it nearly  
impossible to change the input format in the future, or to skip some  
fields and leave them as defaults.  This needs to use getopt() and  
named parameters:

  --pool=pool_name, --stripe_size=N,  --stripe_count=N

> next stage is prepare clients.
> In this stage we should be send obd_connect to echo client and wait
> until all osc targets is connected (via send obd_statfs() or something
> similar).
> To start clients we can uses:
>     clients $name $count $workload_name [shared]
> where
> name - is client group name
> count - is client's count in that group
> workload_name - is name of workload parameters.
> shared - if set, clients in this pattern is share single OSC or LOV
> target. if don't set - each worker have own lustre stack.
> At this stage we also create echo objects with requested LSM for each
> client.

Same as above - please use named parameters instead of positional ones.

It probably also makes sense to look at the functions provided by LST  
(LNET self test) so that we might have these two tools operate in a  
similar manner. LST testing at the LNET level, loadgen testing at the  
OBD/CLIO level.

Cheers, Andreas
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.

More information about the lustre-devel mailing list