Beaglebone平台C语言网络程序跨Linux内核性能分析工具咨询
性能剖析:Beaglebone平台新旧Linux内核下Socket服务端/客户端性能差异定位
问题背景
我在Beaglebone平台上编写并编译了C语言服务端与客户端程序,分别在Linux 2.6与4.9版本内核上运行后发现,旧版本内核的性能表现更优。为此需要进行性能剖析,定位函数耗时等问题。
计时代码片段
服务端代码片段
//server snippet while(1){ if(read(new_socket, buf, sizeof(int)) <= 0) break; // timecost start if(!init){ gettimeofday(&begin, NULL); gettimeofday(&start, NULL); init = 1; } c++; if (c / 1000000 != print){ gettimeofday(&end, NULL); printf("%d (%d) tot: %ld, last: %ld\n", print, count, get_usec(begin, end), get_usec(start, end)); print = c / 1000000; gettimeofday(&start, NULL); } // timecost end count++; send(new_socket, buf, sizeof(int), 0); }
客户端代码片段
//client snippet while (1) { send(client_fd, buf, sizeof(int), 0); if (read(client_fd, buf, sizeof(int)) <= 0) break; // timecost start if(!init){ gettimeofday(&begin, NULL); gettimeofday(&start, NULL); init = 1; } c++; if (c / 1000000 != print){ gettimeofday(&end, NULL); printf("%d (%d) tot: %ld, last: %ld\n", print, count, get_usec(begin, end), get_usec(start, end)); print = c / 1000000; gettimeofday(&start, NULL); } // timecost end count++; }
新旧内核测试结果
2.x kernel: 0 (1999999) tot: 4609998, last: 4609984 1 (3999999) tot: 9150170, last: 4540120 4.x kernel: 0 (1999999) tot: 9451743, last: 9451729 1 (3999999) tot: 18892372, last: 9440623
perf分析结果
old: 39.54% server [kernel.kallsyms] [k] finish_task_switch 5.02% server [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore 2.59% server [kernel.kallsyms] [k] nf_hook_slow new: 24.74% server [kernel.kallsyms] [k] finish_task_switch 2.67% server [kernel.kallsyms] [k] nf_hook_slow
求助内容
目前通过perf的初步分析仍无法明确性能差异的根源,请问有哪些可用于调试/剖析系统调用使用情况与内核耗时的工具?
可用工具推荐
perf trace:专门追踪系统调用执行情况,可统计每个系统调用的调用次数、耗时分布,直接对比新旧内核下read/send等关键系统调用的性能差异。strace:跟踪进程的系统调用,加上-T参数显示每个系统调用的耗时,-c参数生成统计报告,直观看到哪些系统调用占用更多时间。ftrace:内核自带追踪工具,可深入内核函数执行流程,通过设置函数探针,记录finish_task_switch、nf_hook_slow等函数的调用耗时、上下文,对比新旧内核的执行路径差异。sysdig:捕获系统调用和内核事件,支持过滤和统计,可视化进程与内核的交互,快速定位性能瓶颈点。time:简单直接,用time ./server对比新旧内核下进程的总运行时间、用户态/内核态耗时占比,先确认性能差异来自用户态还是内核态。
内容的提问来源于stack exchange,提问作者Helen Tan
相关产品推荐
相关产品推荐

