Skip to content

Instantly share code, notes, and snippets.

@hiboma
Last active August 29, 2015 13:57
Show Gist options
  • Select an option

  • Save hiboma/9855644 to your computer and use it in GitHub Desktop.

Select an option

Save hiboma/9855644 to your computer and use it in GitHub Desktop.

VirtualBox + CentOS6.5 + Mac OSX (Mavericks) で シェルのキー操作が遅いのを調べてる

ここに書いたネタの続き http://d.hatena.ne.jp/hiboma/20140318

perft top で計測してみる

  • perf top -p <sshd> でシェルプロンプトを表示しているプロセスを perf
    • シェルのプロンプトの表示を請け負っているのは sshd。 bash じゃないのに注意
  • シェルプロンプトでエンターキーを押しっぱなしにする
    • ネットワークからの割り込みが続く状態で
  • ネットワーク(irq 19 = virio-net) の smp_affinity を変える
    • デフォルトだと遅い
    • コア数が一番大きいのに割り込みさせると何故か快適になる

何故か快適になる を解明したい

デフォルトのアフィニティの場合

  • シェルのキー操作のレスポンスがもたついてておっそい
# irq19 は virtio-net 
$ echo f | sudo tee /proc/irq/19/smp_affinity

perf top -p の結果はこんなん。_spin_unlock_irqrestore がトップになっとる

Samples: 3K of event 'cpu-clock', Event count (approx.): 1249                                                                                                                        
 29.62%  [kernel]             [k] _spin_unlock_irqrestore    // スピンロックなのに割合デカ過ぎでないですか?                                                                                                                    
 17.61%  libcrypto.so.1.0.1e  [.] vpaes_encrypt                                                                                                                                      
 15.93%  [kernel]             [k] finish_task_switch                                                                                                                                 
  8.97%  sshd                 [.] 0x00000000000547c0                                                                                                                                 
  6.65%  libcrypto.so.1.0.1e  [.] 0x00000000000e3671                                                                                                                                 
  3.76%  [kernel]             [k] iowrite16                                                                                                                                          
  1.76%  libz.so.1.2.3        [.] 0x0000000000007360                                                                                                                                 
  1.52%  [kernel]             [k] ioread8                                                                                                                                            
  1.36%  [kernel]             [k] __do_softirq                                                                                                                                       
  1.20%  [kernel]             [k] __audit_syscall_exit                                                                                                                               
  1.20%  [kernel]             [k] copy_user_generic_string                                                                                                                           
  0.96%  libc-2.12.so         [.] sigemptyset                                                                                                                                        
  0.88%  libc-2.12.so         [.] memcpy                                                                                                                                             

smp_affinity を 一番大きいCPUコアだけにした場合

  • cpu3 だけに割り込みさせる
  • キー操作のレスポンスがいい
$ echo 8 | sudo tee /proc/irq/19/smp_affinity

perf top -p の結果はこんなん。iowrite16 がボトルネックになった

Samples: 2K of event 'cpu-clock', Event count (approx.): 1202                                                                                                                        
 70.38%  [kernel]             [k] iowrite16                 // 文字出力?が時間かかってるのはいいのかな                                                                                                                     
  9.40%  [kernel]             [k] finish_task_switch                                                                                                                                 
  5.24%  libcrypto.so.1.0.1e  [.] vpaes_encrypt                                                                                                                                      
  5.16%  [kernel]             [k] _spin_unlock_irqrestore                                                                                                                            
  3.49%  sshd                 [.] 0x000000000004a251                                                                                                                                 
  3.33%  libcrypto.so.1.0.1e  [.] 0x00000000000e3671                                                                                                                                 
  0.75%  libz.so.1.2.3        [.] 0x0000000000004e16                                                                                                                                 
  0.58%  libc-2.12.so         [.] memcpy                                                                                                                                             
  0.58%  [kernel]             [k] __do_softirq                                                                                                                                       
  0.58%  [kernel]             [k] do_select                                                                                                                                          
  0.17%  [kernel]             [k] __audit_syscall_exit                                                                                                                               
  0.08%  libz.so.1.2.3        [.] deflate                                                                                                                                            
  0.08%  libc-2.12.so         [.] sigemptyset                                                                                                                                        
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment