1.Linux性能分析:Perf & CPU火焰
2.linux查看cpu占用率的源码方法:
3.å¦ä½ç¨github/gitlabå代ç review
4.使用PerfXCloud快速搭建微信小助手
5.是时候,升级你的源码 Windows 了「GitHub 热点速览」
6.performance.timerifyçbugs
Linux性能分析:Perf & CPU火焰
Linux性能分析:Perf & CPU火焰图详解
当需要对Linux程序性能进行深入分析时,perf工具是源码一个强大的帮手。首先,源码运行完程序后,源码通过perf record命令收集性能数据,源码成员管理系统源码这会生成一个名为perf.data的源码文件,它记录了程序的源码执行细节。通过perf report -i perf.data查看报告,源码但其展示方式不够直观,源码这就需要借助火焰图来清晰呈现性能瓶颈。源码 为生成火焰图,源码首先需要在本地机器上使用perf script解析perf.data。源码接着,源码从GitHub仓库github.com/brendangregg/FlameGraph中获取stackcollapse-perf.pl和flamegraph.pl脚本。源码执行stackcollapse-perf.pl对符号进行折叠,然后运行flamegraph.pl生成perf.svg火焰图。 火焰图分析中,y轴代表调用栈,每个函数调用层越高,r sixsigma 源码表示占用CPU的时间越长,调用关系自下而上。x轴表示抽样次数,宽度越宽的函数执行时间越长。通过观察火焰图,宽度较大的函数可能成为性能瓶颈,颜色通常选择暖色调,表示CPU繁忙程度。鼠标悬停在函数上会显示详细信息,包括函数名、抽样次数和占比。 以test_lvgl示例中,read_image_data和render_frame_rect两个函数表现出较大的CPU占用。若需获取更详细的函数调用信息,可以考虑在记录性能数据时增加--call-graph dwarf选项,但注意这可能导致perf.data文件增大,需留意设备空间的使用。 参考资源可以帮助你进一步探索和优化Linux性能:linux查看cpu占用率的方法:
top
top是最常用的查看系统资源使用情况的工具,包括CPU、hashmap 1.8源码内存等等资源。这里主要关注CPU资源。
1.1 /proc/loadavg
load average取自/proc/loadavg。
9. 9. 8. 3/
前三个数字是1、5、分钟内进程队列中平均进程数,包括正在运行的进程+准备好等待运行的进程。
第四个数字分子表示正在运行的进程数,分母是进程总数。
最后一个数字是最近运行的进程ID号。
其中top取的是/proc/loadavg的前三个数。
1.2 top使用
打开top,可以指定更新的周期。
输入H,打开隐藏的线程;输入1,可以显示单核CPU使用情况。
top -H -b -d 1 -n > top.txt,每个1秒统计一次,共次,linux access源码显示线程细节,并保存到top.txt中。
top采样来源你还依赖于/proc/stat和/proc//stat两个,这两个的详细介绍参考:/proc/stat和/proc//stat。
其中CPU信息对应的含义如下:
us是user的意思,统计nice小于等于0的用户空间进程,也即优先级为~。 ni是nice的意思,统计nice大于0的用户空间进程,也即优先级为~。 sys是system的意思,统计内核态运行时间,不包括中断。 id是idle的意思,几系统处于空闲态。 wa是iowait的意思,统计io等待时间。 hi是hardware interrupt,统计硬件中断时间。辅助站点源码 si是software interrupt,统计软中断时间。 最后的st是steal的意思。
perf
通过sudo perf top -s comm,可以查看当前系统运行进程占比。
这里不像top一样区分idle、system、user,这里的占比是各个进程在总运行时间里面占比。
通过sudo perf record记录采样信息,然后通过sudo perf report -s comm。
sar、ksar
sar是System Activity Report的意思,可以用于实时观察当前系统活动,也可以生成历史记录的报告。
要使用sar需要安装sudo apt install sysstat,然后对sysstat进行配置。
sar用于记录统计信息,ksar用于将记录的信息图形化输出。
ksar下载地址在: github.com/vlsi/ksar/re...
sudo gedit /etc/default/sysstat--------------------------------将 ENABLED=“false“ 改为ENABLED=“true“。 sudo gedit /etc/cron.d/sysstat--------------------------------修改sar的周期等配置。 sudo /etc/init.d/sysstat restart--------------------------------重启sar服务 /var/log/sysstat/--------------------------------------------------sar log存放目录
使用sar记录开机到目前的统计信息到文件sar.txt。
LC_ALL=C sar -A > sar.txt
PS:这里直接使用sar -A,在ksar中无法正常显示。
如下执行java -jar ksar.jar,然后Data->Load from text file...选择保存的sar.txt文件。
得到如下的图表。
还可以通过sar记录一段时间的信息,指定采样周期和采样次数。
这些命令前加上LC_ALL=C之后保存到文件中,都可以在ksar中图形化显示。
collectl、colplot
collectl是一款非常优秀并且有着丰富的命令行功能的实用程序,你可以用它来采集描述当前系统状态的性能数据。
不同于大多数其它的系统监控工具,collectl 并非仅局限于有限的系统度量,相反,它可以收集许多不同类型系统资源的相关信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。
同时collectl还可以替代常用工具,比如top、vmstat、ps、iotop等。
安装collectl:
sudo apt-get install collectl
collectl的使用很简单,默认collectl显示cpu、磁盘、网络信息。
collectl还可以显示更多的子系统信息,如果选项存在对应的大写选项,大写选项表示更细节的设备统计信息。
b – buddy info (内存碎片) c – 所有CPU的合一统计信息;C - 单个CPU的统计信息。 d – 整个文件系统Disk合一统计信息;C - 单个磁盘的统计信息。 f – NFS V3 Data i – Inode and File System j – 显示每个CPU的Interrupts触发情况;J - 显示每个中断详细触发情况。 l – Lustre m – 显示整个系统Memory使用情况;M - 按node显示内存使用情况。 n – 显示整个系统的Networks使用情况;N - 分网卡显示网络使用情况。 s – Sockets t – TCP x – Interconnect y – 对系统所有Slabs (系统对象缓存)使用统计信息;Y - 每个slab使用的详细信息。
collectl --all显示所有子系统的统计信息,包括cpu、终端、内存、磁盘、网络、TCP、socket、文件系统、NFS。
collectl --top可以代替top命令:
collectl --vmstat可以代替vmstat命令:
collectl -c1 -sZ -i:1可以代替ps命令。
collectl和一些处理分析数据工具(比如colmux、colgui、colplot)结合能提供可视化图形。
colplot是collectl工具集的一部分,其将collectl收集的数据在浏览器中图形化展示。
colplot的介绍 在此,相关源码可以再 collectl-utils下载。
解压下载的colplot之后,sudo ./INSTALL安装colplot。
安装之后重启apache服务:
suod systemctl reload apache2 sudo systemctl restart apache2
在浏览器中输入 .0.0.1/colplot/,即可使用colplot。
通过Change Dir选择存放经过collectl -P保存的数据,然后设置Plot细节、显示那些子系统、plot大小等等。
最后Generate Plot查看结果。
å¦ä½ç¨github/gitlabå代ç review
ç±äºReviewBoardé常水ï¼diffç¨å¾®å¤§ä¸ç¹å°±ä¼æ交失败ãé£ä¹å¦ä½åreviewå¢ï¼ä¸å¦¨å©ç¨github/gitlabèªå¸¦çå¨çº¿Diffå±ç¤ºåè½åã
æä½è¿ç¨
1 å建临æ¶ç¨äºreviewçåæ¯
git checkout -b expr_type_ctx
2 æ¥çremoteåæ¯ï¼ç¡®è®¤reviewä¼åéå°åªé
git remote -v
å¦æ没ææåremoteï¼å¯ä»¥äººè设å®ï¼
git remote set-url origin git@www.github.com:raywill/mycode.git
3 å°remoteææ°ä»£ç æåå°æ¬å°
git pull
4 å¨remoteå建ä¸ä¸ªåæ¯ï¼å¹¶å°æ¬å°ä»£ç æ交å°è¿ä¸ªåæ¯ã
git push origin expr_type_ctx
æ§è¡æååï¼å°±å¯ä»¥å»webä¸æ¿diffï¼è®©å«äººåreviewäºã
5 ä¸åæå®ï¼å é¤è¿ä¸ªä¸´æ¶åæ¯
git push origin :expr_type_ctx
åèèµæï¼
gitè¿ç¨åæ¯
Future Works
æ¢ç´¢ä»¥Merge Requestæ¹å¼è¿è¡ä»£ç æ交
.4.7æ´æ°
Merge Requestå ¶å®å¾ç®åï¼å®å¹¶ä¸æ¯Gitçä¸é¨åï¼èæ¯gitåè½çä¸ç§å¤å»¶ãMerge Request被æ¥ååï¼è¿æ¯éè¦æå·¥/èªå¨åä¸æ¬¡code mergeã
æ°å»ºä¸ä¸ªåæ¯åfeatureï¼ä¸æ¥èµ°æ¯è¾ç®åï¼
第ä¸æ¥ï¼å»ºåæ¯ï¼å æ¬å°
git checkout -b myfeature;
git push origin myfeature;
git checkout master;
git branch -d myfeature;
第äºæ¥ï¼æåæ¯ï¼åå¼å
git checkout -b dperf origin/dperf;
git add xxx; git commit -m 'dev xxx';
git push origin dperf;
代ç pushå°originæå¡å¨åï¼å¯ä»¥å»ç½é¡µä¸åèµ·Merge Request
第ä¸æ¥, å并åæ¯
git checkout master;
git pull;
git checkout dperf;
git fetch origin master;
git rebase master;
使用PerfXCloud快速搭建微信小助手
使用 www.perfxcloud.cn 大模型平台搭建微信小助手,网站包含详细说明文档。PerfXCloud API 接口兼容 OpenAI 的ChatGPT,允许直接使用 OpenAI SDK 或其他中间件访问,简化了开发者切换平台的过程。微信助手基于大型语言模型,集成了聊天会话、娱乐资讯、查询工具等实用功能,支持文本、语音和,通过插件访问操作系统与互联网。此外,助手支持基于自有知识库定制的企业智能客服。
微信助手开发过程以 /post/