Messages in this thread |  | | Date | Tue, 18 Sep 2001 23:02:42 +0200 | From | Andrea Arcangeli <> | Subject | 2.4.10pre11aa1 |
| |
The great news of this release is that thanks to Linus more than half of -aa (the most interesting part of it) is been merged stright into 2.4.10pre11 mainline so you won't need to apply -aa any longer to get the vm-rewrite/kiobuf-preallication/O_DIRECT/vma-merging/blkdev-pagecache features :):).
Thanks also to Marcelo for promptly finding a problem in the vm rewrite, to Al Viro for having spotted promptly a silly bug in the blkdev-pagecache patch (see details on l-k) and for all the people who provided feedback over the last day.
the interesting part of this 11aa1 update are a copuple of vm fixes to the vm rewrite and the read lock in the rwsemaphores that can now be used in a recursive manner without risking deadlocks (it fixes a deadlock condition in the core dumping and /proc stats).
Only in 2.4.10pre10aa1: 00_3c59x-zerocopy-3 Only in 2.4.10pre10aa1: 00_alloc_skb-gfp_dma-bugcheck-1 Only in 2.4.10pre10aa1: 00_alpha-compile-1 Only in 2.4.10pre10aa1: 00_alpha-pc_keyb-1 Only in 2.4.10pre10aa1: 00_alpha-personality-1 Only in 2.4.10pre10aa1: 00_alpha-sysrqT-1 Only in 2.4.10pre10aa1: 00_bh-async-3 Only in 2.4.10pre10aa1: 00_boot-serial-console-1 Only in 2.4.10pre10aa1: 00_cachelinealigned-in-smp-2 Only in 2.4.10pre10aa1: 00_clear_pagetable-smp-1 Only in 2.4.10pre10aa1: 00_copy_strings-str-1 Only in 2.4.10pre10aa1: 00_cpudata-cachelinealigned-1 Only in 2.4.10pre10aa1: 00_delayed-writes-fix-1 Only in 2.4.10pre10aa1: 00_do_swap_page-fix-1 Only in 2.4.10pre10aa1: 00_double-buffer-pass-2 Only in 2.4.10pre10aa1: 00_drop_async-io-get_bh-2 Only in 2.4.10pre10aa1: 00_eepro100-alpha-1 Only in 2.4.10pre10aa1: 00_exception-table-1 Only in 2.4.10pre10aa1: 00_ext2-lookup-rotate-1 Only in 2.4.10pre10aa1: 00_i_blocks-pipe-socket-1 Only in 2.4.10pre10aa1: 00_ide-oops-1 Only in 2.4.10pre10aa1: 00_initrd-release-blkdev-1 Only in 2.4.10pre10aa1: 00_invalidate_device-shrink-dcache-1 Only in 2.4.10pre10aa1: 00_io_apic-lock-1 Only in 2.4.10pre10aa1: 00_iput-debug-1 Only in 2.4.10pre10aa1: 00_ipv6-source-routing-1 Only in 2.4.10pre10aa1: 00_irq-call-prediction-1 Only in 2.4.10pre10aa1: 00_jens-loop-noop-nobounce-1 Only in 2.4.10pre10aa1: 00_km_user-2 Only in 2.4.10pre10aa1: 00_kupdate-large-interval-1 Only in 2.4.10pre10aa1: 00_megaraid-paranoid-1 Only in 2.4.10pre10aa1: 00_meminfo-wraparound-2 Only in 2.4.10pre10aa1: 00_mmap-addr-hint-1 Only in 2.4.10pre10aa1: 00_o_direct-16 Only in 2.4.10pre10aa1: 00_pagetable-fast-2 Only in 2.4.10pre10aa1: 00_pagetables-alloc-none-1 Only in 2.4.10pre10aa1: 00_peekurgdata-1 Only in 2.4.10pre10aa1: 00_sched-rt-fix-1 Only in 2.4.10pre10aa1: 00_show_regs-1 Only in 2.4.10pre10aa1: 00_signal-wakeup-1 Only in 2.4.10pre10aa1: 00_slab-microoptimize-1 Only in 2.4.10pre10aa1: 00_smp_call_function-2 Only in 2.4.10pre10aa1: 00_swapfiles-1 Only in 2.4.10pre10aa1: 00_sync-page-1 Only in 2.4.10pre10aa1: 00_timer_t-2 Only in 2.4.10pre10aa1: 00_vmalloc-flushes-1 Only in 2.4.10pre10aa1: 00_waitqueue-2 Only in 2.4.10pre10aa1: 10_prefetch-8 Only in 2.4.10pre10aa1: 10_rawio-f_iobuf-1 Only in 2.4.10pre10aa1: 10_read_ahead-2 Only in 2.4.10pre10aa1: 10_softirq-wait-network-fixes-2 Only in 2.4.10pre10aa1: 11_prefetch-5_ia64-1 Only in 2.4.10pre10aa1: 40_blkdev-pagecache-17 Only in 2.4.10pre10aa1: 41_blkdev-pagecache-5_drop_get_bh_async-1 Only in 2.4.10pre10aa1: 70_mmap-rb-9 Only in 2.4.10pre10aa1: 80_vm-aa-1
Merged into 2.4.10pre11.
Only in 2.4.10pre10aa1: 00_max-threads-1 Only in 2.4.10pre11aa1: 00_max-threads-backout-1
Max thread change was merged but I just partially backed out, Jari Ruusu reported failed fork because of such change, backing it out fixed things for him. The old 2.4 "half of ram" logic was excessive though, so I did 1/4 instead of 1/16 of the ram now, that should be ok.
Only in 2.4.10pre11aa1: 00_vm-aa-2
description of the patch:
- fixed a race condition in rw_swap_page path: if we need to wait synchronously on the page we must hold a reference on the page or it could be freed by the VM under us after it's been unlocked at I/O completion time (see the page_io.c changes) - don't hide anything (see the new parameter "this_max_scan" to shrink_cache) - don't skip work on the ptes but just don't stop until we unmapped the "interesting" pages from the right classzone - set the task to runnable to avoid lockups with copy_users run within a wait_event interface with the task not runnable - make sure not to pollute the active cache with referenced swapcache - allow deep allocations in case we succeed the balancing but we haven't queued pages in the local freelist and kswapd+GFP_ATOMIC put the number of free pages in the classzone below the atomic watermark for legal reasons (for the record: the atomic watermark is min/2) - block kswapd during oom for 5 sec to allow more graceful task killing - don't fail memory_balancing unless we also failed in making pages freeable (if we made pages freeable and we couldn't find them it means kswapd freed them for us) - refill the inactive list regularly to not left things hanging forever in the active list - don't max_scan all over the active list, just stay at MAX_PRIORITY to better preserve the working set during heavy vm load - make deactivate_page to unset the referenced bit so the page can really be freed, and the other way around for activate_page so it stays there for longer time - initialize need_balance to zero at boot - skip over physically referenced pages queued in the lru lists in swap_out (wait the physical aging to finish before kicking in freeing those pages)
results of the patch:
1) better stability thanks to the race fix ;) 2) tasks should not be killed by mistake unless truly oom (oom handling seems sane too) 3) swapout behaviour should be much better 4) the regular refill of the inactive list should provide better performance in the I/O loads. Infact even dbench runs even faster (but it wasn't really developed to improve dbench).
Only in 2.4.10pre10aa1: 00_increase-logbuffer-1 Only in 2.4.10pre11aa1: 00_increase-logbuffer-2
Rediffed due trivial reject.
Only in 2.4.10pre11aa1: 00_builtin_expect-1
Defines compatibility __builtin_expect() for old compilers.
Only in 2.4.10pre10aa1: 00_copy-user-lat-3 Only in 2.4.10pre11aa1: 00_copy-user-lat-4
Rediffed and changed to use ____builtin_expect while checking for need_resched.
Only in 2.4.10pre11aa1: 00_mmap-enomem-1
Drop an unnecessary error = -ENOMEM setting from mmap.
Only in 2.4.10pre10aa1: 00_module-gfp-3 Only in 2.4.10pre11aa1: 00_module-gfp-4
Rediffed due rejects.
Only in 2.4.10pre10aa1: 00_numa-sched-7 Only in 2.4.10pre11aa1: 00_numa-sched-8
Rediffed due rejects.
Only in 2.4.10pre10aa1: 00_rcu-2
It generated rejects so temporarily removed instead of spending time fixing up the rejects from the tree while waiting the rewrite that uses a per-cpu scheduling sequence number in schedule().
Only in 2.4.10pre10aa1: 00_rwsem-18 Only in 2.4.10pre11aa1: 00_rwsem-19
Allow down_read recursion to fix page fault deadlock with copy_user (this will possibly be reversed if nobody will do copy_user inside a read semaphore critical section). All architectures are corrected by this change.
Only in 2.4.10pre11aa1: 00_silent-stack-overflow-10 Only in 2.4.10pre10aa1: 00_silent-stack-overflow-9
Rediffed due rejects, this still fix a locking SMP race in expand_stack and should be merged into mainline ASAP (if the stack-gap feature is too ugly to live in mainline [despite providing higher degree of robusteness to userspace] I can split off the strict locking fix).
Only in 2.4.10pre10aa1: 60_atomic-alloc-4 Only in 2.4.10pre11aa1: 60_atomic-alloc-5
Rediffed due rejects.
Andrea - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |