LEP 性能剖析器
简介
LEP 的全称是 Linux Easy Profiling(Linux 易用剖析器),核心特点在于 Easy(简单),主要功能在乎 Profiling(剖析)。
LEP 的设计目标是:便利 Linux 的程序员,以最快最直接的方式,定位到系统里面一些 bug 的源头,以及一些性能瓶颈的原因。
- LEP 的网址是 http://www.linuxep.com
LEP 工作原理
Linux 有很多现成的调试和剖析工具,比如 top、vmstat、iotop、perf、valgrind、powertop、free、pmap、slabtop 等,这些工具通过读取 /proc、/sys,分析硬件的 PMU(Performance Monitor Unit)数据、监控内存的申请释放以及读写等手段,获知单一进程或者系统的运行状态,以及进行故障分析。LEP 除了在功能上是这些工具的超集以外,在可视、交互、深度分析、数据比对、场景贴合等角度对这些工具进行进一步的增强。
LEP 主要分为两部分
- LEPD —— 负责监控的服务守护 :https://github.com/linuxep/lepd
- LEPV —— Web 后台和前端展示 :https://github.com/linuxep/lepv
LEP 技术架构
LEP 实际上是一个 all-in-one 的调试工具,它的软件架构如下图所示。与现有其他工具不同,被监控的服务器或开发板只需要部署 LEPD(LEP Daemon),该程序完全用 C 语言实现,只需要完成基本的数据采集功能,因此它能最小化对被监控系统本身的影响。数据的分析和处理,都移动到了 Web 服务 LEPV(LEP Viewer)和浏览器一端。
LEPD 采集被监控目标的运行数据,这些数据被 Web 服务端 LEPV 通过 JSONRPC 请求获得,LEPV 以 Python 对从 LEPD 获得的原始数据进行有针对性的加工,再发送给浏览器,浏览器把经过 LEPV 加工的数据,以各种丰富的图形进行显示。
这种架构的好处,LEPD 和 LEPV 分离,使得 LEPD 易于部署在资源贫乏的嵌入式设备上,而 LEPV 一般则运行在比较强壮的 x86 PC 上。当然,LEPD 和 LEPV 虽然分离,但在实际部署的时候,也可以部署于同一个 x86 PC,因此也可以用于非网络环境下的单机自身监控。