* 2.5.72-mm1 @ 2003-06-17 8:40 Andrew Morton 2003-06-18 21:24 ` 2.5.72-mm1 William Lee Irwin III 0 siblings, 1 reply; 2+ messages in thread From: Andrew Morton @ 2003-06-17 8:40 UTC (permalink / raw) To: linux-kernel, linux-mm ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.72/2.5.72-mm1/ . A fairly large batch of changes in the block request allocation, batching and throttling code. To address worst-case latency, improve throughput in benchmarky loads, etc. . The memory debugging patch which unmaps pages and large slab objects from the kernel virtual address space is back. Changes since 2.5.71-mm1: -yenta-unload-oops-fix.patch -rpc-depopulate-fix.patch Merged +ppc64-fixes-2.patch PPC64 touchups from Anton +pcmcia-detect-fix.patch CardSevices fix +1-kmem-cache-destroy.patch Tidy up slab error message handling. +2-slab-poison-fix.patch Corectly poison uninitialised memory with 0x5a5a5a5a +3-unmap-page-debugging.patch New version of Manfred's unmap-unused-kernel-pages debug patch +sysv-semundo-fixes.patch sysv IPC fixes +raw-devfs-support.patch devfs support for /dev/raw/* +misc5.patch Misc fixes +scroll-distance-fix.patch Support console scrolling of more then +127/-128 rows +generic-io-contexts.patch +blk-request-batching.patch +get_io_context-fix.patch +blk-allocation-commentary.patch +blk-batching-throttle-fix.patch Block request batching fairness and efficiency. +io_submit_one-EINVAL-fix.patch AIO error handling fix. -aio-poll.patch Dropped: apparently incorrect and obviously not being tested. +lock_buffer_wq-fix.patch buffer locking BUG fix +unuse_mm-locked.patch Might fix some problems with the new AIO patches. +time-goes-backwards.patch Demonstrate that do_gettimeofday() tends to leap backwards 45 seconds. +keventd-thread-cleanup.patch kmod fixes +skip-apic-ids-on-boot.patch Ability to disable specific APICs +AT_SECURE-auxv-entry.patch Security stuff All 176 patches: mm.patch add -mmN to EXTRAVERSION kgdb-ga.patch kgdb stub for ia32 (George Anzinger's one) kgdb-use-ggdb.patch HZ-100.patch config_spinline.patch uninline spinlocks for profiling accuracy. ppc64-fixes-2.patch Maek ppc64 compile ppc64-bat-initialisation-fix.patch ppc64: BAT initialisation fix ppc64-pci-update.patch ppc64-reloc_hide.patch ppc64-semaphore-reimplementation.patch ppc64: use the ia32 semaphore implementation sym-do-160.patch make the SYM driver do 160 MB/sec x86_64-fixes.patch x86_64 fixes irqreturn-snd-via-fix.patch via sound irqreturn fix config-PAGE_OFFSET.patch Configurable kenrel/user memory split pcmcia-detect-fix.patch pcmcia detection fix lru_cache_add-check.patch lru_cache_add debug check delay-ksoftirqd-fallback.patch Try harded in IRQ context before falling back to ksoftirqd fb-image-depth-fix.patch fbdev image depth fix ds-09-vicam-usercopy-fix.patch vicam usercopy fix buffer-debug.patch buffer.c debugging show_stack-cleanup.patch show_stack() portability and cleanup patch ppc64-show_stack.patch e100-use-after-free-fix.patch statfs64-3.patch Add system calls statfs64 and fstatfs64 statfs64-3-fixes-1.patch 1-kmem-cache-destroy.patch kmem_cache_destroy(): use slab_error() 2-slab-poison-fix.patch slab poisoning fix 3-unmap-page-debugging.patch page unmappng debug patch VM_RESERVED-check.patch VM_RESERVED check rcu-stats.patch RCU statistics reporting sysv-semundo-fixes.patch sysv semundo raw-devfs-support.patch raw.c devfs support ide_setting_sem-fix.patch hugetlbfs-size-inodes-mount-option.patch hugetlbfs: specify size & inodes at mount reslabify-pgds-and-pmds.patch re-slabify i386 pgd's and pmd's misc5.patch misc fixes scroll-distance-fix.patch Premit big console scrolls linux-isp.patch isp-update-1.patch isp-remove-pci_detect.patch list_del-debug.patch list_del debug check airo-schedule-fix.patch airo.c: don't sleep in atomic regions resurrect-batch_requests.patch bring back the batch_requests function kblockd.patch Create `kblockd' workqueue cfq-infrastructure.patch elevator-completion-api.patch elevator completion API as-iosched.patch anticipatory I/O scheduler as-proc-read-write.patch AS: pgbench improvement as-discrete-read-fifo-batches.patch AS: discrete read fifo batches as-sync-async.patch AS sync/async batches as-hash-removal-fix.patch AS: hash removal fix as-jumbo-patch-for-scsi.patch AS jumbo patch (for SCSI and TCQ) as-stupid.patch AS: fix stupid thinko as-no-batch-antic-limit.patch AS: no batch-antic-limit as-autotune-write-batches.patch AS: autotune write batches as-div-by-zero-fix.patch AS: divide by zero fix as-more-HZ.patch AS: more HZ != 1000 fixes as-even-more-write-batch-tuning.patch AS: update_write_batch tuning as-locking.patch AS locking as-HZ.patch AS HZ fixes as-double-free-and-debug.patch AS: fix a leak + more debugging as-fix-seek-estimation.patch AS: maybe repair performance drop of random read O_DIRECT as-fix-seeky-loads.patch AS: fix IBM's seek load unplug-use-kblockd.patch Use kblockd for running request queues cfq-2.patch CFQ scheduler, #2 CFQ: update to rq-dyn API cfq-hash-removal-fix.patch CFQ: hash removal fix cfq-list_del-fix.patch CFQ: empty the queuelist per-queue-nr_requests.patch per queue nr_requests blk-invert-watermarks.patch blk_congestion_wait threshold cleanup blk-as-hint.patch blk-as-hint get_request_wait-oom-fix.patch handle OOM in get_request_wait(). blk-fair-batches.patch blk-fair-batches blk-fair-batches-2.patch blk fair batches #2 generic-io-contexts.patch generic io contexts blk-request-batching.patch block request batching get_io_context-fix.patch get_io_context fixes blk-allocation-commentary.patch block allocation comments blk-batching-throttle-fix.patch blk batch requests fix print-build-options-on-oops.patch print a few config options on oops mmap-prefault.patch prefault of executable mmaps bio-debug-trap.patch BIO debugging patch sound-irq-hack.patch show_task-free-stack-fix.patch show_task() fix and cleanup put_task_struct-debug.patch ia32-mknod64.patch mknod64 for ia32 ext2-64-bit-special-inodes.patch ext2: support for 64-bit device nodes ext3-64-bit-special-inodes.patch ext3: support for 64-bit device nodes 64-bit-dev_t-kdev_t.patch 64-bit dev_t and kdev_t oops-dump-preceding-code.patch i386 oops output: dump preceding code lockmeter.patch ext3-no-bkl.patch ext3: move lock_kernel() down into the JBD layer. journal_get_write_access-speedup.patch JBD: journal_get_write_access() speedup ext3-concurrent-block-inode-allocation.patch ext3: concurrent block/inode allocation Fix orlov allocator boundary case ext3-concurrent-block-allocation-hashed.patch ext3: scalable counters and locks fix ext3 inode allocator race jbd-010-b_committed_data-race-fix.patch JBD: fix race over access to b_committed_data jbd-020-locking-schema.patch JBD: plan JBD locking schema jbd-030-remove-splice_lock.patch JBD: remove jh_splice_lock jbd-040-journal_add_journal_head-locking.patch JBD: fine-grain journal_add_journal_head locking jbd-045-rename-journal_unlock_journal_head.patch JBD: rename journal_unlock_journal_head to journal_put_journal_head jbd-050-b_frozen_data-locking.patch JBD: Finish protection of journal_head.b_frozen_data jbd-060-b_committed_data-locking.patch JBD: implement b_committed_data locking jbd-070-b_transaction-locking.patch JBD: implement b_transaction locking rules jbd-080-b_next_transaction-locking.patch JBD: Implement b_next_transaction locking rules jbd-090-b_tnext-locking.patch JBD: b_tnext locking jbd-100-remove-journal_datalist_lock.patch JBD: remove journal_datalist_lock jbd-110-t_nr_buffers-locking.patch JBD: t_nr_buffers locking jbd-120-t_updates-locking.patch JBD: t_updates locking jbd-130-t_outstanding_credits-locking.patch JBD: implement t_outstanding_credits locking jbd-140-t_jcb-locking.patch JBD: implement t_jcb locking jbd-150-j_barrier_count-locking.patch JBD: implement j_barrier_count locking jbd-160-j_running_transaction-locking.patch JBD: implement j_running_transaction locking jbd-170-j_committing_transaction-locking.patch JBD: implement j_committing_transaction locking jbd-180-j_checkpoint_transactions.patch JBD: implement j_checkpoint_transactions locking jbd-190-j_head-locking.patch JBD: implement journal->j_head locking jbd-200-j_tail-locking.patch JBD: implement journal->j_tail locking jbd-210-j_free-locking.patch JBD: implement journal->j_free locking jbd-220-j_commit_sequence-locking.patch JBD: implement journal->j_commit_sequence locking jbd-230-j_commit_request-locking.patch JBD: implement j_commit_request locking jbd-240-dual-revoke-tables.patch JBD: implement dual revoke tables. jbd-250-remove-sleep_on.patch JBD: remove remaining sleep_on()s jbd-300-remove-lock_kernel.patch JBD: remove lock_kernel() jbd-400-remove-lock_journal.patch JBD: remove lock_journal() jbd-510-h_credits-fix.patch JBD: journal_release_buffer: handle credits fix jbd-520-journal_unmap_buffer-race.patch JBD: journal_unmap_buffer race fix jbd-530-walk_page_buffers-race-fix.patch ext3: ext3_writepage race fix jbd-540-journal_try_to_free_buffers-race-fix.patch JBD: buffer freeing non-race comment jbd-550-locking-checks.patch JBD: add some locking assertions jbd-570-transaction-state-locking.patch JBD: additional transaction shutdown locking jbd-580-log_start_commit-race-fix.patch JBD: fix log_start_commit race jbd-590-do_get_write_access-speedup.patch JBD: do_get_write_access() speedup ext3-010-fix-journalled-data.patch ext3: fix data=journal mode ext3-035-journal_try_to_free_buffers-race-fix.patch ext3-040-recursive-ext3_write_inode-check.patch ext3: add a dump_stack() ext3-050-ioctl-transaction-leak.patch ext3: fix error-path handle leak ext3-070-xattr-clone-leak-fix.patch Fix leak in ext3_acl_chmod() ext3-080-remove-block-inode-count-message.patch ext3: remove mount-time diagnostic messages jbd-600-journal_dirty_metadata-speedup.patch JBD: journal_dirty_metadata() speedup jbd-610-journal_dirty_metadata-diags.patch JBD: journal_dirty_metadata diagnostics jbd-620-commit-vs-start-race-fix.patch JBD: fix race between journal_commit_transaction and start_this_handle ext3-090-journalled-writepage-vs-truncate-fix.patch ext3: fix data=journal for small blocksize jbd-630-remove-j_commit_timer_active.patch JBD: remove j_commit_timer_active jbd-650-truncate-ordered-pages.patch ext3: explicitly free truncated pages jbd-660-log_do_checkpoint-fix.patch JBD: log_do_checkpoint() locking fixes jbd-670-log_start_commit-locking-fix.patch JBD: fix locking around log_start_commit() jbd-680-log_wait_for_space-fix.patch JBD: hold onto j_state_lock after log_wait_for_space(). invalidate_mmap_range.patch Interface to invalidate regions of mmaps aio-01-retry.patch AIO: Core retry infrastructure io_submit_one-EINVAL-fix.patch Fix aio process hang on EINVAL aio-02-lockpage_wq.patch AIO: Async page wait aio-03-fs_read.patch AIO: Filesystem aio read aio-04-buffer_wq.patch AIO: Async buffer wait aio-05-fs_write.patch AIO: Filesystem aio write aio-05-fs_write-fix.patch aio-06-bread_wq.patch AIO: Async block read aio-06-bread_wq-fix.patch aio-07-ext2getblk_wq.patch AIO: Async get block for ext2 O_SYNC-speedup-2.patch speed up O_SYNC writes aio-09-o_sync.patch aio O_SYNC aio-10-BUG-fix.patch AIO: fix a BUG aio-11-workqueue-flush.patch AIO: flush workqueues before destroying ioctx'es aio-12-readahead.patch AIO: readahead fixes lock_buffer_wq-fix.patch lock_buffer_wq fix unuse_mm-locked.patch AIO: hold the context lock across unuse_mm vfsmount_lock.patch From: Maneesh Soni <maneesh@in.ibm.com> Subject: [patch 1/2] vfsmount_lock syncppp-locking-fix.patch syncppp locking fix sched-hot-balancing-fix.patch fix for CPU scheduler load distribution truncate-pagefault-race-fix.patch Fix vmtruncate race and distributed filesystem race remove-swapper_inode.patch remove swapper_inode sync-write-more-pages.patch dirty inode writeback fix workqueue-reorg-fix.patch workqueue.c subtle fix and core extraction task_struct-use-after-free-fix.patch proc_pid_lookup use-after-free fix sleepometer.patch sleep instrumentation time-goes-backwards.patch demonstrate do_gettimeofday() going backwards keventd-thread-cleanup.patch Fix kmod return value skip-apic-ids-on-boot.patch skip apicids on boot AT_SECURE-auxv-entry.patch AT_SECURE auxv entry -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: 2.5.72-mm1 2003-06-17 8:40 2.5.72-mm1 Andrew Morton @ 2003-06-18 21:24 ` William Lee Irwin III 0 siblings, 0 replies; 2+ messages in thread From: William Lee Irwin III @ 2003-06-18 21:24 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm On Tue, Jun 17, 2003 at 01:40:44AM -0700, Andrew Morton wrote: > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.72/2.5.72-mm1/ > . A fairly large batch of changes in the block request allocation, > batching and throttling code. To address worst-case latency, improve > throughput in benchmarky loads, etc. > . The memory debugging patch which unmaps pages and large slab objects > from the kernel virtual address space is back. The following patch implements node-local memory allocation support for hugetlb. Successfully tested on NUMA-Q. -- wli diff -prauN linux-2.5.72/arch/i386/mm/hugetlbpage.c htlb-2.5.72-1/arch/i386/mm/hugetlbpage.c --- linux-2.5.72/arch/i386/mm/hugetlbpage.c 2003-06-16 21:20:22.000000000 -0700 +++ htlb-2.5.72-1/arch/i386/mm/hugetlbpage.c 2003-06-17 14:04:05.000000000 -0700 @@ -24,9 +24,41 @@ static long htlbpagemem; int htlbpage_max; static long htlbzone_pages; -static LIST_HEAD(htlbpage_freelist); +static struct list_head hugepage_freelists[MAX_NUMNODES]; static spinlock_t htlbpage_lock = SPIN_LOCK_UNLOCKED; +static void enqueue_huge_page(struct page *page) +{ + list_add(&page->list, + &hugepage_freelists[page_zone(page)->zone_pgdat->node_id]); +} + +static struct page *dequeue_huge_page(void) +{ + int nid = numa_node_id(); + struct page *page = NULL; + + if (list_empty(&hugepage_freelists[nid])) { + for (nid = 0; nid < MAX_NUMNODES; ++nid) + if (!list_empty(&hugepage_freelists[nid])) + break; + } + if (nid >= 0 && nid < MAX_NUMNODES && !list_empty(&hugepage_freelists[nid])) { + page = list_entry(hugepage_freelists[nid].next, struct page, list); + list_del(&page->list); + } + return page; +} + +static struct page *alloc_fresh_huge_page(void) +{ + static int nid = 0; + struct page *page; + page = alloc_pages_node(nid, GFP_HIGHUSER, HUGETLB_PAGE_ORDER); + nid = (nid + 1) % numnodes; + return page; +} + void free_huge_page(struct page *page); static struct page *alloc_hugetlb_page(void) @@ -35,13 +67,11 @@ static struct page *alloc_hugetlb_page(v struct page *page; spin_lock(&htlbpage_lock); - if (list_empty(&htlbpage_freelist)) { + page = dequeue_huge_page(); + if (!page) { spin_unlock(&htlbpage_lock); return NULL; } - - page = list_entry(htlbpage_freelist.next, struct page, list); - list_del(&page->list); htlbpagemem--; spin_unlock(&htlbpage_lock); set_page_count(page, 1); @@ -253,7 +283,7 @@ void free_huge_page(struct page *page) INIT_LIST_HEAD(&page->list); spin_lock(&htlbpage_lock); - list_add(&page->list, &htlbpage_freelist); + enqueue_huge_page(page); htlbpagemem++; spin_unlock(&htlbpage_lock); } @@ -369,7 +399,8 @@ int try_to_free_low(int count) map = NULL; spin_lock(&htlbpage_lock); - list_for_each(p, &htlbpage_freelist) { + /* all lowmem is on node 0 */ + list_for_each(p, &hugepage_freelists[0]) { if (map) { list_del(&map->list); update_and_free_page(map); @@ -406,11 +437,11 @@ int set_hugetlb_mem_size(int count) return (int)htlbzone_pages; if (lcount > 0) { /* Increase the mem size. */ while (lcount--) { - page = alloc_pages(__GFP_HIGHMEM, HUGETLB_PAGE_ORDER); + page = alloc_fresh_huge_page(); if (page == NULL) break; spin_lock(&htlbpage_lock); - list_add(&page->list, &htlbpage_freelist); + enqueue_huge_page(page); htlbpagemem++; htlbzone_pages++; spin_unlock(&htlbpage_lock); @@ -451,12 +482,15 @@ static int __init hugetlb_init(void) int i; struct page *page; + for (i = 0; i < MAX_NUMNODES; ++i) + INIT_LIST_HEAD(&hugepage_freelists[i]); + for (i = 0; i < htlbpage_max; ++i) { - page = alloc_pages(__GFP_HIGHMEM, HUGETLB_PAGE_ORDER); + page = alloc_fresh_huge_page(); if (!page) break; spin_lock(&htlbpage_lock); - list_add(&page->list, &htlbpage_freelist); + enqueue_huge_page(page); spin_unlock(&htlbpage_lock); } htlbpage_max = htlbpagemem = htlbzone_pages = i; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-06-18 21:24 UTC | newest] Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-06-17 8:40 2.5.72-mm1 Andrew Morton 2003-06-18 21:24 ` 2.5.72-mm1 William Lee Irwin III
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox