当前位置: 首页 > news >正文

openEuler编译安装nmon性能监控工具及可视化分析工具

ln

介绍

nmon(short for Nigel’s Monitor)是一个性能分析工具,由蓝色巨人IBM开发,最早用于自家操作系统UNIX,AIX (Advanced Interactive eXecutive)。现在也能用在Linux上。它可以显示系统的各种性能指标,包括CPU使用率、内存使用率、网络带宽、磁盘子系统、进程活动等,这些指标以交互式和完全动态的方式显示在终端或X窗口上。nmon工具还可以将数据输出为csv格式,方便后续分析。nmon工具被广泛用于性能瓶颈分析、系统调优、资源规划等方面。

官网:nmon for Linux | Main / HomePage (sourceforge.net)

优势

  1. 简单易用:编译后就是一个二进制文件。nmon可以直接在命令行下启动,非常容易使用,且可以实时监控系统性能。
  2. 实时监控:nmon可以实时监控CPU、内存、磁盘、网络等性能指标,并以图表形式展示结果,方便用户快速发现问题。
  3. 详细信息:nmon不仅提供了系统整体的性能信息,还可以展示每个进程、每个CPU核心、每个网络接口的详细信息,便于用户深入分析问题。
  4. 可定制性强:nmon可以根据用户需要灵活调整监控项和输出方式,满足不同场景的需求。
  5. 低系统资源占用:全 C开发,全部代码8000+行。nmon本身占用系统资源非常少,对被监控系统的影响极小,在实时监控的同时不会影响用户正常使用。

编译安装

各主流操作系统一般都有相应的包。直接apt install nmondnf install nmon即可。
这里记录下编译安装的过程。

编译方法和源码均可从官网获取 nmon for Linux | Site / CompilingNmon (sourceforge.net)
0. 编译很简单,由于源码相当精简,只需要从官网下载一个C文件和一个makefile文件即可。

[root@localhost nmon]# ll
total 276K
-rw-r--r--. 1 root root 263K May 11 10:36 lmon16n.c
-rw-r--r--. 1 root root 8.2K May 11 10:41 makefile
  1. 前置条件:GCC C 编译器,ncurses开发库(用于生成基于文本的用户界面),make命令。以下是一些常见套路:
    # Debian / Ubuntu
    sudo apt-get update
    sudo apt-get install gcc*
    sudo apt-get install ncurses-dev*
    sudo apt-get install make
    # Fedora / Redhat - as the root user
    yum install gcc*
    yum install ncurses-dev*
    yum install make
    # OpenSUSE / SUSE - as the root user
    yast install gcc*
    yast install ncurses-dev*
    yast install make
    
  2. 将最新的源码lmon16n.c硬连接到lmon.c
    ln lmon16n.c lmon.c
  3. 根据目标操作系统的架构,系统和版本更新makefile文件。
    image.png
nmon_ARM_euler2203: lmon.ccc -o nmon_ARM_euler2203 $(FILE) $(CFLAGS) $(LDFLAGS) -D ARM
  1. 运行make编译即可可以看到编译后的二进制文件nmon_ARM_euler2203
  2. 直接运行即可 ./nmon_ARM_euler2203

以下是编译流程:

[root@localhost nmon]# ll
total 276K
-rw-r--r--. 1 root root 263K May 11 10:36 lmon16n.c
-rw-r--r--. 1 root root 8.3K May 11 10:49 makefile
[root@localhost nmon]# ln lmon16n.c lmon.c
[root@localhost nmon]# vim makefile 
[root@localhost nmon]# make nmon_ARM_euler2203
cc -o nmon_ARM_euler2203 lmon.c -g -O3 -Wall -lncurses -lm -D ARM
lmon.c:58:10: fatal error: ncurses.h: No such file or directory58 | #include <ncurses.h>|          ^~~~~~~~~~~
compilation terminated.
make: *** [makefile:249: nmon_ARM_euler2203] Error 1
[root@localhost nmon]# dnf install ncurses-dev*
Last metadata expiration check: 2:34:25 ago on Thu 11 May 2023 08:16:39 AM CST.
Dependencies resolved.
========================================================================================Package                Architecture     Version                  Repository       Size
========================================================================================
Installing:ncurses-devel          aarch64          6.3-3.oe2203             update          650 kTransaction Summary
========================================================================================
Install  1 PackageTotal download size: 650 k
Installed size: 5.0 M
Is this ok [y/N]: y
Downloading Packages:
ncurses-devel-6.3-3.oe2203.aarch64.rpm                  116 kB/s | 650 kB     00:05    
----------------------------------------------------------------------------------------
Total                                                   116 kB/s | 650 kB     00:05     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transactionPreparing        :                                                                1/1 Installing       : ncurses-devel-6.3-3.oe2203.aarch64                             1/1 Running scriptlet: ncurses-devel-6.3-3.oe2203.aarch64                             1/1 Verifying        : ncurses-devel-6.3-3.oe2203.aarch64                             1/1 Installed:ncurses-devel-6.3-3.oe2203.aarch64                                                    Complete!
[root@localhost nmon]# make nmon_ARM_euler2203
cc -o nmon_ARM_euler2203 lmon.c -g -O3 -Wall -lncurses -lm -D ARM
[root@localhost nmon]# ls
lmon16n.c  lmon.c  makefile  nmon_ARM_euler2203
[root@localhost nmon]# ./nmon_ARM_euler2203 

性能采集

这里使用一条命令举例:./nmon_ARM_euler2203 -f -t -s 3 -c 10 -m ./data
-f 将输出结果写入文件。
-t 在文件中添加时间戳。
-s 3采样频率为3秒一次。
-c 10 采样次数为10次。
-m ./data 将结果文件保存在当前目录下名为data的文件中。

可视化分析工具 NMON Visualizer

Releases · nmonvisualizer/nmonvisualizer (github.com)
编译或直接下载 jar包, 使用命令运行 java -jar NMONVisualizer_2021-04-04.jar
image.png
载入结果文件,可以直观观测性能变化
image.png

相关文章:

openEuler编译安装nmon性能监控工具及可视化分析工具

ln 介绍 nmon&#xff08;short for Nigel’s Monitor&#xff09;是一个性能分析工具&#xff0c;由蓝色巨人IBM开发&#xff0c;最早用于自家操作系统UNIX&#xff0c;AIX &#xff08;Advanced Interactive eXecutive&#xff09;。现在也能用在Linux上。它可以显示系统的…...

96 前缀树Trie

前缀树 题解1 STL题解2 参考官方 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。 请你实现 Trie 类&#xff1a; …...

“第六十六天”

这个我记得是有更优解的&#xff0c;不过还是明天发吧&#xff0c;明天想一想&#xff0c;看看能不能想起来 #include<string.h> int main() {char a[201] { 0 };char b[201] { 0 };scanf("%s %s", a, b);int na strlen(a);int nb strlen(b);int i 0, j …...

MYSQL5.7和MYSQL8配置主从

1、创建专门主从的账号 #登录 mysql -u root -p #创建用户 我这里用户名为test5&#xff0c;注意这里的ip是从库服务器的ip CREATE USER test5192.168.1.20 IDENTIFIED WITH mysql_native_password BY xxxxx; #给主从复制账号授权 grant replication slave on *.* to test5192…...

springboot苍穹外卖实战:九、小程序微信登录代码开发+商品浏览

微信登录 application.yml和application-dev.yml application-dev.yml sky:wechat:appid: xxxsecret: xxxapplication.yml sky:wechat:appid: ${sky.wechat.appid}secret: ${sky.wechat.secret}配置为微信用户生成jwt令牌时使用的配置项&#xff1a; application.yml sky…...

【MySQL系列】 第二章 · SQL(下)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…...

SpringBoot_01

Spring https://spring.io/ SpringBoot可以帮助我们非常快速的构建应用程序、简化开发、提高效率。 SpringBootWeb入门 需求&#xff1a;使用SpringBoot开发一个web应用&#xff0c;浏览器发起请求/hello后&#xff0c;给浏览器返回字符串"Hello World~~~"。 步骤…...

【OS】AUTOSAR架构下多核通信

目录 前言 正文 1.多核通信介绍 2.多核间标准通信 2.1 什么是IOC 2.2 IOC的适用范围...

从Docker Hub获取镜像和创建容器

从Docker Hub获取镜像和创建容器 Docker Hub是一个公共的Docker镜像仓库&#xff0c;您可以从中获取各种镜像来构建容器。本文将演示如何从Docker Hub获取镜像&#xff0c;并用这些镜像创建和运行容器。让我们开始吧&#xff01; 步骤 1&#xff1a;搜索镜像 首先&#xff0…...

江西开放大学引领学习新时代:电大搜题助力学子迈向成功

江西开放大学&#xff08;简称江西电大&#xff09;一直以来致力于为学子提供灵活便捷的学习服务。近年来&#xff0c;携手电大搜题微信公众号&#xff0c;江西开放大学以其卓越的教学质量和创新的教学手段&#xff0c;为广大学子开启了一扇通向成功的大门。 作为一家知名的远…...

入门指南:Docker的基本命令

入门指南&#xff1a;Docker的基本命令 Docker是一个功能强大的容器化平台&#xff0c;可以帮助您轻松构建、打包和部署应用程序。要充分利用Docker&#xff0c;您需要了解一些基本命令。本文将介绍并示范Docker的一些最重要的基本命令&#xff0c;以帮助您快速上手。 1. doc…...

nvdiffrast的MeshRenderer

获取输入: vertex: 顶点坐标,大小为(B, N, 3)tri: 面片索引,大小为(B, M, 3) 或 (M, 3)feat(可选): 顶点features,大小为(B, C)计算NDC(标准设备坐标)投影矩阵,用于投影到图像平面。将顶点坐标转换到同质坐标(加1维,方便后续运算)。用NDC投影矩阵将顶点坐标转换到NDC空间。创建…...

APISIX源码安装问题解决

官网手册的安装语句&#xff1a; curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh -sL | bash -执行 install-dependencies.sh 报如下错误&#xff1a; Transaction check error:file /usr/share/gcc-4.8.2/python/libstdcxx/v6…...

基于SSM和vue的在线购物系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM和vue的在线购物系统,java项目。…...

力扣100题——子串

560.和为k的子数组 这道题目不是滑动窗口的类型&#xff0c;因为长度并不是固定的。&#xff08;好的&#xff0c;我在说废话&#xff09; 注意题目要求是子数组&#xff0c;且是连贯的。那这里的话&#xff0c;解法有很多&#xff0c;最简单的就是暴力解法&#xff0c;但在这…...

自然语言处理中的文本聚类:揭示模式和见解

一、介绍 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本聚类是一种基本且通用的技术&#xff0c;在信息检索、推荐系统、内容组织和情感分析等各种应用中发挥着关键作用。文本聚类是将相似文档或文本片段分组为簇或类别的过程。这项技术使我们能够发现隐藏的…...

C/C++内存管理——“C++”

各位CSDN的uu们你们好呀&#xff0c;好久没有更新小雅兰的C专栏啦&#xff0c;下面&#xff0c;小雅兰继续开始更新C专栏的内容&#xff01;&#xff01;&#xff01;今天&#xff0c;小雅兰的内容是C和C的内存管理&#xff0c;下面&#xff0c;让我们进入C的世界吧&#xff01…...

jsp小知识

jsp小知识 1[单选题] 用户登录功能中&#xff0c;用到的数据库操作是&#xff08; &#xff09;。 正确答案: C 我的答案: C A. 增加 B. 删除 C. 查询 D. 修改 2[单选题] 下列说法错误的是&#xff08; &#xff09;。 正确答案: C 我的答案: C A. JDBC API包括一组支…...

Flutter:改变手机状态栏颜色,与appBar状态颜色抱持一致

前言 最近在搞app的开发&#xff0c;本来没怎么注意appBar与手机状态栏颜色的问题。但是朋友一说才注意到这两种的颜色是不一样的。 我的app 京东 qq音乐 这样一对比发现是有的丑啊&#xff0c;那么如何实现呢&#xff1f; 实现 怎么说呢&#xff0c;真不会。百度到的一些是…...

深入分析:一体化运维监控在金融行业的关键作用

金融行业&#xff0c;作为现代经济的核心支柱&#xff0c;对信息技术的依赖程度极高。在飞速发展的金融科技背景下&#xff0c;如何保障IT系统的稳定运行&#xff0c;成为了行业关注的焦点。一体化运维监控&#xff0c;通过实时监控、智能预警、快速定位及自动化恢复等功能&…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...