Re: [PATCH] fix obj vma sorting

From: Martin J. Bligh (mbligh@aracnet.com)
Date: Wed Apr 09 2003 - 12:07:51 EST


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/



This archive was generated by hypermail 2b29 : Tue Apr 15 2003 - 22:00:18 EST