深入理解wayca-scheduler-bench的监控机制:ftrace与perf的高级应用技巧

深入理解wayca-scheduler-bench的监控机制:ftrace与perf的高级应用技巧

【免费下载链接】wayca-scheduler-benchwayca-scheduler-bench is a configurable test suite that runs performance tests against arbitrary workloads. Forked from Mel Gorman's mmtests.项目地址: https://gitcode.com/openeuler/wayca-scheduler-bench

前往项目官网免费下载:https://ar.openeuler.org/ar/

wayca-scheduler-bench是一款功能强大的可配置测试套件,专为针对任意工作负载运行性能测试而设计。作为从Mel Gorman的mmtests项目 fork 而来的工具,它在监控机制方面融合了ftrace与perf等高级工具,为用户提供了全面且深入的性能分析能力。

一、wayca-scheduler-bench监控机制概述 📊

wayca-scheduler-bench的监控机制是其核心功能之一,能够在测试过程中对系统性能进行全方位的跟踪与分析。其中,ftrace和perf作为两款强大的Linux性能分析工具,被wayca-scheduler-bench巧妙地整合,为用户提供了从内核函数调用到系统性能指标的深度洞察。

通过监控机制,用户可以实时了解系统在不同工作负载下的CPU使用率、内存管理、进程调度等关键性能指标,为性能优化和问题排查提供有力的数据支持。

上图展示了在测试过程中Node 0的总CPU使用率变化情况,其中不同颜色的线条分别代表了不同的测试阶段(TEST_RUN和TEST_RUN_BUSY),清晰地反映了系统在不同负载下的CPU性能表现。

二、ftrace在wayca-scheduler-bench中的应用技巧 🔍

2.1 ftrace的启用与配置

在wayca-scheduler-bench中,启用ftrace监控可以通过generate-monitor-only.sh脚本实现。该脚本提供了--enable-ftrace-hook选项,方便用户开启ftrace跟踪功能。相关代码如下:

12: echo "-p|--enable-perf-hook Enable perf profiling" 13: echo "-t|--enable-ftrace-hook Enable Ftrace tracing" 18:ARGS=`getopt -o hpc:t --long help,enable-perf-hook,config:,enable-ftrace-hook -n generate-monitor-only.sh -- "$@"` 35: -t|--enable-ftrace-hook) 113: echo Adding ftrace hook

通过执行带有--enable-ftrace-hook参数的generate-monitor-only.sh脚本,系统会自动配置并启用ftrace相关的监控钩子,开始对内核函数的跟踪。

2.2 ftrace的高级应用场景

ftrace主要用于跟踪内核函数的调用流程和执行时间,在wayca-scheduler-bench中,它可以帮助用户深入了解内核在处理不同工作负载时的行为。例如,在进行内存管理相关的测试时,通过ftrace可以跟踪内存分配、回收等函数的调用情况,从而分析内存管理的性能瓶颈。

另外,ftrace还可以与其他监控工具结合使用,如在profile-disabled-hooks-trace-cmd.sh脚本中,就有等待ftrace启动的相关逻辑:

20:echo -n Waiting on ftrace to start

这确保了ftrace能够在测试开始前正确初始化,保证监控数据的准确性。

三、perf在wayca-scheduler-bench中的应用技巧 🚀

3.1 perf的启用与数据收集

与ftrace类似,perf的启用也可以通过generate-monitor-only.sh脚本的--enable-perf-hook选项来实现。启用后,系统会自动进行perf数据的收集,相关代码如下:

12: echo "-p|--enable-perf-hook Enable perf profiling" 18:ARGS=`getopt -o hpc:t --long help,enable-perf-hook,config:,enable-ftrace-hook -n generate-monitor-only.sh -- "$@"` 31: -p|--enable-perf-hook) 109: echo Adding perf hook 110: mv $TREE_MMTESTS/profile-disabled-hooks-perf.sh $TREE_MMTESTS/profile-hooks-perf.sh

在profile-disabled-hooks-perf.sh脚本中,详细定义了perf数据的收集和处理过程,包括perf record命令的执行、数据文件的生成以及后续的perf report分析等:

12:perf $PERF_RECORD_COMMAND -o \$1/perf-\$2-${PROFILE_TITLE}.data & 13:echo \$! > /tmp/mmtests.perf.pid 20:WAITPID=\`cat /tmp/mmtests.perf.pid\` 23:echo Waiting on perf pid \$WAITPID to exit: \`date\` 33: if [ ! -e \$1/perf-symbol-archive.data.tar.bz2 ]; then 34: echo Creating perf archive 35: perf archive \$1/perf-\$2-${PROFILE_TITLE}.data 36: mv \$1/perf-\$2-${PROFILE_TITLE}.data.tar.bz2 \$1/perf-symbol-archive.data.tar.bz2 38: echo Archive perf-symbol-archive.data.tar.bz2 already exists, use ARCHIVE_MINIMUM=no to override 41: echo Creating perf archive 42: perf archive \$1/perf-\$2-${PROFILE_TITLE}.data 45:echo Creating perf report 46:perf $PERF_REPORT_COMMAND -i \$1/perf-\$2-${PROFILE_TITLE}.data > \$1/perf-\$2-${PROFILE_TITLE}.txt 47:gzip \$1/perf-\$2-${PROFILE_TITLE}.data

3.2 perf数据分析与性能优化

perf收集到的数据可以通过perf report等工具进行分析,帮助用户找出系统性能的瓶颈。例如,通过分析perf报告,可以了解哪些函数占用了大量的CPU时间,哪些进程的内存访问效率低下等。

wayca-scheduler-bench还提供了一些基于perf的驱动脚本,如driver-perfpipe.sh和driver-perfsyscall.sh,用于特定场景下的性能测试和分析:

./drivers/driver-perfpipe.sh 12: $SHELLPACK_INCLUDE/shellpack-bench-perfpipe $VERSION_PARAM $BIND_SWITCH \ ./drivers/driver-perfsyscall.sh 12: $SHELLPACK_INCLUDE/shellpack-bench-perfsyscall $VERSION_PARAM $BIND_SWITCH \

这些脚本可以结合perf数据,对系统的管道性能和系统调用性能进行深入测试和分析,为性能优化提供更具体的方向。

上图是KSwapd Reclaim Efficiency smooth监控图,通过perf等工具收集的数据生成,能够直观地反映系统内存回收的效率变化,帮助用户分析内存管理方面的性能问题。

四、ftrace与perf的协同使用策略 🤝

在wayca-scheduler-bench中,ftrace和perf并非孤立使用,而是可以协同工作,从不同层面为用户提供系统性能的全面分析。ftrace侧重于内核函数的调用跟踪,能够帮助用户了解内核内部的执行流程;而perf则更擅长于系统级的性能指标收集和分析,如CPU使用率、内存访问等。

通过将ftrace和perf结合使用,用户可以先通过perf发现系统性能的瓶颈指标,然后再利用ftrace深入内核函数调用,定位具体的问题原因。例如,当perf报告显示某个进程的CPU使用率异常高时,可以通过ftrace跟踪该进程相关的内核函数调用,找出导致CPU使用率过高的具体函数或代码路径。

五、wayca-scheduler-bench监控机制的实际应用案例 🌟

5.1 性能测试场景

在进行大规模的性能测试时,wayca-scheduler-bench的监控机制能够实时跟踪系统的各项性能指标。例如,在运行configs/config-pagealloc-performance配置的测试时,可以通过以下命令启用监控:

$ ./run-mmtests.sh --no-monitor --config configs/config-pagealloc-performance 5.8-vanilla

通过分析监控数据,用户可以评估不同内核版本在页面分配性能方面的差异,为内核优化提供数据支持。

5.2 问题排查场景

当系统出现性能问题时,wayca-scheduler-bench的监控机制可以帮助用户快速定位问题根源。例如,通过ftrace跟踪内核调度函数的调用,发现进程调度延迟过高的问题;通过perf分析内存访问模式,找出内存泄漏或缓存命中率低的原因。

六、总结与展望

wayca-scheduler-bench的监控机制通过整合ftrace和perf等高级工具,为用户提供了强大的性能分析能力。通过本文介绍的应用技巧,用户可以更好地利用这些工具,深入了解系统性能,优化工作负载。

未来,随着wayca-scheduler-bench的不断发展,其监控机制有望支持更多的性能分析工具和更丰富的监控指标,为用户提供更加全面、精准的性能测试和分析体验。无论是新手还是有经验的用户,都可以通过wayca-scheduler-bench的监控机制,轻松掌握系统性能的奥秘,为系统优化和问题排查提供有力的支持。

【免费下载链接】wayca-scheduler-benchwayca-scheduler-bench is a configurable test suite that runs performance tests against arbitrary workloads. Forked from Mel Gorman's mmtests.项目地址: https://gitcode.com/openeuler/wayca-scheduler-bench

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考