Linux性能监控与调优工具

news2024/11/14 21:35:37

Linux性能监控与调优工具


文章目录

  • Linux性能监控与调优工具
  • 1.使用top、 vmstat、 iostat、 sysctl等常用工具
  • 2.使用高级分析手段, 如OProfile、 gprof
  • 4.使用LTP进行压力测试
  • 5.使用Benchmark评估系统


除了保证程序的正确性以外, 在项目开发中往往还关心性能和稳定性。 这时候, 我们往往要对内核、应用程序或整个系统进行性能优化。 在性能优化中常用的手段如下。

1.使用top、 vmstat、 iostat、 sysctl等常用工具

top命令用于显示处理器的活动状况。在缺省情况下,显示占用CPU最多的任务,并且每隔5s做一次刷新;vmstat命令用于报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息;iostat命令用于分析各个磁盘的传输闲忙状况;netstat是用来检测网络信息的工具;sar用于收集、报告或者保存系统活动信息,其中,sar用于显示数据,sar1和sar2用于收集和保存数据。
sysctl是一个可用于改变正在运行中的Linux系统的接口。用sysctl可以读取几百个以上的系统变量,例如用sysctl–a可读取所有变量。
sysctl的实现原理是:所有的内核参数在/proc/sys中形成一个树状结构,sysctl系统调用的内核函数是sys_sysctl,匹配项目后,最后的读写在do_sysctl_strategy中完成,如

echo "1" > /proc/sys/net/ipv4/ip_forward

就等价于:

sysctl –w net.ipv4.ip_forward ="1"

2.使用高级分析手段, 如OProfile、 gprof

OProfile可以帮助用户识别诸如模块的占用时间、循环的展开、高速缓存的使用率低、低效的类型转换和冗余操作、错误预测转移等问题。它收集有关处理器事件的信息,其中包括TLB的故障、停机、存储器访问以及缓存命中和未命中的指令的攫取数量。
OProfile支持两种采样方式:基于事件的采样(Event Based)和基于时间的采样(Time Based)。基于事件的采样是OProfile只记录特定事件(比如L2缓存未命中)的发生次数,当达到用户设定的定值时Oprofile就记录一下(采一个样)。这种方式需要CPU内部有性能计数器(Performace Counter)。基于时间的采样是OProfile借助OS时钟中断的机制,在每个时钟中断,OProfile都会记录一次(采一次样)。引入它的目的在于,提供对没有性能计数器的CPU的支持,其精度相对于基于事件的采样要低,因为要借助OS时钟中断的支持,对于禁用中断的代码,OProfile不能对其进行分析。
OProfile在Linux上分两部分,一个是内核模块(oprofile.ko),另一个是用户空间的守护进程(oprofiled)。前者负责访问性能计数器或者注册基于时间采样的函数,并将采样值置于内核的缓冲区内。后者在后台运行,负责从内核空间收集数据,写入文件。其运行步骤如下。
1)初始化opcontrol–init
2)配置opcontrol–setup–event=…
3)启动opcontrol–start
4)运行待分析的程序xxx
5)取出数据
opcontrol–dump
opcontrol–stop
6)分析结果opreport-l./xxx
用GNU gprof可以打印出程序运行中各个函数消耗的时间,以帮助程序员找出众多函数中耗时最多的函数;还可产生程序运行时的函数调用关系,包括调用次数,以帮助程序员分析程序的运行流程。
GNU gprof的实现原理:在编译和链接程序的时候(使用-pg编译和链接选项),gcc在应用程序的每个函数中都加入名为mcount(_mcount或__mcount,依赖于编译器或操作系统)的函数,也就是说应用程序里的每一个函数都会调用mcount,而mcount会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址。这张调用图也保存了所有与函数相关的调用时间、调用次数等的所有信息。
GNU gprof的基本用法如下。
1)使用-pg编译和链接应用程序。
2)执行应用程序并使它生成供gprof分析的数据。
3)使用gprof程序分析应用程序生成的数据。
3.进行内核跟踪,如LTTng
LTTng(Linux Trace Toolkit-next generation,官方网站为http://lttng.org/)是一个用于跟踪系统详细运行状态和流程的工具,它可以跟踪记录系统中的特定事件。这些事件包括:系统调用的进入和退出;陷阱/中断(Trap/Irq)的进入和退出;进程调度事件;内核定时器;进程管理相关事件——创建、唤醒、信号处理等;文件系统相关事件——open/read/write/seek/ioctl等;内存管理相关事件——内存分配/释放等;其他IPC/套接字/网络等事件。而对于这些记录,我们可以通过图形的方式经由lttv-gui查看,如图21.9所示。

4.使用LTP进行压力测试

LTP(Linux Test Project,官方网站为http://ltp.sourceforge.net/)是一个由SGI发起并由IBM负责维护的合作计划。它的目的是为开源社区提供测试套件来验证Linux的可靠性、健壮性和稳定性。它通过压力测试来判断系统的稳定性和可靠性,在工程中我们可使用LTP测试套件对Linux操作系统进行超长时间的测试,它可进行文件系统压力测试、硬盘I/O测试、内存管理压力测试、IPC压力测试、SCHED测试、命令功能的验证测试、系统调用功能的验证测试等。
在这里插入图片描述

5.使用Benchmark评估系统

可用于Linux的Benchmark的包括lmbench、 UnixBench、 AIM9、 Netperf、 SSLperf、 dbench、 Bonnie、Bonnie++、 Iozone、 BYTEmark等, 它们可用于评估操作系统、 网络、 I/O子系统、 CPU等的性能, 参考网址http://lbs.sourceforge.net/列出了许多Benchmark工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/505378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

体验讯飞星火认知大模型,据说中文能力超越ChatGPT

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

Nature | 生成式人工智能如何构建更好的抗体

疫情高峰期,研究人员竞相开发一些首批有效的COVID-19治疗方法:从已经康复的人的血液中分离出来的抗体分子。 现在,科学家已经证明,生成式人工智能(AI)可以通过一些繁琐的过程提供捷径,提出增强抗…

代码随想录算法训练营day29 | 491.递增子序列,46.全排列,47.全排列 II

代码随想录算法训练营day29 | 491.递增子序列,46.全排列,47.全排列 II 491.递增子序列解法一:回溯(map进行数层去重)解法二:回溯(仅针对本题,不具有普适性) 46.全排列解法…

有一说一,这是我看到的全网最新最全的SpringBoot后端接口规范了

一、前言 一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。虽然说后端接口的编写并没有统一规范…

一个.Net功能强大、易于使用、跨平台开源可视化图表

可视化图表运用是非常广泛的,比如BI系统、报表统计等。但是针对桌面应用的应用,很多报表都是收费的,今天给大家推荐一个免费.Net可视化开源的项目! 项目简介 基于C#开发的功能强大、易于使用、跨平台高质量的可视化图表库&#…

Shiro 入门概述

目录 是什么 为什么要用 Shiro Shiro 与 SpringSecurity 的对比 基本功能 原理 是什么 Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完 成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松 地保护…

Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile

在 Linux 系统中,文件锁定是一种对文件进行保护的方法,可以防止多个进程同时访问同一个文件,从而导致数据损坏或者冲突。文件锁定命令是一组用于在 Linux 系统中实现文件锁定操作的命令,它们可以用于对文件进行加锁或解锁&#xf…

直击中国国际金融展:实在智能携多项科技成果亮相,展现数字金融力量

4月25日-27日,中国国际金融展于北京首钢会展中心成功举办。作为我国规格最高、历史最久的金融科技展,本次展会以“荟萃金融科技成果,展现数字金融力量,谱写金融服务中国式现代化新篇章”为主题,吸引了众多国内金融机构…

企业邮箱选购,需关注哪些重要因素?

企业邮箱选择考虑哪些问题?应该从企业邮箱安全、企业邮箱的稳定性、企业邮箱专业、方便迁移到新的企业邮箱、企业邮箱邮件的到达率、功能强大的企业邮箱、企业邮箱手机客户端设置等方面考虑。 1.企业邮箱安全 企业邮箱应考虑病毒防治能力。Zoho Mail企业邮箱从物理安…

华硕笔记本系统更新后开机自动蓝屏怎么U盘重装系统?

华硕笔记本系统更新后开机自动蓝屏怎么U盘重装系统?有用户将自己的华硕笔记本进行系统升级之后,遇到了开机自动蓝屏的情况。遇到这个问题我们怎么去进行解决呢?接下来一起来看看怎么通过U盘重装系统的方法解决此问题吧。 准备工作&#xff1a…

【计算机组成原理】第五章 中央处理器

系列文章目录 第一章 计算系统概论 第二章 运算方法和运算器 第三章 多层次的存储器 第四章 指令系统 第五章 中央处理器 第六章 总线系统 第七章 外围设备 第八章 输入输出系统 文章目录 系列文章目录前言第五章 中央处理器5.1 CPU功能和组成5.1.1 CPU的功能5.1.2 CPU的基本…

中文修改润色平台-中文写作润色软件有哪些

中文语言润色软件 中文语言润色软件是一种基于自然语言处理技术,旨在提高中文文本的语言风格、表达能力和可读性的工具。中文语言润色软件可以自动检测和纠正文本中出现的语法、拼写、标点符号以及其他笔误等语言问题,并给出相应的纠正建议和修改意见。…

2022年5月、11月网络工程师真题详解

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 2022年5月网络工程师科目二真题 试题一: 某分支机构网络拓扑图如 1-1 所示,该网络通过 BGP 接收总部网络路由,设备 1 与设备…

AIGC产业研究报告 2023——音频生成篇

易观:今年以来,随着人工智能技术不断实现突破迭代,生成式AI的话题多次成为热门,而人工智能内容生成(AIGC)的产业发展、市场反应与相应监管要求也受到了广泛关注。为了更好地探寻其在各行业落地应用的可行性…

实战【7】手把手教你搭建属于自己的服务器

1 概述 最近总是想搭建自己的网站,奈何皮夹里空空如也,服务器也租不起,更别说域名了。于是我就寻思能否自己搭建个服务器,还不要钱呢? 经过几天的冲浪,我发现有两个免费的建站工具:Apache 和 …

MySQL 索引、事务与存储引擎

MySQL 索引 索引:根据查询字段在索引表中找到该行数据的物理地址。 作用:加快查询速度;排序。 缺点:占用额外的磁盘空间;更新一个包含索引的表需要花费更多的时间。 创建索引的原则 表的主键和外键需要索引&#…

Python每日一练(20230509) 石子游戏 IV\V\VI

目录 1. 石子游戏 Stone Game IV 2. 石子游戏 Stone Game V 3. 石子游戏 Stone Game VI 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 石子游戏 Stone Game IV Alice 和 Bob 两个人…

Halcon与Qt联合编程方法二(C++版本)

上一篇文章中提到基于python实现Halcon与Qt联合编程,但是在实际开发中,比如说已经有了qt编写的c版软件进行算法迭代,或者已经有了halcon编写的(.hdev文件)算法,想进行软件封装,这时候可以考虑把…

怎么把pdf中的某一页分出来?

怎么把pdf中的某一页分出来?PDF格式的文档在日常生活中是非常常见的,相信大家都对其有所了解,并且经常使用。它的主要特点是不允许用户随意编辑其中的内容,当我们仅需要阅读时,PDF文档无疑是十分方便的,尤其…

Linux Docker部署SpringCloud

Linux Docker部署SpringCloud 1 项目介绍2 快速部署2.1 api-registry2.1 api-gateway2.1 api-provider2.1 api-consumer 1 项目介绍 这是一个典型的springcloud项目架构,api-registry为注册中心,api-gateway为网关,api-provider为服务提供者&…