diff mbox

[v3] generic/084: use src/multi_open_unlink to replace tail command

Message ID 1439819393-7713-1-git-send-email-zlang@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zorro Lang Aug. 17, 2015, 1:49 p.m. UTC
generic/084 try to run 'tail' command, tail will use inotify.
There're some limit about the number of inotify. For example
fs.inotify.max_user_instances specifies an upper limit on
the number of inotify instances that can be created per real
user ID.

When I test on a machine with 154 cpu cores, this case run
failed, and hit many warning likes:

    +tail: inotify cannot be used, reverting to polling: Too many open files

Because the fs.inotify.max_user_instances is 128, so if we
try to tail 154 files, it will be failed.

So use src/multi_open_unlink to instead of tail will avoid
this problem.

Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Dave Chinner <david@fromorbit.com>
---
 tests/generic/084 | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

Comments

Zorro Lang Aug. 17, 2015, 2:07 p.m. UTC | #1
----- ???? -----
> ???: "Zorro Lang" <zlang@redhat.com>
> ???: fstests@vger.kernel.org
> ??: eguan@redhat.com, david@fromorbit.com, "Zorro Lang" <zlang@redhat.com>
> ????: ???, 2015? 8 ? 17? ?? 9:49:53
> ??: [PATCH v3] generic/084: use src/multi_open_unlink to replace tail command
> 
> generic/084 try to run 'tail' command, tail will use inotify.
> There're some limit about the number of inotify. For example
> fs.inotify.max_user_instances specifies an upper limit on
> the number of inotify instances that can be created per real
> user ID.
> 
> When I test on a machine with 154 cpu cores, this case run
> failed, and hit many warning likes:
> 
>     +tail: inotify cannot be used, reverting to polling: Too many open files
> 
> Because the fs.inotify.max_user_instances is 128, so if we
> try to tail 154 files, it will be failed.
> 
> So use src/multi_open_unlink to instead of tail will avoid
> this problem.
> 
> Signed-off-by: Zorro Lang <zlang@redhat.com>
> Reviewed-by: Eryu Guan <eguan@redhat.com>
> Reviewed-by: Dave Chinner <david@fromorbit.com>

Hi,

Eryu told me I shouldn't add "Reviewed-by" at here. Sorry for
my mistake, I just thought I should add everyone who helped me.
Please help to review again.

Thanks very much.

Zorro

--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eryu Guan Aug. 17, 2015, 2:24 p.m. UTC | #2
On Mon, Aug 17, 2015 at 09:49:53PM +0800, Zorro Lang wrote:
> generic/084 try to run 'tail' command, tail will use inotify.
> There're some limit about the number of inotify. For example
> fs.inotify.max_user_instances specifies an upper limit on
> the number of inotify instances that can be created per real
> user ID.
> 
> When I test on a machine with 154 cpu cores, this case run
> failed, and hit many warning likes:
> 
>     +tail: inotify cannot be used, reverting to polling: Too many open files
> 
> Because the fs.inotify.max_user_instances is 128, so if we
> try to tail 154 files, it will be failed.
> 
> So use src/multi_open_unlink to instead of tail will avoid
> this problem.

Looks good to me overall, just some nitpicks :)

> 
> Signed-off-by: Zorro Lang <zlang@redhat.com>
> Reviewed-by: Eryu Guan <eguan@redhat.com>
> Reviewed-by: Dave Chinner <david@fromorbit.com>

You shouldn't add "Reviewed-by" tags until reviewer said so.

> ---
>  tests/generic/084 | 15 ++++-----------
>  1 file changed, 4 insertions(+), 11 deletions(-)
> 
> diff --git a/tests/generic/084 b/tests/generic/084
> index 3fec6c2..d5061a7 100755
> --- a/tests/generic/084
> +++ b/tests/generic/084
> @@ -69,15 +69,8 @@ _scratch_mkfs >>$seqres.full 2>&1
>  _scratch_mount
>  
>  # create, open & unlinked files so unlinked inode list is not empty
> -for i in `seq 1 $nr_cpu`; do
> -	testfile=$SCRATCH_MNT/$seq.unlinked.$i
> -	touch $testfile
> -	tail -f $testfile &
> -	tail_pids="$tail_pids $!"
> -done
> -# give tail some time to open the file before the file is removed
> -sleep 1
> -rm -f $SCRATCH_MNT/$seq.unlinked.*
> +src/multi_open_unlink -f $SCRATCH_MNT/$seq.unlinked -n $nr_cpu -s 1000 &

I think the "-s 1000" is not necessary, the default sleep time is 60s
and that's enough for this test (sleep 5 below).

Thanks for fixing this case, and thanks Dave for the pointer to
multi_open_unlink. Now you can add

Reviewed-by: Eryu Guan <eguan@redhat.com>

in your v4 patch :)

Eryu
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tests/generic/084 b/tests/generic/084
index 3fec6c2..d5061a7 100755
--- a/tests/generic/084
+++ b/tests/generic/084
@@ -69,15 +69,8 @@  _scratch_mkfs >>$seqres.full 2>&1
 _scratch_mount
 
 # create, open & unlinked files so unlinked inode list is not empty
-for i in `seq 1 $nr_cpu`; do
-	testfile=$SCRATCH_MNT/$seq.unlinked.$i
-	touch $testfile
-	tail -f $testfile &
-	tail_pids="$tail_pids $!"
-done
-# give tail some time to open the file before the file is removed
-sleep 1
-rm -f $SCRATCH_MNT/$seq.unlinked.*
+src/multi_open_unlink -f $SCRATCH_MNT/$seq.unlinked -n $nr_cpu -s 1000 &
+open_pid=$!
 
 # start link/unlink storm
 src=$SCRATCH_MNT/$seq.target
@@ -96,8 +89,8 @@  done &
 sleep 5
 kill $! >/dev/null 2>&1
 
-kill $tail_pids $link_pids >/dev/null 2>&1
-wait $tail_pids $link_pids
+kill $open_pid $link_pids >/dev/null 2>&1
+wait $open_pid $link_pids
 
 # all done, no oops/hang expected, _check_filesystems checks SCRATCH_DEV after test
 status=0