今天做了一件晕事,使用perf dump相同应用程序的两个进程,相当于两个进程完成的任务是一样的,处理的业务是一样的。而且这两个进程是运行在两个不同的cpu上。
但是dump出来的数据里,一个有inet_csk_bind_conflict函数调用,占比比较高;而另一个完全没有这个函数调用。
让人非常的奇怪。怎么会这样?一开始还要以为这个是内核将系统调用调度到了其他CPU,找了半天也没有找到相关的设计。
其实不是调度问题,而是内核里代码逻辑上有些区别。
思维发散的危害之一,就是不够专注!或者是不够较真!如果手头有代码,就是需要看代码逻辑,确认一下再考虑是系统内核的调度问题。