hello Lustre hackers,<div><br></div><div>ClusterStor would like to start doing real contributions to Lustre stability and popularity. First off, we would like to improve loadgen utility, written by Nathan Rutman. We think loadgen is a really good tool for testing and what is not less important, it is implemented right way from architecture point of view.</div>

<div><br></div><div>However, these days it has number of issues:</div><div>1. Wrong stack size for threads, that results in segfault (find the patch in attachment);</div><div>2. Little locking issues (push_kid() function);</div>

<div>3. Absence of striping functionality, it only may create load on one OST/ECHO server.</div><div><br></div><div>We plan to add striping functionality to loadgen. General idea is to use LOV module, which already has all the needed code. Loadgen itself and echo_client also have related code, so it seems this functionality was planned anyway, though it&#39;s not working currently. Currently an attempt to attach to a LOV results in assertion failures.</div>

<div><br></div><div>Let&#39;s discuss these matters. The way we&#39;re going to implement this may be roughly expressed as follows:</div><div><br></div><div>1. Attach to LOV device in loadgen, using &quot;device&quot; command. To do so we need to construct new LOV instance, used by loadgen only, as we cannot use LOV instance used by LLITE. This requires changes to handling function for command &quot;device&quot;. It should accept more than one OST target;</div>

<div><br></div><div>2. Stripe size and stripe count of new LOV instance should also be specified while constructing it using &quot;device&quot; command;</div><div><br></div><div>3. Setup of virtual clients should take into account that LOV may be used as a target. In this case attaching dedicated OSCs to created echo_client&#39;s is not needed.</div>

<div><br></div><div>4. In order to be able to run thousands of threads, we need the following:</div><div> - reasonable stack size for threads;</div><div> - change 8192 OBD number limit to something more reasonable.</div>
<div>
<br></div><div>5. Load itself is created in the way being currently used - via obd_brw().</div><div><br></div><div>Thanks.</div><div><br></div><div>-- <br>umka<br>
</div>