专栏首页Linuxer的专栏宋宝华:LEP ( Linux 易用剖析器) 是什么,为什么以及怎么办 ( 2 )
原创

宋宝华:LEP ( Linux 易用剖析器) 是什么,为什么以及怎么办 ( 2 )

LEP(LINUX EASY PROFILING) 是Linuxer之LEP项目组(Barry Song,Mac Xu,陈松等以及陈莉君教授/西邮Linux 3+1实验室)正在致力于打造的一个开源项目,LEP项目组欢迎开源爱好者加入和参与。这是LEP文档《 LEP是什么,为什么,怎么办 》的第二部分。第一部分的链接为:

宋宝华:LEP( Linux 易用剖析器) 是什么,为什么以及怎么办(1)

LEP的下一步工作

6.1 架构改造

6.1.1 LEPV前后台分离

目前的体系架构是由浏览器触发LEPV与LEPD通信然后开始采集数据的,下一步我们要改造为,通过web的后台设置监控目标,我们通过web后台设置一个或者数个被监控的电路板/Linux服务器IP地址,即开始采集,而后浏览器只负责观看监控数据,如下图。

LEPV web服务器端,读取采集到的数据并分析与保存到数据库。而浏览器端,基于已经存在的数据,进行各种分析。

6.1.2 数据保存和恢复支持

在架构中的另外一个考虑是,增加数据库的支持,将采集到的数据,进行保存和恢复。以方便进行时空比对。

我们可以把某一时段的数据采样出来,通过浏览器打开了分析。这样,可以回顾场景或者对比各次场景。

6.1.3 自定义被监控的数据

目前,一旦LEP开启,进入浏览器就可以获得所有的数据。未来,我们应该提供勾选关注事件的能力,以便于LEP只监控它感兴趣的数据。比如,用户选择了只关注内存,那么别的界面就不要显示了。

6.2 功能增强

6.2.1 高平均负载预警

以不同的颜色,标识系统里面平均负载的高低。比如某段长期时间段里面CPU load average明显过高,我们标识一段红线区域。类似不同颜色的台风或暴雨预警。

点击预警的时间点时,可同步刷新当时的CPU利用率,IDLE,IRQ,SOFTIRQ等曲线。

6.2.2 负载不均衡预警

一旦检测到多核下,负载不均衡,以算法分析后,进行提示。负载的不均衡主要体现为2个方面:

  1. 进程+中断+软中断
  2. 中断+软中断

在出现中断与软中断负载不均衡的时候,提示进行中断affinity的设置,以及提示采用RPS(Receive Packet Steering)调控SoftIRQ。

6.2.3 内存大户提示与内存泄漏预警

分析高峰期的内存场景,比如在某个场景下,哪些进程在耗内存。对于内存大户,可以给出某个进程的内存使用历史曲线。

我们如果监控到某个进程的内存持续震荡向上,应提示内存泄漏预警。

可点选某一进程,显示它的pmap,类似:

b7453000     44K r-x-- libnss_files-2.19.so
b745e000      4K r---- libnss_files-2.19.so
b745f000      4K rw--- libnss_files-2.19.so
b7460000     40K r-x-- libnss_nis-2.19.so
b746a000      4K r---- libnss_nis-2.19.so
b746b000      4K rw--- libnss_nis-2.19.so
b746c000     84K r-x-- libnsl-2.19.so
b7481000      4K r---- libnsl-2.19.so
b7482000      4K rw--- libnsl-2.19.so

此处我们能否画一个柱状体:

同时,我们要增加剖析slab和vmalloc的能力,并提醒用户slab和vmalloc的泄漏。我们也可以显示slabtop的内容:

6.2.4 基于CGroup和用户自定义分群的分析

可视图显示Linux的不同的CGroups,显示每个group的CPU占用,内存占用。也可以对某个group的资源进行调配。

此外,也支持用户通过浏览器拖曳手段,依据应用场景建立自己的分群,把关注的进程,拖到自定义的分群中。最后显示这些自定义分群的CPU、内存和I/O占用情况。

6.2.5 I/O排队预警和调度策略控制

能够给出I/O排队情况的不同颜色的预警,提示硬盘的I/O访问的剧烈程度与排队等候情况。

增加各个磁盘I/O调度策略的显示和设置。读取此类节点

/sys/block/sda/queue$cat scheduler

通过选择框设置noop deadline cfq

在CFQ的情况下,点击一个进程,可选择设置它的prio和调度策略。

6.2.6 Perf集成

Perf的功能有很多,目前我们需要集成一些紧迫的功能。

可以平滑的绘制系统的CPU,I/O分布图

类似执行perf sched record sleep 10

perf timechart

在进程列表上面,加一个run窗口,这样可以自己手动启动一个进程;后面有一个单选框,决定是否进行cpu cycle和cache miss的perf跟踪。

此部分类似perf top里面进一步annotate一个函数的功能:

6.2.7 杂项:查缺补漏和交互控制

可以给出系统里面谁在耗电,历史上CPU、外设处在各种状态的时间比例。

每秒中断、每秒软中断、每秒上下文切换、swapin、swapout等残缺数据的采集和显示。频繁swap的场景提示匿名页交换过于频繁的不同颜色的预警。

Linux运行起来后,有很多的sysctl是通过/proc/来控制,很多sysctl的含义,用户根本不懂。我们可以在浏览器上,直接展开目标的sysctl,然后把一些关键的设置的含义,告诉用户。让用户知道自己的目标是什么情况。

比如:

overcommit_memory = 1, 暗示你的Linux总是假装系统有足够多的内存 [点击阅读文档…]
…

在进程的CPU利用率图上,我们可以点击右键,展开它的线程,甚或进一步控制线程的调度策略、优先级或者NICE值。

凡此种种,可以想到很多,不再一一列举。在LEP的开发过程中,小点逐步完善。

6.3 CI和测试

在git提交后,催生自动编译和测试。测试环节要求可以覆盖到ARM32位、ARM64位、X86 32位和X86 64位的目标机。覆盖到的内核版本包括

  • Linux 2.6.38
  • Linux 3.18
  • Linux 4.13

编写测试案例,以覆盖到LEPD的每个JSONRPC,并自动覆盖到LEPV的RESTful API,保证高强度下,LEPD和LEPV的稳定。

6.4 文档

每个模块在设计和开发过程中,书写详细的文档;

文档在Linuxer、Linux内核之旅、CSDN投放;

书写文档,投放到lwn.net;

上传教学使用视频到youku、Youtube(英文版);

更新和完善www.linuxep.com网站

LEP人员与分工

7.1总体参与人员

研发与测试由陈莉君教授组和LEP co-founder组共同负责,张国强负责总后勤与联络。

7.2 LEPV架构改为前后台以及监控数据可配置

7.3 数据存储与读取、比对

7.4 基于CGroup和用户自定义分群的分析

7.5 LEP持续集成

一旦有人提交代码,即激活自动编译和测试。

7.6 LEP自动测试与案例

增加必要的测试case,保证LEP在各平台,各内核版本的持续稳定。

7.7 残缺功能添加和预警分析功能

中断、软中断、上下文切换、swapin、swapout、slab、vmalloc、Power等残缺的数据采集,负载预警,负载不均衡,内存泄漏预警,I/O过载预警等。

7.8 perf集成

目前LEPD端依赖于perf工具的安装,我们希望能将perf的核心功能从perf工具移植出来,直接集成到LEPD,这样避免对平台的依赖。

来自微信公众号 Linuxer (ID:linuxdev)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 宋宝华:LEP ( Linux 易用剖析器 ) 是什么,为什么以及怎么办 ( 1 )

    LEP是 Linuxer 之 LEP 项目组(Barry Song,Mac Xu,陈松等以及陈莉君老师)正在致力于打造的一个开源项目,本文是 LEP 文档《 L...

    Linuxer
  • 宋宝华: Linux 性能调优的分析与实战

    系统的性能是受多方面因素影响的,性能调优是一个非常困难的任务,它要求对硬件、操作系统、和应用都有着相当深入的了解。本文讲述了Linux 系统性能调优分析与实战。

    Linuxer
  • 高性能:LEP (LINUX EASY PROFILING) 工具介绍

    然后,在右上方的框内,输入 lepd所在的节点地址 (我们这里还是 10.10.11.11)

    二狗不要跑
  • LEP 与负载均衡 : 以 PCDUINO 实际案例来使用LEP提高网络带宽

    这篇文章的内容涉及用 LEP 监控 PCDUINO 3nano 电路板网络流量,观察负载均衡 IDLE、 IRQ 和 SoftIRQ,以及用 RPS/RFS ...

    Linuxer
  • IT皇冠上的明珠! Linux 操作系统学习看过来!

    操作系统堪称是IT皇冠上的明珠,Linux阅码场专注Linux操作系统内核研究, 它的文章云集了国内众多知名企业一线工程师的心得,畅销著作有《linux设备驱动...

    编程珠玑
  • 宋宝华:火焰图 全局视野的 Linux 性能剖析

    火焰图的火焰首先来自于根,然后以火苗的形式往上面窜。可以把从靠近地面的根到顶上的每个火苗,想想成一个调用栈。由于火苗有很多根,这正好也和现实生活中程序的执行逻辑...

    Linuxer
  • 宋宝华: 用off-cpu火焰图进行Linux性能分析

    在《宋宝华:火焰图:全局视野的Linux性能剖析》一文中,我们主要看了on-cpu火焰图,理解了系统的CPU的走向的分析。但是,很多时候,单纯地看on-cpu的...

    Linux阅码场
  • 嵌入式 Arm Linux 入门必读书籍推荐

    前段时间有个刚开始学习 Arm Linux 的同学问我:对于还处于入门阶段的新手,有什么建议。并让我推荐一些好的书籍。

    HackforFun
  • 【数据分析篇】11个常见数据分析方法相关的问题集锦

    本期汇总整理常见的几种数据分析方法:归因分析、AB测试、RFM模型、热图分析、标签管理和同期群分析等11个精华问答。

    iCDO互联网数据官
  • 红毯阵容太豪华!阿里星球上线发布会引来半个文娱圈

    5月18日,中国互联网音乐生力军阿里音乐集团首次召开大型产品上线发布会,隆重对外推介颠覆性粉丝娱乐交互平台——阿里星球。这是阿里音乐继上个月正式推出阿里星球体验...

    罗超频道
  • Linux 设备树(DTS)的深入理解

    上一节说过设备树的出现是为了解决内核中大量的板级文件代码,通过 DTS 可以像应用程序里的 XML 语言一样很方便的对硬件信息进行配置。关于设备树的出现其实在 ...

    刘盼
  • Linux 能否拿下苹果 M1 阵地?

    自去年 11 月苹果自研 M1 芯片落地以来,业界开发者纷纷对其”打起了主意“,有人称 M1 芯片是否真的如传闻那样打破了 x86 的垄断,不如实测一番;有人打...

    Linux阅码场
  • 安全之困——入门到进阶之惑解答

    前后有很多人问我,安全该怎么学,今天正好是2021的第一天,我把自己的学习方法和思路共享给大家,愿大家能有所收获。

    陈殷
  • 【AI+娱乐】一图看懂爱奇艺大脑增强版,智能视频峰会有AI更有爱

    【新智元导读】 爱奇艺世界·大会智能视频高峰论坛。爱奇艺CTO汤兴带来爱奇艺AI布局的全新解读:爱奇艺大脑走向增强版。北京电影学院未来影像高精尖创新中心首席科学...

    新智元
  • Linux用户态进程的内存管理

    上一篇我们了解了内存在内核态是如何管理的,本篇文章我们一起来看下内存在用户态的使用情况,如果上一篇文章说是内核驱动工程师经常面对的内存管理问题,那本篇就是应用工...

    刘盼
  • 【Github】Chinese-poetry: 最全中华古诗词数据库

    最近对自然语言生成或者文本自动生成技术比较感兴趣,做了一些调研,作为自然语言处理领域的难题之一,个人一直觉得自然语言生成(NLG)是最难的,虽然这一两年动辄会看...

    代码医生工作室
  • 【CXO论坛】深度学习成功的三大法宝;神经拟态芯片和可重构计算芯片为AI硬件加速

    新智元
  • 宋宝华:一个简单的python脚本画出Linux程序/库依赖图

    继《宋宝华:一个简单的python脚本看透Linux程序对库的依赖》之后,作为一个python的初级用户,学习和实践python的步伐根本就不下来!

    Linux阅码场
  • 小谈中文环境下中文排版的font-family 字体选择

    在开发Mindia 主题的时候,为了弄出相对好看的中文排版,特意补习了下中文排版的font-family 字体选择的相关资料。以下就从自己的角度说下自己的不算得...

    Jeff

扫码关注云+社区

领取腾讯云代金券