Linux,C,锁定分析

时间:2017-08-31 20:21:50

标签: linux sockets tcp locking perf

我正在撰写TCP socket个应用程序。

在大量TCP连接的情况下,我发现有很多

slock-AF_INET 

sk_lock-AF_INET

read rcu_read_loc
然后我会对这些锁做一个简单的统计数据:

root@ubuntu1604:~/test-tool-for-linux/src# perf lock script
          ......
          test-tool 21098 [000]  7591.565861:   lock:lock_acquire: 0xffff9eea2ffeec20 slock-AF_INET
          test-tool 21098 [000]  7591.565865:   lock:lock_acquire: 0xffffffff93e68160 read rcu_read_loc
          test-tool 21098 [000]  7591.565866:   lock:lock_acquire: 0xffff9eea5e804be0 slock-AF_INET
          test-tool 21098 [000]  7591.565866:   lock:lock_acquire: 0xffff9eea5e804c70 sk_lock-AF_INET
          test-tool 21098 [000]  7591.565867:   lock:lock_acquire: 0xffff9eea5e804be0 slock-AF_INET
          test-tool 21098 [000]  7591.565868:   lock:lock_acquire: 0xffffffff93e68160 read rcu_read_loc
          test-tool 21098 [000]  7591.565869:   lock:lock_acquire: 0xffff9eea5e804be0 slock-AF_INET
          test-tool 21098 [000]  7591.565870:   lock:lock_acquire: 0xffff9eea5e804c70 sk_lock-AF_INET
          test-tool 21098 [000]  7591.565872:   lock:lock_acquire: 0xffff9eea5e804be0 slock-AF_INET
          test-tool 21098 [000]  7591.565875:   lock:lock_acquire: 0xffffffff93e68160 read rcu_read_loc
          test-tool 21098 [000]  7591.565876:   lock:lock_acquire: 0xffff9eea1d96a0e0 slock-AF_INET

root@ubuntu1604:~/test-tool-for-linux/src# perf lock script > lock.log
Warning:
Processed 9195881 events and lost 224 chunks!

Check IO/CPU overload!

root@ubuntu1604:~/test-tool-for-linux/src# cat lock.log | grep slock-AF_INET | wc -l
604748
root@ubuntu1604:~/test-tool-for-linux/src# cat lock.log | grep sk_lock-AF_INET | wc -l
59991
root@ubuntu1604:~/test-tool-for-linux/src# cat lock.log | grep rcu_read_loc | wc -l
4806082

您能帮我理解这些锁是什么以及如何解决高锁使用问题吗?

谢谢!

0 个答案:

没有答案