设置CPU关联后,udp_recv cpu使用量增加

时间:2016-06-10 05:37:09

标签: c linux-kernel udp affinity

我写了一个简单的udp_recv测试演示,我发现了一件奇怪的事情

如果我将CPU亲和力设置为cpu0,则cpu使用率为5%,但在设置与其他cpu的亲缘关系后,cpu使用率增加到9%~12%,尤其是设置为cpu20 ,cpu使用率超过25%!

我使用perf -e cpu-lock top -p xxxx检查火锅功能 当我将亲和力设置为cpu0时,cpu使用率为5%,我得到了这个:

Samples: 20K of event 'cpu-clock', Event count (approx.): 742033834  
 20.41%  [kernel]      [k] fget_light
 11.84%  [kernel]      [k] copy_user_enhanced_fast_string
  8.63%  [kernel]      [k] sock_recvmsg
  6.49%  [kernel]      [k] _raw_spin_unlock_irqrestore
  5.81%  [kernel]      [k] aa_revalidate_sk
  3.93%  [kernel]      [k] SYSC_recvfrom
  3.85%  [kernel]      [k] sockfd_lookup_light
  3.47%  [kernel]      [k] udp_recvmsg

然后我将CPU亲和力设置为cpu5,cpu使用率为10%,我得到了这个:

Samples: 1K of event 'cpu-clock', Event count (approx.): 286637653
 13.33%  [kernel]      [k] copy_user_enhanced_fast_string
 10.51%  [kernel]      [k] _raw_spin_unlock_irqrestore
  7.02%  [kernel]      [k] fget_light
  5.55%  [kernel]      [k] system_call_after_swapgs
  4.68%  [kernel]      [k] sock_recvmsg
  4.65%  udp_recv      [.] process_udp_connection(int)
  4.21%  [kernel]      [k] __slab_free
  4.15%  libc-2.15.so  [.] __GI___libc_recvfrom
  4.15%  [kernel]      [k] skb_copy_datagram_iovec
  3.76%  [kernel]      [k] inet_recvmsg
  3.45%  [kernel]      [k] __ticket_spin_lock
  3.19%  [kernel]      [k] udp_recvmsg
  2.91%  [kernel]      [k] SYSC_recvfrom
  2.72%  [kernel]      [k] move_addr_to_user
  2.38%  [kernel]      [k] put_compound_page.part.18

然后我将CPU Affinity设置为cpu20,cpu使用率为27%,我得到了这个:

Samples: 238K of event 'cpu-clock', Event count (approx.): 2529242834
16.81%  [kernel]      [k] copy_user_enhanced_fast_string 
 8.46%  [kernel]      [k] udp_recvmsg
 6.48%  [kernel]      [k] _raw_spin_unlock_irqrestore
 4.59%  [kernel]      [k] skb_release_data.part.49
 4.28%  [kernel]      [k] sock_recvmsg
 4.12%  [kernel]      [k] __slab_free
 3.28%  libc-2.15.so  [.] __GI___libc_recvfrom
 3.14%  [kernel]      [k] SYSC_recvfrom
 2.88%  [kernel]      [k] kmem_cache_free
 2.85%  [kernel]      [k] __skb_recv_datagram
 2.71%  [kernel]      [k] inet_recvmsg
 2.71%  [kernel]      [k] system_call_after_swapgs
 2.69%  udp_recv      [.] process_udp_connection(int)
 2.58%  [kernel]      [k] fget_light
 2.03%  [kernel]      [k] skb_free_datagram_locked
 1.92%  [kernel]      [k] skb_release_head_state

我观察到函数copy_user_enhanced_fast_string CPU百分比增加了。我认为这就是原因。

那么为什么CPU亲和力会如此影响呢?

0 个答案:

没有答案