목차
성능 분석 도구" >성능 분석 도구
iostat – CPU 통계 보고용 " >iostat – CPU 통계 보고용
dstat – 시스템 모니터링 도구" >dstat – 시스템 모니터링 도구
iotop – LINUX 프로세스 실시간 모니터링 도구" >iotop – LINUX 프로세스 실시간 모니터링 도구
pidstat – 시스템 리소스 모니터링" >pidstat – 시스템 리소스 모니터링
top" >top
htop" >htop
mpstat" >mpstat
netstat" >netstat
ps–显示当前进程的状态" >ps–显示当前进程的状态
strace" >strace
uptime" >uptime
lsof" >lsof
perf" >perf
汇总" >汇总
常用的性能测试工具" >常用的性能测试工具
Linux observability tools | Linux 性能观测工具" >Linux observability tools | Linux 性能观测工具
Linux benchmarking tools | Linux 性能测评工具" >Linux benchmarking tools | Linux 性能测评工具
Linux tuning tools | Linux 性能调优工具" >Linux tuning tools | Linux 性能调优工具
Linux observability sar | linux性能观测工具" >Linux observability sar | linux性能观测工具
시스템 튜토리얼 리눅스 Linux 성능 분석 도구 요약

Linux 성능 분석 도구 요약

Feb 15, 2024 pm 03:57 PM
linux 리눅스 튜토리얼 리눅스 시스템 리눅스 명령 쉘 스크립트 메모리 사용량 임베디드리눅스 리눅스 시작하기 리눅스 학습

Linux 운영 체제에 대한 관심과 낮은 수준의 지식에 대한 열망으로 인해 이 기사를 편집했습니다. 이는 기본 지식을 확인하는 역할을 하며 시스템의 모든 측면을 다룹니다. 컴퓨터 시스템, 네트워크 및 운영 체제에 대한 완전한 지식이 없으면 설명서에 있는 도구를 완전히 익힐 수 없습니다. 또한 시스템 성능 분석 및 최적화는 장기적인 시리즈입니다.

이 문서는 주로 Linux 전문가와 Netflix 수석 성능 설계자 Brendan Gregg의 업데이트된 Linux 성능 튜닝 도구 블로그 게시물을 결합하고 Linux 시스템 성능 최적화와 관련된 기사를 모아 정리한 종합 기사입니다. 주로 블로그 게시물과 관련된 원리와 성능 테스트 도구를 설명합니다.

배경 지식: 성능 문제를 분석할 때 배경 지식에 대한 이해가 필요합니다. 예를 들어, 하드웨어 캐시, 또 다른 예로는 운영 체제 커널이 있습니다. 애플리케이션 동작의 세부 사항은 종종 이러한 것들과 얽혀 있으며, 이러한 낮은 수준의 것들이 예상치 못한 방식으로 애플리케이션의 성능에 영향을 미칠 수 있습니다. 예를 들어, 일부 프로그램은 캐시를 완전히 활용하지 못하여 성능이 저하됩니다. 예를 들어, 너무 많은 시스템 호출이 불필요하게 호출되어 커널/사용자 전환 등이 자주 발생합니다.

성능 분석 도구

먼저 사진을 보겠습니다.

Linux 性能分析工具汇总

위 그림은 Brendan Gregg가 공유한 성능 분석입니다. 여기에 있는 모든 도구는 man를 통해 도움말 문서를 얻을 수 있습니다. 다음은 일반적인 사용법에 대한 간략한 소개입니다.

vmstat – 가상 메모리 통계

vmstat(VirtualMeomoryStatistics, 가상 메모리 통계)는 Linux에서 메모리를 모니터링하는 일반적인 도구로 운영 체제의 가상 메모리, 프로세스, CPU 등의 전반적인 상황을 모니터링할 수 있습니다. vmstat의 일반적인 사용법:

, 사용자가 수동으로 중지할 때까지 데이터가 수집됩니다. 간단한 예를 들어보세요: vmstat interval times 即每隔 interval 秒采样一次,共采样 times 次,如果省略 times

Linux 性能分析工具汇总

를 사용하여 데이터를 수집할 수 있습니다. ctrl+c 停止 vmstat

첫 번째 행은 시스템이 시작된 이후의 평균을 보여주고, 두 번째 행은 지금 무슨 일이 일어나고 있는지 보여주기 시작합니다. 다음 행은 각 5초 간격으로 무슨 일이 일어나고 있는지 보여줍니다. 각 열의 의미는 아래와 같이 헤더에 있습니다.

  • procs: r 이 열은 CPU를 기다리고 있는 프로세스 수를 표시하고, b 열은 중단 없이 대기 중인(IO를 기다리는) 프로세스 수를 표시합니다.
  • memory:swapd 열에는 디스크에서 스왑된 블록 수(페이지 스왑)가 표시되고, 나머지 열에는 사용 가능한 블록 수(사용되지 않음), 버퍼로 사용되는 블록 수 및 버퍼로 사용되는 블록 수가 표시됩니다. 운영 체제 캐시.
  • 스왑: 스왑 활동을 표시합니다. 즉, 초당 스왑 인(디스크에서) 및 스왑 아웃(디스크로)되는 블록 수입니다.
  • io: 일반적으로 하드 디스크 I/O를 반영하여 블록 장치에서 읽은(bi) 블록 수와 쓴(bo) 블록 수를 표시합니다.
  • system: 초당 인터럽트(in) 및 컨텍스트 스위치(cs) 수를 표시합니다.
  • CPU: 사용자 코드 실행(비커널), 시스템 코드 실행(커널), 유휴 및 IO 대기를 포함한 다양한 작업에 소비된 모든 CPU 시간의 백분율을 표시합니다.

메모리 부족 증상: 사용 가능한 메모리가 급격하게 감소, 버퍼 및 캐시 재활용이 도움이 되지 않음, 스왑 파티션(swpd)의 과도한 사용, 잦은 페이지 교환(swap), 읽기 및 쓰기 디스크 수 증가(io), 페이지 폴트 인터럽트(in) 증가, 컨텍스트 스위치(cs) 수 증가, IO(b)를 기다리는 프로세스 수 증가, IO(wa)를 기다리는 데 많은 CPU 시간 소비

iostat – CPU 통계 보고용

iostat는 전체 시스템, 어댑터, tty 장치, 디스크 및 CD-ROM에 대한 중앙 처리 장치(CPU) 통계 및 입출력 통계를 보고하는 데 사용됩니다. 기본적으로 vmstat와 동일한 CPU 사용량 정보를 표시합니다. 확장 장치 통계를 표시하는 명령:

Linux 性能分析工具汇总

첫 번째 줄에는 시스템 부팅 이후의 평균이 표시되고 그 다음에는 장치당 한 줄씩 증분 평균이 표시됩니다.

일반적인 Linux 디스크 IO 표시기 약어 습관: rq는 요청, r은 읽기, w는 쓰기, qu는 대기열, sz는 크기, a는 평균, tm은 시간, svc는 서비스입니다.

  • rrqm/s 및 wrqm/s: 초당 읽기 및 쓰기 요청을 결합한 "병합"은 운영 체제가 대기열에서 여러 논리적 요청을 가져와 실제 디스크에 대한 단일 요청으로 병합한다는 의미입니다.
  • r/s 및 w/s: 초당 장치에 전송된 읽기 및 쓰기 요청 수입니다.
  • rsec/s 및 wsec/s: 초당 읽고 쓴 섹터 수입니다.
  • avgrq –sz: 요청된 섹터 수입니다.
  • avgqu –sz: 장치 대기열에서 대기 중인 요청 수입니다.
  • 대기: 각 IO 요청에 소요된 시간입니다.
  • svctm: 실제 요청(서비스) 시간입니다.
  • %util: 하나 이상의 활성 요청이 있었던 시간의 비율입니다.

dstat – 시스템 모니터링 도구

dstat는 CPU 사용량, 디스크 IO 상태, 네트워크 패킷 전송 상태 및 페이징 상태를 표시합니다. 출력은 vmstat 및 iostat의 입력에 비해 더 자세하고 직관적입니다. 사용할 때에는 명령어를 직접 입력하면 되고, 물론 특정 매개변수를 사용할 수도 있습니다.

다음과 같습니다:dstat –cdlmnpsy

Linux 性能分析工具汇总

iotop – LINUX 프로세스 실시간 모니터링 도구

iotop 명령은 하드 디스크 IO를 표시하도록 특별히 설계된 명령으로, 인터페이스 스타일은 top 명령과 유사하며 어떤 프로세스가 IO 로드를 구체적으로 생성하는지 표시할 수 있습니다. 디스크 I/O 사용량을 모니터링하는 데 사용되는 최고의 도구입니다. PID, 사용자, I/O, 프로세스 및 기타 관련 정보를 포함하여 top과 유사한 UI를 가지고 있습니다.

비대화형 방식으로 사용할 수 있습니다:

으아악

각 프로세스의 I/O를 보려면

를 사용하세요. 으아악

pidstat – 시스템 리소스 모니터링

pidstat는 주로 CPU, 메모리, 장치 IO, 작업 전환, 스레드 등과 같은 전체 또는 특정 프로세스의 시스템 리소스 사용량을 모니터링하는 데 사용됩니다.

使用方法:

pidstat –d interval
로그인 후 복사

pidstat 还可以用以统计CPU使用信息:

pidstat –u interval
로그인 후 복사

统计内存信息:

pidstat –r interval
로그인 후 복사

top

  • top 命令的汇总区域显示了五个方面的系统性能信息:
  • 负载:时间,登陆用户数,系统平均负载;
  • 进程:运行,睡眠,停止,僵尸;
  • cpu:用户态,核心态,NICE,空闲,等待IO,中断等;
  • 内存:总量,已用,空闲(系统角度),缓冲,缓存;
  • 交换分区:总量,已用,空闲

任务区域默认显示:进程 ID,有效用户,进程优先级,NICE 值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU 占用率,内存占用率,累计 CPU 时间,进程命令行信息。

htop

htop 是 Linux 系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要 ncurses。

Linux 性能分析工具汇总

Htop 可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

与 top 相比,htop 有以下优点:

  • 可以横向或者纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。
  • 在启动上,比top更快。
  • 杀进程时不需要输入进程号。
  • htop支持鼠标操作。

mpstat

mpstat 是 Multiprocessor Statistics的缩写,是实时系统监控工具。其报告CPU的一些统计信息,这些信息存放在 /proc/stat 文件中。在多 CPUs 系统里,其不但能查看所有 CPU 的平均状况信息,而且能够查看特定 CPU 的信息。常见用法:

mpstat –P ALL interval times
로그인 후 복사

netstat

netstat 用于显示与 IP、TCP、UDP和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

常见用法:

netstat –npl   # 可以查看你要打开的端口是否已经打开。

netstat –rn    # 打印路由表信息。

netstat –in    # 提供系统上的接口信息,打印每个接口的MTU,输入分组数,输入错误,输出分组数,输出错误,冲突以及当前的输出队列的长度。
로그인 후 복사

ps–显示当前进程的状态

ps 参数太多,具体使用方法可以参考 man ps

常用的方法:

ps  aux       #hsserver

ps –ef |grep   #hundsun
로그인 후 복사

杀掉某一程序的方法:

ps  aux | grep mysqld | grep –v grep | awk ‘{print $2 }’ xargs kill -9
로그인 후 복사

杀掉僵尸进程:

ps –eal | awk ‘{if ($2 == “Z”){print $4}}’ | xargs kill -9
로그인 후 복사

strace

跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况。

举例:查看 mysqld 在 linux 上加载哪种配置文件,可以通过运行下面的命令:

strace –e stat64 mysqld –print –defaults > /dev/null
로그인 후 복사

uptime

能够打印系统总共运行了多长时间和系统的平均负载,uptime 命令最后输出的三个数字的含义分别是 1分钟,5分钟,15分钟内系统的平均负荷。

lsof

lsof(list open files)是一个列出当前系统打开文件的工具。通过 lsof 工具能够查看这个列表对系统检测及排错,常见的用法:

查看文件系统阻塞

lsof /boot
로그인 후 복사

查看端口号被哪个进程占用

lsof  -i : 3306
로그인 후 복사

查看用户打开哪些文件

lsof –u username
로그인 후 복사

查看进程打开哪些文件

lsof –p  4838
로그인 후 복사

查看远程已打开的网络链接

lsof –i @192.168.34.128
로그인 후 복사

perf

perf 是 Linux kernel 自带的系统性能优化工具。优势在于与 Linux Kernel 的紧密结合,它可以最先应用到加入 Kernel 的new feature,用于查看热点函数,查看 cashe miss 的比率,从而帮助开发者来优化程序性能。

性能调优工具如 perf,Oprofile 等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。

假如一个程序 90% 的时间都花费在函数 foo() 上,那么 90% 的采样点都应该落在函数 foo() 的上下文中。运气不可捉摸,但我想只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过 tick 触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。

汇总

结合以上常用的性能测试命令并联系文初的性能分析工具的图,就可以初步了解到性能分析过程中哪个方面的性能使用哪方面的工具(命令)。

常用的性能测试工具

熟练并精通了第二部分的性能分析命令工具,引入几个性能测试的工具,介绍之前先简单了解几个性能测试工具:

  • perf_events:一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展。Perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析。
  • eBPF tools:一款使用 bcc 进行的性能追踪的工具,eBPF map可以使用定制的 eBPF 程序被广泛应用于内核调优方面,也可以读取用户级的异步代码。重要的是这个外部的数据可以在用户空间管理。这个 k-v 格式的 map 数据体是通过在用户空间调用 bpf 系统调用创建、添加、删除等操作管理的。
  • perf-tools:一款基于 perf_events (perf) 和 ftrace 的Linux性能分析调优工具集。Perf-Tools 依赖库少,使用简单。支持Linux 3.2 及以上内核版本。
  • bcc(BPF Compiler Collection)::一款使用 eBP F的 perf 性能分析工具。一个用于创建高效的内核跟踪和操作程序的工具包,包括几个有用的工具和示例。利用扩展的BPF(伯克利数据包过滤器),正式称为eBPF,一个新的功能,首先被添加到Linux 3.15。多用途需要Linux 4.1以上BCC。
  • ktap:一种新型的linux脚本动态性能跟踪工具。允许用户跟踪Linux内核动态。ktap是设计给具有互操作性,允许用户调整操作的见解,排除故障和延长内核和应用程序。它类似于Linux和Solaris DTrace SystemTap。
  • Flame Graphs:是一款使用 perf,system tap,ktap 可视化的图形软件,允许最频繁的代码路径快速准确地识别,可以是使用 github.com/brendangregg/flamegraph 中的开发源代码的程序生成。

Linux observability tools | Linux 性能观测工具

Linux 性能分析工具汇总
  • 首先学习的Basic Tool有如下:uptime、top(htop)、mpstat、isstat、vmstat、free、ping、nicstat、dstat。
  • 高级的命令如下:sar、netstat、pidstat、strace、tcpdump、blktrace、iotop、slabtop、sysctl、/proc。

Linux benchmarking tools | Linux 性能测评工具

Linux 性能分析工具汇总

是一款性能测评工具,对于不同模块的性能测试可以使用相应的工具,想要深入了解,可以参考最下文的附件文档。

Linux tuning tools | Linux 性能调优工具

Linux 性能分析工具汇总

是一款性能调优工具,主要是从linux内核源码层进行的调优,想要深入了解,可以参考下文附件文档。

Linux observability sar | linux性能观测工具

Linux 性能分析工具汇总

sar(System Activity Reporter系统活动情况报告)是目前LINUX上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC 有关的活动等方面。sar 的常规使用方式:

sar  [options] [-A] [-o file]  t [n]
로그인 후 복사

其中:t 为采样间隔,n 为采样次数,默认值是1;-o file 表示将命令结果以二进制格式存放在文件中,file 是文件名。options 为命令行选项

위 내용은 Linux 성능 분석 도구 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

VSCODE에 필요한 컴퓨터 구성 VSCODE에 필요한 컴퓨터 구성 Apr 15, 2025 pm 09:48 PM

대 코드 시스템 요구 사항 : 운영 체제 : Windows 10 이상, MacOS 10.12 이상, Linux 배포 프로세서 : 최소 1.6GHz, 권장 2.0GHz 이상의 메모리 : 최소 512MB, 권장 4GB 이상의 저장 공간 : 최소 250MB, 권장 1GB 및 기타 요구 사항 : 안정 네트워크 연결, Xorg/Wayland (LINUX)

Apr 16, 2025 pm 07:39 PM

메모장은 Java 코드를 직접 실행할 수는 없지만 다른 도구를 사용하여 명령 줄 컴파일러 (Javac)를 사용하여 Bytecode 파일 (filename.class)을 생성하면 달성 할 수 있습니다. Java Interpreter (Java)를 사용하여 바이트 코드를 해석하고 코드를 실행하고 결과를 출력하십시오.

VSCODE는 확장자를 설치할 수 없습니다 VSCODE는 확장자를 설치할 수 없습니다 Apr 15, 2025 pm 07:18 PM

VS 코드 확장을 설치하는 이유는 다음과 같습니다. 네트워크 불안정성, 불충분 한 권한, 시스템 호환성 문제, C 코드 버전은 너무 오래된, 바이러스 백신 소프트웨어 또는 방화벽 간섭입니다. 네트워크 연결, 권한, 로그 파일, 업데이트 대 코드 업데이트, 보안 소프트웨어 비활성화 및 대 코드 또는 컴퓨터를 다시 시작하면 점차 문제를 해결하고 해결할 수 있습니다.

Linux Architecture : 5 개의 기본 구성 요소를 공개합니다 Linux Architecture : 5 개의 기본 구성 요소를 공개합니다 Apr 20, 2025 am 12:04 AM

Linux 시스템의 5 가지 기본 구성 요소는 다음과 같습니다. 1. Kernel, 2. System Library, 3. System Utilities, 4. 그래픽 사용자 인터페이스, 5. 응용 프로그램. 커널은 하드웨어 리소스를 관리하고 시스템 라이브러리는 사전 컴파일 된 기능을 제공하며 시스템 유틸리티는 시스템 관리에 사용되며 GUI는 시각적 상호 작용을 제공하며 응용 프로그램은 이러한 구성 요소를 사용하여 기능을 구현합니다.

vScode를 Mac에 사용할 수 있습니다 vScode를 Mac에 사용할 수 있습니다 Apr 15, 2025 pm 07:36 PM

VS 코드는 Mac에서 사용할 수 있습니다. 강력한 확장, GIT 통합, 터미널 및 디버거가 있으며 풍부한 설정 옵션도 제공합니다. 그러나 특히 대규모 프로젝트 또는 고도로 전문적인 개발의 경우 VS 코드는 성능 또는 기능 제한을 가질 수 있습니다.

VScode 란 무엇입니까? VScode 란 무엇입니까? Apr 15, 2025 pm 06:45 PM

VS Code는 Full Name Visual Studio Code로, Microsoft가 개발 한 무료 및 오픈 소스 크로스 플랫폼 코드 편집기 및 개발 환경입니다. 광범위한 프로그래밍 언어를 지원하고 구문 강조 표시, 코드 자동 완료, 코드 스 니펫 및 스마트 프롬프트를 제공하여 개발 효율성을 향상시킵니다. 풍부한 확장 생태계를 통해 사용자는 디버거, 코드 서식 도구 및 GIT 통합과 같은 특정 요구 및 언어에 확장을 추가 할 수 있습니다. VS 코드에는 코드에서 버그를 신속하게 찾아서 해결하는 데 도움이되는 직관적 인 디버거도 포함되어 있습니다.

vscode를 사용하는 방법 vscode를 사용하는 방법 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCODE)는 Microsoft가 개발 한 크로스 플랫폼, 오픈 소스 및 무료 코드 편집기입니다. 광범위한 프로그래밍 언어에 대한 가볍고 확장 성 및 지원으로 유명합니다. VSCODE를 설치하려면 공식 웹 사이트를 방문하여 설치 프로그램을 다운로드하고 실행하십시오. VScode를 사용하는 경우 새 프로젝트를 만들고 코드 편집, 디버그 코드, 프로젝트 탐색, VSCODE 확장 및 설정을 관리 할 수 ​​있습니다. VSCODE는 Windows, MacOS 및 Linux에서 사용할 수 있으며 여러 프로그래밍 언어를 지원하며 Marketplace를 통해 다양한 확장을 제공합니다. 이점은 경량, 확장 성, 광범위한 언어 지원, 풍부한 기능 및 버전이 포함됩니다.

git의 창고 주소를 확인하는 방법 git의 창고 주소를 확인하는 방법 Apr 17, 2025 pm 01:54 PM

git 저장소 주소를 보려면 다음 단계를 수행하십시오. 1. 명령 줄을 열고 리포지토리 디렉토리로 이동하십시오. 2. "git remote -v"명령을 실행하십시오. 3. 출력 및 해당 주소에서 저장소 이름을 봅니다.

See all articles