From: Jan Schmidt <list.xfs@jan-o-sch.net>
To: Dave Chinner <david@fromorbit.com>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH] xfstests: add execution of a custom command to fsstress (-x and -X options)
Date: Fri, 05 Apr 2013 14:07:58 +0200 [thread overview]
Message-ID: <515EBE9E.3000905@jan-o-sch.net> (raw)
In-Reply-To: <20130324235135.GH6369@dastard>
On Mon, March 25, 2013 at 00:51 (+0100), Dave Chinner wrote:
> On Fri, Mar 22, 2013 at 08:06:49AM +0100, Jan Schmidt wrote:
>> On Thu, March 21, 2013 at 22:12 (+0100), Dave Chinner wrote:> On Thu, Mar 21,
>> 2013 at 09:51:05PM +0100, Jan Schmidt wrote:
>>>>
>>>>
>>>> On 21.03.2013 20:50, Dave Chinner wrote:
>>>>> On Thu, Mar 21, 2013 at 11:59:45AM +0100, Jan Schmidt wrote:
>>>>>> From: Jan Schmidt <list.btrfs@jan-o-sch.net>
>>>>>>
>>>>>> This patch adds execution of a custom command in the middle of all fsstress
>>>>>> operations. Its intended use is the creation of snapshots in the middle of a
>>>>>> test run.
>>>>>
>>>>> Why do you need fsstress to do this? Why can't you just run fsstress
>>>>> in the background and run a loop creating periodic snapshots in the
>>>>> control script?
>>>>
>>>> Because I want reproducible results. Same random seed should result in
>>>> the very same snapshots being created.
>>>
>>> Why can't you run fsstress for N operations, run a snapshot,
>>> then run it again for M operations? That will give you exactly the
>>> same results, wouldn't it?
>>
>> As far as I have understood what fsstress does, the second run would generate
>> different filenames, i.e. it would never rename / truncate / punch holes into /
>> ... files created by the first run - it cannot even know that they exist.
>
> Yes, you are right.
>
>>>>> Also, did you intend that every process creates a snapshot? i.e. it
>>>>> looks lik eif you run a 1000 processes, they'll all run a snapshot
>>>>> operation at X operations? i.e. this will generate nproc * X
>>>>> snapshots in a single run. This doesn't seem very wise to me....
>>>>
>>>> Agreed, I haven't thought of running more than one process. For the sake
>>>> of reproducibility, I wouldn't want multiple processes for my test case
>>>> either.
>>>>
>>>> I'm not sure if there are other applications than snapshot creation for
>>>> such a feature, so I cannot argue whether to have each process execute
>>>> such a command or not.
>>>
>>> If such a feature is necessary, I'd suggest that implementing the
>>> snapshot ioctl as just another operation directly into fsstress is
>>> probably a better way to implement this functionality. That way you
>>> can control the frequency via the command line in exactly the same
>>> way as every other operation....
>>
>> What I currently need is a function to make one reasonably weird snapshot. So my
>> plan goes like this: do n weird operations, make a snapshot (this is going to be
>> the base snapshot), do n weird operations (partly to the same files), make a
>> second snapshot (this is going to be the incremental snapshot, I create that one
>> myself after fsstress is done, currently). Having both snapshots with an equal
>> number of modification operations isn't required, however at least a fair number
>> of operations for each of them is desired.
>
> Ah, so you're wanting to test incremental backups based on
> snapshots. Ok, that context puts it in a different light....
>
>> Adding it as a normal fsstress operation would generate a whole lot of
>> snapshots. I could, for like 50k operations, scale all the factors for each
>> operation accordingly to get a single snapshot out of it. I still won't force it
>> anywhere near the middle that way, though. Also, going from 50k operation to 60k
>> operations gets cumbersome that way.
>
> *nod*
>
>> Plumbing that into fsstress the way I did is the only solution I could think of
>> to reach the mentioned goals. If nobody else needs it, I can of course keep it
>> local, here. However, I'd really like to make an xfstest out of it sooner or
>> later - currently, we've no test at all for (btrfs) send and receive.
>
> For send/receive, you should probably start with some basic tests
> that are easy to verify first. e.g. the equivalent of the basic
> incremental xfsdump/restore tests like 064/065 which do well
> defined, easy to verify operations to determine correct behaviour.
That sounds like a good start.
> I can see the value in adding a random variant in addition to these
> basic tests, so I can see how having a predictable callout from
> fsstress would be useful for incremental xfsdump/restore testing as
> well.
>
> FWIW, what does you current callout execute? A shell script that
> runs a bunch of other commands that ends with a btrfs send?
It's basically just "btrfs subvol snapshot", but yeah, for more complex things
I'd put a shell script there.
> The biggest question I have about this is how to make it valuable
> for more types of fsstress execution, especially concurrent
> execution. I can't see a use (yet) for a per-process callout, but
> I'm wondering if we should have some kind of "wait for all processes
> to do N ops, then run the callout" style of synchronisation.
>
> I'm not sure what is best here as I don't know the full context of
> what you are wanting to test (and how), but I think we can come up
> with something better than "only works for single process
> invocations". :)
Well, in fact you do have the full context of what I'm wanting to test, as far
as I can see it.
I bet we could came up with a suggestion how to interpret something like the
proposed -x switch in multi process context. However, I don't like to code for
hypothetic situations I cannot really imagine a use case for. So, the best thing
I came up with is a switch that can do something meaningful in single process
applications of fsstress.
I'm happy to code the rest of it, if a good suggestion comes up how this could
be handled and how it could be useful to others as well.
Thanks!
-Jan
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-04-05 12:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-21 10:59 [PATCH] xfstests: add execution of a custom command to fsstress (-x and -X options) Jan Schmidt
2013-03-21 19:50 ` Dave Chinner
2013-03-21 20:51 ` Jan Schmidt
2013-03-21 21:12 ` Dave Chinner
2013-03-22 7:06 ` Jan Schmidt
2013-03-24 23:51 ` Dave Chinner
2013-04-05 12:07 ` Jan Schmidt [this message]
2013-05-03 14:43 ` Jan Schmidt
2013-05-09 19:47 ` Rich Johnston
2013-05-09 19:50 ` Rich Johnston
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=515EBE9E.3000905@jan-o-sch.net \
--to=list.xfs@jan-o-sch.net \
--cc=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox