lepd

server daemon of LEP

LepD是什么

LEP的结构采用的是Client/Server的模型, Client端是Django+Web服务器,负责显示从Server端取得的数据。 Server端是我们最终需要profile的target。 LepD运行在Server(Target)端, 它的工作如下:

是一个JsonRpcServer, Client通过JsonRpc连接

LepD会解析接收到的RPC命令,取得系统的各类不同的数据信息,比如内存,CPU,IO状态

将取得的结果,转换成Json格式返回给Client

LepD应用

LepvClient通过JsonRpc连接

简单测试时,通过Linux nc命令即可

发送"ListAllMethod?"这个rpc方法,可以获得LepD所支持的所有方法

root@bob-VirtualBox:~# echo "{\"method\":\"ListAllMethod\"}" | nc 12307

{

"result":"SayHello ListAllMethod GetProcMeminfo GetProcLoadavg GetProcVmstat GetProcZoneinfo GetProcBuddyinfo GetProcCpuinfo GetProcSlabinfo GetProcSwaps GetProcInterrupts GetProcSoftirqs GetProcDiskstats GetProcVersion GetProcStat GetProcModules GetCmdFree GetCmdProcrank GetCmdIostat GetCmdVmstat GetCmdTop GetCmdTopH GetCmdIotop GetCmdSmem GetCmdDmesg lepdendstring"

}

root@bob-VirtualBox:~#

具体某个方法,比如想获得内存的信息

root@bob-VirtualBox:~# echo "{\"method\":\"GetProcMeminfo\"}" | nc 12307

{

"result":"MemTotal: 1017788 kB\nMemFree: 426560 kB\nBuffers: 77080 kB\nCached: 231968 kB\nSwapCached: 0 kB\nActive: 342212 kB\nInactive: 172488 kB\nActive(anon): 207000 kB\nInactive(anon): 11256 kB\nActive(file): 135212 kB\nInactive(file): 161232 kB\nUnevictable: 0 kB\nMlocked: 0 kB\nSwapTotal: 0 kB\nSwapFree: 0 kB\nDirty: 92 kB\nWriteback: 0 kB\nAnonPages: 205652 kB\nMapped: 40480 kB\nShmem: 12608 kB\nSlab: 50868 kB\nSReclaimable: 39328 kB\nSUnreclaim: 11540 kB\nKernelStack: 1336 kB\nPageTables: 6768 kB\nNFS_Unstable: 0 kB\nBounce: 0 kB\nWritebackTmp: 0 kB\nCommitLimit: 508892 kB\nCommitted_AS: 947444 kB\nVmallocTotal: 34359738367 kB\nVmallocUsed: 8796 kB\nVmallocChunk: 34359721724 kB\nHardwareCorrupted: 0 kB\nAnonHugePages: 67584 kB\nHugePages_Total: 0\nHugePages_Free: 0\nHugePages_Rsvd: 0\nHugePages_Surp: 0\nHugepagesize: 2048 kB\nDirectMap4k: 63360 kB\nDirectMap2M: 985088 kB\nDirectMap1G: 0 kB\nlepdendstring"

}

root@bob-VirtualBox:~#

当发现LepD连不上,或者获得不到数据时,直接Kill掉lepd进程,然后再通过如下命令把LepD重启

git@iZ22ngfe4n3Z:~$ /opt/deploy_lepv/lepd &

如何编译

root@bob-VirtualBox:~# git clone https://github.com/linuxep/lepd

For X86(电脑需要安装libev-dev库):

电脑需要提前安装:

{

apt-get install libev-dev

apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`

apt-get install libncurses5-dev

}

root@bob-VirtualBox:~/lepd-src# make

For ARM(电脑需要安装arm-linux-gnueabi-gcc):

root@bob-VirtualBox:~/lepd-src# make ARCH=arm

如何运行

运行lepd需要root权限,因为系统有些proc文件无root权限无法读取。

lepd运行的板子、服务器的内核需要使能TASKSTATS,这样IOTOP的功能才可以起来:

General setup --->

CPU/Task time and stats accounting --->

[*] Export task/process statistics through netlink

[*] Enable per-task delay accounting

[*] Enable extended accounting over taskstats

[*] Enable per-task storage I/O accounting

目前,LEPD还没有集成perf的功能,因此,要求目标平台上,还是有安装perf,内核也使能perf相关的支持。

如果要在浏览器中支持火焰图,也需要lepd运行的目标平台上支持了perf!

实现

用了cJSON和jsonrpc-c

在server.c里面解析rpc方法,结果转成Json格式的字符串返回给Client

linux进程状态是PD,GitHub - linuxep/lepd: server daemon of LEP相关推荐

  1. Linux下Jenkins与GitHub自动构建NetCore与部署

    今天我们来谈谈NetCore在Linux底下的持续集成与部署.NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub.我们就跟着博文往下走吧. 1.Linux环境 ...

  2. 如何在Linux/MacOS系统上安装Microsoft SQL Server

    转载来源:https://hub.docker.com/_/mssql-server-linux 如何在Linux/MacOS系统上安装Microsoft SQL Server 快速安装 # 首先在L ...

  3. Linux进程状态解析之R、S、D、T、Z、X

    文章转载自:http://hi.baidu.com/shining_pc/item/21abcb32a4d2d484c3cf2950 Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程 ...

  4. 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )

    文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...

  5. Linux进程状态解析 之 R、S、D、T、Z、X (主要有三个状态)

    linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...

  6. Linux进程状态解析

    Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有 不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该 ...

  7. Linux下Git和GitHub使用方法总结(Ubuntu16.04)

    1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 "sudo apt-get install git" 第二步: 创建GitHub帐号 第三步: 生成 ...

  8. Xshell登录Linux服务器 提示WARNING! The remote SSH server rejected X11 forwarding request 及 提示符显示-bash-4.2#

    用root登录 Xshell 登录Linux服务器 提示 WARNING! The remote SSH server rejected X11 forwarding request 以及 用户表示符 ...

  9. 问君能有几多愁,恰似不懂Linux SQL如何调优——聊聊SQL Server on Linux最佳实践

    问君能有几多愁,恰似不懂Linux SQL如何调优--聊聊SQL Server on Linux最佳实践 自从微软开始拥抱Linux, SQL Server 很快就推出了 Linux版本, linux ...

最新文章

  1. 对某课程的建议和意见_2021年河南专升本专科专业对照和考试课程征求意见
  2. 查看mysql字符集及修改表字符集
  3. git 换行符问题,统一linux风格
  4. 曾经案例中问题 与 工厂模式解耦
  5. 【PP操作手册】生产订单的查询
  6. C语言实现Bogo排序(Bogo sort)算法(附完整源码)
  7. flashcom网址收集
  8. php图片视频,PHP中使用php5-ffmpeg撷取视频图片实例
  9. css优先级机制说明
  10. 我看中国软件---管理篇
  11. CMake编译protobuf
  12. 代码管理学:常量类应该单独一个目录,还是在模块目录下?
  13. lisp型材库_基于Auto LISP 创建V 带轮标准件库
  14. Power BI 简介
  15. iPhone的AFC(Apple File Conduit)
  16. ipad 的android模拟器,苹果IPAD模拟器(iPadian)
  17. stateflow之学习——01
  18. [论文速览]A Neural Attention Model for Sentence Summarization
  19. 近红外光谱分析仪的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 回文数(Java解法)

热门文章

  1. RF基础(一) RF内建函数库BuiltIn
  2. 3、身份证、数字、日期、手机号码等等的验证判断
  3. 腾讯 Techo Hub 2022 年首站落地福州|723,与开发者们探讨工业数字化!
  4. 《MINECRAFT我的世界 新手完全攻略(第3版)》一1.3 开始新游戏
  5. EasyUI的datagrid删除后一页所有数据不自动显示前页数据
  6. javascript 数据类型与类型转换
  7. 简单谈谈语音评测(语音评价)
  8. js获取对象的方法,根据id、根据name、根据标签名、根据类名
  9. 学习HTML+CSS知识点
  10. 用js实现背景颜色改变