Messages in this thread | | | Date | Wed, 09 Apr 2003 10:07:51 -0700 | From | "Martin J. Bligh" <> | Subject | Re: [PATCH] fix obj vma sorting |
| |
Hmmm. Something somewhere went wrong. Some semaphore blew up somewhere ... I'm not convinced that this is your patch causing the problem, I just thought that since vma_link seems to have gone up rather in the profile. I'm playing with getting some better data on what actually happened, but in case someone is feeling psychic.
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/
| |