On Fri, Mar 17, 2006 at 01:26:13PM -0500, Rong-En Fan wrote: > On 3/17/06, Kostik Belousov <kostikbel_at_gmail.com> wrote: > > Just out of curiosity: > > > > could you, please, test this little patch: > > > > Index: sys/nfsclient/nfs_bio.c > > I have been played around with intr/nointr with this patch + some in > nfs_bio.c, nfs_vnops.c. > Here are the results (note that, the revision # below means the > changes made in that > revision), tested on RELENG_6 as of yesterday, i386, SMP. kernel is built with > INVARIANT on. > > * nfs_vnops.c 1.262, nfs_bio.c 1.154 > > - intr > > $ dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.410424 secs (11887474 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C^C^C^C^C^C^C^C^C^C7+0 records in > 6+0 records out > 6291456 bytes transferred in 291.017236 secs (21619 bytes/sec) > (stuck in nfsaio) > > - nointr > > $ dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.264193 secs (12295128 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C12+0 records in > 11+0 records out > 11534336 bytes transferred in 0.990210 secs (11648373 bytes/sec) > > * nfs_vnops.c 1.262 > > - intr > > $dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.238704 secs (12369064 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C > ^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^Ccc^C^C^C^C15+0 records in > 14+0 records out > 14680064 bytes transferred in 677.578696 secs (21665 bytes/sec) > (stuck in nfsaio) > > - nointr > > $ dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.255155 secs (12321244 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C11+0 records in > 10+0 records out > 10485760 bytes transferred in 0.899381 secs (11658864 bytes/sec) > > * nfs_vnops.c 1.262, nfs_bio.c (remove slpflag = 0) > > - intr > > $ dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.245185 secs (12350181 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C > (top's state is changing between CPU0, CPU1, RUN, *Giant) > (11 minutes passed, I reboot this box) > > - nointr > $ dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.454680 secs (11769375 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C17+0 records in > 16+0 records out > 16777216 bytes transferred in 1.458180 secs (11505587 bytes/sec) > > * nfs_vnops.c 1.262, nfs_bio.c 1.154 (remove slpflags = 0) > > - intr > $ dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.386083 secs (11953445 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C > (top's state is changing between CPU0, CPU1, RUN, *Giant) > (44 minutes passwd, I rebooted) > > - noitntr > $ dd if=/dev/zero of=b bs=1m count=50 > 50+0 records in > 50+0 records out > 52428800 bytes transferred in 4.370959 secs (11994805 bytes/sec) > $ dd if=/dev/zero of=b bs=1m count=50 > ^C25+0 records in > 24+0 records out > 25165824 bytes transferred in 2.122789 secs (11855076 bytes/sec) > > Looks like that the changes to nfs_vnops.c last Nov by ps_at_, ^C can really stop > the process, but it take too much time :( > > Hope this helps, > Rong-En Fan Hmm, it seems there are another places to loop forever, e.g, in nfs_bioread(), line 462 or 656. I think that exit on signal from nfs_asyncio() shall cause exit from nfs_bioread too. Sorry, I cannot make the patch now. Will look at this at the next week, if nobody comes out with patch.
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:53 UTC