On Wed, 20 Jun 2001, Rik van Riel wrote:

> > FWIW, here is the vmstat output for the second (short) hang. Taken with
> > ac14, vmstat 1 was started (long) before the hang and interrupted about
> > five seconds after it. The machine has 128MB RAM and 256MB swap.
> 
> >    procs                      memory    swap          io     system         cpu
> >  r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
> >  1  0  0  77000   1464  18444  67324   8   0   152   224  386  1345  26  19  55
> >  2  4  2  77084   1524  18396  66904   0 1876   108  2220 2464 66079   1  98   1
> 
> Does the following patch help with this problem, or are
> you both experiencing something unrelated to this particular
> buglet ?

Hi Rik,

I tried 2.4.6-pre5 with your patch (quoted at the end).
Oberservations: I still see this hang, it seemed to last longer than
with ac14/ac15 (say, 30 seconds). 
There was no heavy swapping going on, eiter before or after the hang.
During the hang there was no disc activity.

Compared with 2.4.5ac I saw that 2.4.6-pre5 uses much less swap
(according to xosview). With the load I tried (many open browser
windows) the ac series used to use 80-100MB of swap; 2.4.6-pre5 only
used 40MB swap for roughly the same number of windows open.

I forgot to press SysRq-T to get a trace, I'm afraid. kdb didn't compile
with this kernel either (although patching worked).

I had vmstat running in another window and stopped it a couple of
seconds after the hang, here are the last line of its output:

   procs                      memory    swap          io     system         cpu
 r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
 2  0  0  36424   3232    888  45036   0   0     4     0  255  3250  56  13  32
 1  0  0  36424   3096    888  45048   0   0    12     0  140  1010  37   6  58
 4  0  0  36424   2964    888  45060   0   0    12     0  228  1304  90   6   4
 3  0  0  36424   3052    900  44668   0   0    88     0  259  2522  88  12   0
 2  0  0  36424   3164    900  44524   0   0     4     0  144  3556  87  13   0
 3  0  0  36424   2812    900  44468   0   0     8     0  211  2007  87  11   3
 5  0  0  36424   2812    912  44108   0   0    20     0  196  1243  92   8   0
 4  0  0  36424   2812    920  43836   0   0   108     0  271  2928  88  12   0
 4  0  0  36424   2808    920  42728   0   0   228     0  284  2042  85  11   5
 2  0  0  36424   3112    924  42416  76 5004   288  5260  385   948  84  11   6
 4  0  0  36424   2816    940  42016   0   0   100     0  223  1252  94   3   3
 3  0  0  36424   2812    944  41472   0   0     0     0  229  1392  92   8   0
 3  0  0  36424   2812    948  41112   0   0    68     0  264  1107  95   3   2
 1  0  0  36424   2932    948  40756   0   0     0     0  262   879  92   8   0
 2  0  0  36424   2808    952  40740   0   0     0     0  191  2244  36  12  53
 4  0  0  36424   2808    952  40504  32   0    32     0  242   975  93   6   2
 2  0  0  36424   3252    956  40008   0   0    64     0  249  2505  85  15   0
 3  0  0  36424   2972    956  39996   0   0     8     0  127  1419  88  10   2
 3  0  0  36424   2988    956  39108   0   0    20     0  247  1632  83  17   0
 2  0  0  36424   3332    964  38496   0   0   176     0  218   955  91   9   0
 3  0  0  36424   3180    964  38724 120   0   232     0  112  3026  89  11   0
   procs                      memory    swap          io     system         cpu
 r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
 4  0  0  36424   3020    968  38800  64   0    64     0  158  2008  87  13   1
 3  0  0  36424   2808    936  38192   0   0   192   552  232   678  90   6   4
 2  0  0  36424   2988    936  37632   0   0     0     4  167   678  98   2   0
 2  0  0  36424   2868    940  37592   0   0     4   104  177  1137  93   7   0
 3  0  0  36396   2852    940  37592   0   0     0    20  185  1125  93   7   0
 4  0  0  36396   2848    984  37624   0   0    60    64  193  1245  92   8   0
 5  0  0  36396   2244   1000  37656   0   0    28   176  161  2377  69  31   0
 1  0  0  36396   2364   1004  37660   0   0     8   244  180  1836  75  25   0
 1  0  1  36396   2484   1004  37780 100   0   104   248  178  2369  61  38   1
 4  0  1  36384   2020   1012  38328 520   0   560   148  185  1696  58  19  22
 6  0  0  45940   1744   1012  47676 108 724   368   868 6886 186930   1  99   0
 2  0  1  45856   2528   1028  46480 272 5480   752  5524  264  2413  82  18   0
 5  0  0  46072   2732   1028  45740   0 6636     8  6636  297  1165  84  16   0
 4  0  0  46072   2532   1028  45776   0   0    20     4  245  3310  88  13   0
 3  0  0  46072   2392   1040  45336   0   0    24     0  119  1296  91   9   0
 2  0  0  46072   2832   1052  44872   0   0    48     4  113  1276  91   9   0
 3  0  0  46072   2392   1056  44544   0   0     0     0  104   943  97   3   0
 2  0  0  46068   2808   1056  44112 1104   0  1164     0  144   870  70  11  19
 1  0  0  46052   2812   1060  44044 216   0   252     0  118  3325  20   6  74
 0  1  0  45964   3000   1104  43216 676   0  1576     0  198  1365   2   8  90
 1  0  0  45964   2976   1212  42948   0   0   332     0  187  1319  10   8  83
   procs                      memory    swap          io     system         cpu
 r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
 1  0  0  45964   2928   1212  42948   0   0     0     0  113  1251   6   3  92
 1  0  0  45964   2924   1212  42948   0   0     0     0  112  1217   2   6  92


Walter




> --- linux/mm/swapfile.c.~1~   Thu May  3 16:34:46 2001
> +++ linux/mm/swapfile.c       Thu May  3 16:36:07 2001
> @@ -67,8 +67,14 @@
>       }
>       /* No luck, so now go finegrined as usual. -Andrea */
>       for (offset = si->lowest_bit; offset <= si->highest_bit ; offset++) {
> -             if (si->swap_map[offset])
> +             if (si->swap_map[offset]) {
> +                     /* Any full pages we find we should avoid
> +                      * looking at next time. */
> +                     if (offset == si->lowest_bit)
> +                             si->lowest_bit++;
>                       continue;
> +             }
> +
>       got_page:
>               if (offset == si->lowest_bit)
>                       si->lowest_bit++;
> @@ -79,6 +85,7 @@
>               si->cluster_next = offset+1;
>               return offset;
>       }
> +     si->highest_bit = 0;
>       return 0;
>  }
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to