Thread (101 messages) 101 messages, 12 authors, 2012-11-28

Re: [patch] x86/vsyscall: Add Kconfig option to use native vsyscalls, switch to it

From: David Rientjes <rientjes@google.com>
Date: 2012-11-21 00:43:32
Also in: lkml

On Tue, 20 Nov 2012, Ingo Molnar wrote:
Subject: x86/vsyscall: Add Kconfig option to use native vsyscalls, switch to it
From: Ingo Molnar <mingo@kernel.org>

Apparently there's still plenty of systems out there triggering
the vsyscall emulation page faults - causing hard to track down
performance regressions on page fault intense workloads...

Some people seem to have run into that with threading-intense
Java workloads.

So until there's a better solution to this, add a Kconfig switch
to make the vsyscall mode configurable and turn native vsyscall
support back on by default.

Distributions whose libraries and applications use the vDSO and never
access the vsyscall page can change the config option to off.

Note, I don't think we want to expose the "none" option via a Kconfig
switch - it breaks the ABI. So it's "native" versus "emulate", with
"none" being available as a kernel boot option, for the super paranoid.

For more background, see these upstream commits:

  3ae36655b97a x86-64: Rework vsyscall emulation and add vsyscall= parameter
  5cec93c216db x86-64: Emulate legacy vsyscalls

Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
It's slightly better, not sure if it's worth changing everybody's default 
for the small speedup here, though.

THP enabled:

   numa/core at ec05a2311c35:		136918.34 SPECjbb2005 bops
   numa/core at 01aa90068b12:		128315.19 SPECjbb2005 bops (-6.3%)
   numa/core at 01aa90068b12 + patch:	128589.34 SPECjbb2005 bops (-6.1%)

THP disabled:

   numa/core at ec05a2311c35:		122246.90 SPECjbb2005 bops
   numa/core at 01aa90068b12:		 99389.49 SPECjbb2005 bops (-18.7%)
   numa/core at 01aa90068b12 + patch:	100726.34 SPECjbb2005 bops (-17.6%)

perf top w/ THP enabled:

    92.56%  perf-13343.map    [.] 0x00007fd513d2ba7a                        
     1.24%  libjvm.so         [.] instanceKlass::oop_push_contents(PSPromoti
     1.01%  libjvm.so         [.] PSPromotionManager::drain_stacks_depth(boo
     0.77%  libjvm.so         [.] PSPromotionManager::copy_to_survivor_space
     0.57%  libjvm.so         [.] PSPromotionManager::claim_or_forward_inter
     0.26%  libjvm.so         [.] Copy::pd_disjoint_words(HeapWord*, HeapWord*, unsi
     0.22%  libjvm.so         [.] CardTableExtension::scavenge_contents_parallel(Obj
     0.20%  [kernel]          [k] read_tsc                                          
     0.15%  [kernel]          [k] _raw_spin_lock                                    
     0.13%  [kernel]          [k] getnstimeofday                                    
     0.12%  [kernel]          [k] page_fault                                        
     0.11%  [kernel]          [k] generic_smp_call_function_interrupt               
     0.10%  [kernel]          [k] ktime_get                                         
     0.10%  [kernel]          [k] rcu_check_callbacks                               
     0.09%  [kernel]          [k] ktime_get_update_offsets                          
     0.09%  libjvm.so         [.] objArrayKlass::oop_push_contents(PSPromotionManage
     0.08%  [kernel]          [k] flush_tlb_func                                    
     0.07%  [kernel]          [k] system_call                                       
     0.07%  libjvm.so         [.] oopDesc::size_given_klass(Klass*)                 
     0.06%  [kernel]          [k] handle_mm_fault                                   
     0.06%  [kernel]          [k] task_tick_fair                                    
     0.05%  libc-2.3.6.so     [.] __gettimeofday                                    
     0.05%  libjvm.so         [.] os::javaTimeMillis()                              
     0.05%  [kernel]          [k] handle_pte_fault                                  
     0.05%  [kernel]          [k] system_call_after_swapgs                          
     0.04%  [kernel]          [k] mpol_misplaced                                    
     0.04%  [kernel]          [k] __do_page_fault                                   
     0.04%  perf              [.] 0x0000000000035903                                
     0.04%  [kernel]          [k] copy_user_generic_string                          
     0.04%  [kernel]          [k] task_numa_fault                                   
     0.04%  [acpi_cpufreq]    [.] 0x000000005f51a009                                
     0.04%  [kernel]          [k] find_vma                                          
     0.04%  [kernel]          [k] run_timer_softirq                                 
     0.03%  [kernel]          [k] sysret_check                                      
     0.03%  [kernel]          [k] smp_call_function_many                            
     0.03%  [kernel]          [k] update_cfs_shares                                 
     0.02%  [kernel]          [k] do_wp_page                                        
     0.02%  [kernel]          [k] get_vma_policy                                    
     0.02%  [kernel]          [k] update_curr                                       
     0.02%  [kernel]          [k] down_read_trylock                                 
     0.02%  [kernel]          [k] apic_timer_interrupt

--
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:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help