Heim > System-Tutorial > LINUX > Hauptteil

Zusammenfassung der Linux-Leistungsanalysetools

WBOY
Freigeben: 2024-02-15 15:57:03
nach vorne
1057 Leute haben es durchsucht

Aufgrund meines Interesses am Linux-Betriebssystem und meinem Wunsch nach Grundkenntnissen habe ich diesen Artikel zusammengestellt. Es dient der Überprüfung des Grundwissens und deckt alle Aspekte des Systems ab. Die Werkzeuge in der Dokumentation können ohne umfassende Kenntnisse über Computersysteme, Netzwerke und Betriebssysteme nicht vollständig beherrscht werden. Darüber hinaus handelt es sich bei der Analyse und Optimierung der Systemleistung um eine langfristige Serie.

Bei diesem Dokument handelt es sich hauptsächlich um einen umfassenden Artikel, der durch die Kombination des aktualisierten Blogbeitrags zum Linux-Performance-Tuning-Tool des Linux-Guru und Netflix-Senior-Performance-Architekten Brendan Gregg und der Sammlung von Artikeln zur Linux-Systemleistungsoptimierung zusammengestellt wurde. Es werden hauptsächlich die Prinzipien und Leistungstesttools erläutert, die im Zusammenhang mit dem Blogbeitrag verwendet werden.

Hintergrundwissen: Bei der Analyse von Leistungsproblemen ist Verständnis für Hintergrundwissen erforderlich. Zum Beispiel Hardware-Cache; ein weiteres Beispiel ist der Betriebssystemkernel. Die Details des Anwendungsverhaltens hängen häufig mit diesen Dingen zusammen, und diese Dinge auf niedriger Ebene können die Leistung der Anwendung auf unerwartete Weise beeinträchtigen. Einige Programme nutzen beispielsweise den Cache nicht vollständig aus, was zu einer schlechten Leistung führt. Beispielsweise werden unnötig viele Systemaufrufe aufgerufen, was zu häufigen Kernel-/Benutzerwechseln usw. führt.

Leistungsanalyse-Tool

Schauen wir uns zunächst ein Bild an:

Linux 性能分析工具汇总

Das Bild oben ist eine von Brendan Gregg geteilte Leistungsanalyse. Alle Tools hier können ihre Hilfedokumente abrufen man Hier ist eine kurze Einführung in die allgemeine Verwendung:

vmstat – Statistiken zum virtuellen Speicher

vmstat (VirtualMeomoryStatistics, virtuelle Speicherstatistik) ist ein gängiges Tool zur Speicherüberwachung unter Linux. Es kann die Gesamtsituation des virtuellen Speichers, der Prozesse, der CPU usw. des Betriebssystems überwachen. Allgemeine Verwendung von vmstat: vmstat interval times 即每隔 interval 秒采样一次,共采样 times 次,如果省略 times, Daten werden gesammelt, bis der Benutzer sie manuell stoppt. Geben Sie einfach ein einfaches Beispiel:

Linux 性能分析工具汇总

Mit ctrl+c 停止 vmstat können Sie Daten sammeln.

Die erste Zeile zeigt den Durchschnitt seit dem Systemstart, die zweite Zeile zeigt, was jetzt passiert, die folgenden Zeilen zeigen, was in jedem 5-Sekunden-Intervall passiert, die Bedeutung jeder Spalte befindet sich in der Kopfzeile, wie unten gezeigt:

  • procs: r Diese Spalte zeigt, wie viele Prozesse auf die CPU warten, und Spalte b zeigt, wie viele Prozesse ununterbrochen schlafen (auf IO warten).
  • Die Spalte „memory:swapd“ zeigt, wie viele Blöcke von der Festplatte ausgelagert wurden (Seitenaustausch), die übrigen Spalten zeigen, wie viele Blöcke frei (nicht verwendet) sind, wie viele Blöcke als Puffer verwendet werden und wie viele als Puffer verwendet werden Betriebssystem-Cache.
  • swap: Zeigt die Swap-Aktivität an: wie viele Blöcke pro Sekunde ein- (von der Festplatte) und ausgelagert (auf die Festplatte) werden.
  • io: Zeigt an, wie viele Blöcke vom Blockgerät gelesen (bi) und geschrieben (bo) wurden, was normalerweise die Festplatten-E/A widerspiegelt.
  • System: Zeigt die Anzahl der Interrupts (in) und Kontextwechsel (cs) pro Sekunde an.
  • CPU: Zeigt den Prozentsatz der gesamten CPU-Zeit an, die für verschiedene Vorgänge aufgewendet wurde, einschließlich der Ausführung von Benutzercode (Nicht-Kernel), der Ausführung von Systemcode (Kernel), im Leerlauf und beim Warten auf E/A.

Symptome von unzureichendem Speicher: Der freie Speicher nimmt stark ab, das Recycling von Puffer und Cache hilft nicht, umfangreiche Nutzung von Swap-Partitionen (swpd), häufiger Seitenaustausch (swap), Erhöhung der Anzahl der Lese- und Schreibplatten (io) und Die Anzahl der Seitenfehler-Interrupts (in) nimmt zu, die Anzahl der Kontextwechsel (cs) nimmt zu, die Anzahl der Prozesse, die auf IO (b) warten, nimmt zu und es wird viel CPU-Zeit damit verbracht, auf IO (wa) zu warten

iostat – zum Melden von CPU-Statistiken

iostat wird verwendet, um Statistiken zur Zentraleinheit (CPU) und Eingabe-/Ausgabestatistiken für das gesamte System, Adapter, TTY-Geräte, Festplatten und CD-ROMs zu melden. Standardmäßig werden dieselben CPU-Nutzungsinformationen wie vmstat angezeigt Befehl zum Anzeigen der Gerätestatistik der Erweiterung:

Linux 性能分析工具汇总Die erste Zeile zeigt den Durchschnitt seit Systemstart, dann den inkrementellen Durchschnitt, eine Zeile pro Gerät.

Übliche Abkürzungsgewohnheiten für Linux-Festplatten-IO-Indikatoren: rq ist Anforderung, r ist Lesen, w ist Schreiben, qu ist Warteschlange, sz ist Größe, a ist Durchschnitt, tm ist Zeit und svc ist Dienst.

    rrqm/s und wrqm/s: Kombinierte Lese- und Schreibanforderungen pro Sekunde. „Zusammengeführt“ bedeutet, dass das Betriebssystem mehrere logische Anforderungen aus der Warteschlange nimmt und sie zu einer einzigen Anforderung an die eigentliche Festplatte zusammenführt.
  • r/s und w/s: Anzahl der Lese- und Schreibanfragen, die pro Sekunde an das Gerät gesendet werden.
  • rsec/s und wsec/s: Anzahl der pro Sekunde gelesenen und geschriebenen Sektoren.
  • avgrq –sz: Anzahl der angeforderten Sektoren.
  • avgqu –sz: Anzahl der Anfragen, die in der Gerätewarteschlange warten.
  • Warten: Die für jede E/A-Anfrage aufgewendete Zeit.
  • svctm: Tatsächliche Anforderungs-(Dienst-)Zeit.
  • %util: Der Prozentsatz der Zeit, in der es mindestens eine aktive Anfrage gab.

dstat – Systemüberwachungstool

dstat zeigt die CPU-Auslastung, den Festplatten-IO-Status, den Netzwerkpaket-Sendestatus und den Paging-Status an. Die Ausgabe ist farbenfroh und besser lesbar als die Eingabe von vmstat und iostat. Geben Sie bei der Verwendung einfach den Befehl direkt ein. Natürlich können Sie auch bestimmte Parameter verwenden.

Wie folgt:

dstat –cdlmnpsy

Linux 性能分析工具汇总

iotop – Echtzeit-Überwachungstool für Linux-Prozesse

Der Befehl iotop ist ein Befehl, der speziell zum Anzeigen von Festplatten-E/A entwickelt wurde. Der Schnittstellenstil ähnelt dem Befehl top. Er kann anzeigen, welcher Prozess speziell die E/A-Last generiert. Es handelt sich um ein Top-Tool zur Überwachung der Festplatten-E/A-Nutzung. Es verfügt über eine ähnliche Benutzeroberfläche wie Top, einschließlich PID, Benutzer, E/A, Prozess und anderer verwandter Informationen.

Kann nicht interaktiv verwendet werden:

iotop –bod interval
Nach dem Login kopieren

Um das

jedes Prozesses anzuzeigen, können Sie I/O verwenden

pidstat,pidstat –d instat
Nach dem Login kopieren

pidstat – Systemressourcen überwachen

pidstat wird hauptsächlich verwendet, um die Nutzung von Systemressourcen durch alle oder bestimmte Prozesse zu überwachen, wie z. B. CPU, Speicher, Geräte-E/A, Aufgabenwechsel, Threads usw.

使用方法:

pidstat –d interval
Nach dem Login kopieren

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

pidstat –u interval
Nach dem Login kopieren

统计内存信息:

pidstat –r interval
Nach dem Login kopieren

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
Nach dem Login kopieren

netstat

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

常见用法:

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

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

netstat –in    # 提供系统上的接口信息,打印每个接口的MTU,输入分组数,输入错误,输出分组数,输出错误,冲突以及当前的输出队列的长度。
Nach dem Login kopieren

ps–显示当前进程的状态

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

常用的方法:

ps  aux       #hsserver

ps –ef |grep   #hundsun
Nach dem Login kopieren

杀掉某一程序的方法:

ps  aux | grep mysqld | grep –v grep | awk ‘{print $2 }’ xargs kill -9
Nach dem Login kopieren

杀掉僵尸进程:

ps –eal | awk ‘{if ($2 == “Z”){print $4}}’ | xargs kill -9
Nach dem Login kopieren

strace

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

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

strace –e stat64 mysqld –print –defaults > /dev/null
Nach dem Login kopieren

uptime

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

lsof

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

查看文件系统阻塞

lsof /boot
Nach dem Login kopieren

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

lsof  -i : 3306
Nach dem Login kopieren

查看用户打开哪些文件

lsof –u username
Nach dem Login kopieren

查看进程打开哪些文件

lsof –p  4838
Nach dem Login kopieren

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

lsof –i @192.168.34.128
Nach dem Login kopieren

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]
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonZusammenfassung der Linux-Leistungsanalysetools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:lxlinux.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!