2002-11-15 08:01:14

by Andrew Morton

[permalink] [raw]
Subject: 2.5.47-mm3


url: http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.47/2.5.47-mm3/


. A new kgdb stub from George Anzinger. It is significantly
stronger than the old one, especially on SMP systems. There are some
notes from George in the patch itself, as well as numerous
documentation files.

You'll need to disable the serial 16550 driver in kernel config -
it doesn't play right. (Make sure you read George's notes!)

. An updated rbtree-scheduler patch from Jens. This seems to be
working well now.

The huge queues which we've been experimenting with have continued to
pull the VM's pants down, and the last vestiges of the 2.4 page
allocator throttling had to go.

The page allocator will now never throttle a process by making it wait
on IO completion against a particular page or buffer. This has always
caused high latencies, and with the big queues, it could cause ninety
second latencies for the allocation of a single page.

The page allocator will now never throttle a process (except for the
caller of write(2)) by making it sleep on request queues. This is
fundamentally unmanageable because not only can the size of the queue
vary by a lot, but there can be a lot of queues in the machine. So
kill it.


. The busy-wait failure which occurred when more than 40% of memory
was placed under writeout has been fixed.

. The ->vm_writeback address_space_operation has been removed. The
idea behind this was to allow the filesystem to perform writearound
around the particular page. But it had a couple of problems
(described in the patch body).

So it has been removed, and we're back to page-at-a-time writepage
calls in page reclaim.

. As a consequence of going back to writepage in the VM, it is no
longer compulsory that dirty pages be on the address_space's
->dirty_pages list. So the AIO-for-direct-io patch can now dirty
pages from interrupt context. So the patches which made the
mapping->page_lock and mapping->private_lock irq-safe have been
dropped.

. The removal of the last wait_on_page_writeback() in page reclaim
has significantly reduced system latency under heavy swapout loads.

. The big queues have somewhat worsened throughput with swapstormy tests.
Having such large amounts of physical memory under writeout for such
long periods gives the VM much less memory to play with at any point
in time. Needs work. I suspect the queues are just too darn big for
desktop-class machines. We do not intend to leave them this large.

. Several tweaks here to increase the efficiency of page reclaim.
Under really heavy benchmarky loads the VM is now reclaiming 25% of
scanned pages, rather than 10%. Which sounds bad, but actually
isn't.

Most of this gain came from interrupt-time motion of written-back
pages. When IO completes, if the page appears to still be
reclaimable, move it to the tail of the inactive list for immediate
reclaim.

. And a hugetlbpage update.



Changes since 2.5.47-mm2:

-timers-net.patch

Merged

-kgdb.patch

Out with the old

+kgdb-ga.patch

In with the new

+kgdb-reboot.patch

Remote reboot via kgdb

-bttv-timer.patch

Merged into `misc'

-irq-save-vm-locks.patch
-irq-safe-private-lock.patch

No longer needed.

+misc.patch

Misc.

+htlb-combined-2.patch

Bill's stuff

+htlb-fixes.patch

Rohit's stuff

+slab-no-BUG.patch

Replace some gratuitous BUGs in slab with useful messages

+congestion-wait.patch

Fix the big-queue busy-wait problem.

+back-to-writepage.patch

Remove vm_writeback, use writepage.

-swapcache-throttle.patch

wait_on_page() is a disaster.

+simplified-vm-throttling.patch

Always throttle via blk_congestion_wait(). It is a low-latency and
controllable way of slowing page allocators to the rate at which the
IO system can retire writes.

+page-reclaim-motion.patch

Move reclaimable pages at interrupt-time.

+handle-fail-writepage.patch

Handle unwriteable pages at the VM level.

+activate-unreleaseable-pages.patch

Move pinned-via-buffers pages onto the active list.



All patches:


linus.patch
cset-1.823-to-1.856.txt.gz

kgdb-ga.patch
kgdb stub for ia32 (George Anzinger's one)

kgdb-reboot.patch
ADd a `reboot' command to kgdb

rcu-stats.patch
RCU statistics reporting

genksyms-fix.patch
modversions fix for exporting per-cpu data

buffer-debug.patch
buffer.c debugging

mbcache-cleanup.patch
mbcache: add gfp_mask parameter to free() callback, cleanups

rmap-flush-cache-page.patch
flush_cache_page while pte valid

swap-get_page-page-unlock.patch
unlock_page when get_swap_bio fails

swap-writepages-swizzled.patch
Subject: [PATCH] swap writepages swizzled

misc.patch
timer fixes

htlb-combined-2.patch
hugetlb cleanups

htlb-fixes.patch
more hugetlb fixes

slab-no-BUG.patch
improved slab error diagnostics

congestion-wait.patch
Fix busy-wait with writeback to large queues

back-to-writepage.patch
Remove mapping->vm_writeback

aio-direct-io-infrastructure.patch
AIO support for raw/O_DIRECT

aio-direct-io.patch
AIO support for raw/O_DIRECT

inlines-net.patch

reiserfs-readpages.patch
reiserfs v3 readpages support

reiserfs-readpages-fix.patch

remove-inode-buffers.patch
try to remove buffer_heads from to-be-reaped inodes

resurrect-incremental-min.patch
strengthen the `incremental min' logic in the page allocator

unfreeable-zones.patch
VM: handle zones which are full of unreclaimable pages

mpage-kmap.patch
kmap->kmap_atomic in mpage.c

nobh.patch
no-buffer-head ext2 option

inode-reclaim-balancing.patch
better inode reclaim balancing

simplified-vm-throttling.patch
Remove the final per-page throttling site in the VM

auto-unplug.patch
self-unplugging request queues

less-unplugging.patch
Remove most of the blk_run_queues() calls

page-reclaim-motion.patch
Move reclaimable pages to the tail ofthe inactive list on IO completion

handle-fail-writepage.patch
Special-case fail_writepage() in page reclaim

activate-unreleaseable-pages.patch
Move unreleasable pages onto the active list

rbtree-iosched.patch
rbtree-based IO scheduler

page-reservation.patch
Page reservation API

wli-show_free_areas.patch
show_free_areas extensions

kmap-atomic-nfs.patch
Subject: Re: [RFC] use kmap_atomic in the NFS client

dcache_rcu.patch
Use RCU for dcache

shpte-ng.patch
pagetable sharing for ia32


2002-11-15 23:09:16

by Con Kolivas

[permalink] [raw]
Subject: Re: 2.5.47-mm3

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


I dont have anything crypto enabled in the config

In file included from include/net/xfrm.h:6,
from net/core/skbuff.c:61:
include/linux/crypto.h: In function `crypto_tfm_alg_modname':
include/linux/crypto.h:202: dereferencing pointer to incomplete type
include/linux/crypto.h:205: warning: control reaches end of non-void function
make[2]: *** [net/core/skbuff.o] Error 1
make[1]: *** [net/core] Error 2
make: *** [net] Error 2

Con
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.0 (GNU/Linux)

iD8DBQE91YApF6dfvkL3i1gRAoCsAKCVHM1sZofeuVSK7HLZO9RyjQe+kACeKPoz
vdAtgtG2/8DAqe6Vz03Mn8k=
=IFnQ
-----END PGP SIGNATURE-----

2002-11-15 23:53:47

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.5.47-mm3

Con Kolivas wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
(yuk)

> I dont have anything crypto enabled in the config
>
> In file included from include/net/xfrm.h:6,
> from net/core/skbuff.c:61:
> include/linux/crypto.h: In function `crypto_tfm_alg_modname':
> include/linux/crypto.h:202: dereferencing pointer to incomplete type
> include/linux/crypto.h:205: warning: control reaches end of non-void function
> make[2]: *** [net/core/skbuff.o] Error 1
> make[1]: *** [net/core] Error 2
> make: *** [net] Error 2

Looks like you have CONFIG_MODULES=n, but crypto_tfm_alg_modname()
is unconditionally accessing module->name.

Suggest you enable modules, and set all your drivers to "y".

2002-11-16 05:54:28

by James Morris

[permalink] [raw]
Subject: Re: 2.5.47-mm3

On Fri, 15 Nov 2002, Andrew Morton wrote:

> Con Kolivas wrote:

> > In file included from include/net/xfrm.h:6,
> > from net/core/skbuff.c:61:
> > include/linux/crypto.h: In function `crypto_tfm_alg_modname':
> > include/linux/crypto.h:202: dereferencing pointer to incomplete type
>
> Looks like you have CONFIG_MODULES=n, but crypto_tfm_alg_modname()
> is unconditionally accessing module->name.
>

This will be fixed with Rusty's module_name() patch.


- James
--
James Morris
<[email protected]>