The main thing I changed here (66-mjb2 -> 67-mjb0.2) was to pick up
Andrew's rmap speedups, and drop the objrmap code I had for the stuff
he had. *However*, what he had worked fine. I also picked up your
sorting patch here Hugh ... this bit worries me:
+static void move_vma_start(struct vm_area_struct *vma, unsigned long addr)
+{
+ spinlock_t *lock = &vma->vm_mm->page_table_lock;
+ struct inode *inode = NULL;
+
+ if (vma->vm_file) {
+ inode = vma->vm_file->f_dentry->d_inode;
+ down(&inode->i_mapping->i_shared_sem);
+ }
+ spin_lock(lock);
+ if (inode)
+ __remove_shared_vm_struct(vma, inode);
+ /* If no vm_file, perhaps we should always keep vm_pgoff at 0?? */
+ vma->vm_pgoff += (long)(addr - vma->vm_start) >> PAGE_SHIFT;
+ vma->vm_start = addr;
+ if (inode) {
+ __vma_link_file(vma);
+ up(&inode->i_mapping->i_shared_sem);
+ }
+ spin_unlock(lock);
+}
M.
DISCLAIMER: SPEC(tm) and the benchmark name SDET(tm) are registered
trademarks of the Standard Performance Evaluation Corporation. This
benchmarking was performed for research purposes only, and the run results
are non-compliant and not-comparable with any published results.
Results are shown as percentages of the first set displayed
SDET 128 (see disclaimer)
Throughput Std. Dev
2.5.66 100.0% 0.2%
2.5.67 97.7% 5.1%
2.5.66-mm2 176.1% 0.6%
2.5.67-mm1 176.7% 0.2%
2.5.66-mjb2 181.8% 0.0%
2.5.67-mjb0.2 141.1% 0.1%
diffprofile {2.5.66-mjb2,2.5.67-mjb0.2}/sdetbench/128/profile
(these are at 100 Hz).
12913 38.8% default_idle
12472 20.2% total
3085 912.7% __down
1026 385.7% schedule
946 666.2% __wake_up
904 0.0% __d_lookup
626 0.0% move_vma_start
452 6457.1% __vma_link
159 40.9% remove_shared_vm_struct
84 36.4% do_no_page
69 22.5% copy_mm
65 125.0% vma_link
37 528.6% default_wake_function
31 9.0% do_wp_page
29 290.0% rb_insert_color
19 95.0% try_to_wake_up
18 450.0% __vma_link_rb
17 6.0% clear_page_tables
15 20.3% handle_mm_fault
14 140.0% find_vma_prepare
14 700.0% __rb_rotate_left
13 46.4% exit_mmap
11 110.0% kunmap_atomic
10 24.4% do_mmap_pgoff
...
-102 -58.6% __read_lock_failed
-124 -43.5% path_release
-126 -17.7% __copy_to_user_ll
-168 -20.1% release_pages
-189 -21.1% page_add_rmap
-223 -33.2% path_lookup
-241 -15.3% zap_pte_range
-247 -18.3% page_remove_rmap
-310 -46.5% follow_mount
-405 -70.7% .text.lock.dcache
-425 -76.6% .text.lock.namei
-551 -49.5% atomic_dec_and_lock
-628 -71.2% .text.lock.dec_and_lock
-1148 -98.5% d_lookup
diffprofile {2.5.67-mm1,2.5.67-mjb0.2}/sdetbench/128/profile
110028 31.3% default_idle
92085 14.2% total
31265 1054.5% __down
10473 428.0% schedule
9351 611.6% __wake_up
6260 0.0% move_vma_start
4200 1076.9% __vma_link
1328 32.0% remove_shared_vm_struct
831 1695.9% find_trylock_page
567 17.8% copy_mm
428 57.7% vma_link
380 633.3% default_wake_function
294 306.2% rb_insert_color
182 87.5% try_to_wake_up
177 411.6% __vma_link_rb
158 62.7% exit_mmap
150 0.0% rcu_do_batch
135 540.0% __rb_rotate_left
...
-196 -31.3% block_invalidatepage
-202 -39.5% ext2_new_block
-204 -54.5% .text.lock.inode
-208 -33.1% task_mem
-213 -6.6% clear_page_tables
-213 -55.6% d_lookup
-218 -44.7% select_parent
-228 -21.2% kmap_high
-235 -46.5% read_block_bitmap
-241 -47.2% d_path
-244 -57.5% complete
-261 -100.0% group_release_blocks
-263 -31.6% proc_root_link
-264 -17.9% number
-295 -38.6% strnlen_user
-296 -26.8% task_vsize
-320 -49.2% generic_file_aio_write_nolock
-331 -75.1% call_rcu
-334 -23.3% __fput
-336 -56.4% may_open
-339 -35.3% dput
-343 -51.0% __find_get_block_slow
-348 -40.6% d_instantiate
-354 -65.1% __alloc_pages
-371 -41.6% prune_dcache
-377 -100.0% group_reserve_blocks
-380 -22.6% release_task
-398 -55.4% generic_fillattr
-398 -31.4% exit_notify
-420 -51.9% unmap_vmas
-424 -35.5% file_kill
-427 -72.7% read_inode_bitmap
-435 -41.2% proc_check_root
-459 -16.3% free_pages_and_swap_cache
-480 -14.3% do_anonymous_page
-517 -43.9% ext2_new_inode
-519 -72.2% ext2_get_group_desc
-527 -35.9% fd_install
-537 -28.8% d_alloc
-559 -30.4% __find_get_block
-574 -49.7% __mark_inode_dirty
-575 -38.0% .text.lock.highmem
-580 -44.6% .text.lock.attr
-598 -24.6% file_move
-603 -23.4% copy_process
-628 -27.4% filemap_nopage
-633 -42.1% __set_page_dirty_buffers
-634 -24.0% proc_pid_stat
-636 -42.2% .text.lock.base
-705 -28.5% link_path_walk
-716 -60.9% flush_signal_handlers
-758 -11.5% __copy_to_user_ll
-780 -52.0% .text.lock.file_table
-781 -36.3% free_hot_cold_page
-834 -91.2% update_atime
-906 -42.2% buffered_rmqueue
-916 -56.0% __read_lock_failed
-920 -34.3% kmem_cache_free
-993 -38.1% path_release
-1002 -71.0% __brelse
-1106 -13.6% page_add_rmap
-1256 -39.7% pte_alloc_one
-1303 -29.3% do_no_page
-1365 -83.5% grab_block
-1522 -80.4% current_kernel_time
-1819 -21.4% release_pages
-1902 -14.2% copy_page_range
-2149 -32.4% path_lookup
-2150 -62.3% .text.lock.namei
-2464 -21.4% __d_lookup
-2486 -26.1% find_get_page
-2499 -41.2% follow_mount
-3174 -22.3% page_remove_rmap
-3217 -65.7% .text.lock.dcache
-4119 -42.3% atomic_dec_and_lock
-4359 -24.6% zap_pte_range
-4551 -100.0% .text.lock.filemap
-4665 -64.7% .text.lock.dec_and_lock
-
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/