首页 > 运维 > linux运维 > 正文

超全整理 - Linux性能分析工具汇总合集

发布: 2023-08-03 16:20:12
转载
954 人浏览过

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。


本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性能测试的工具展开说明。


背景知识:具备背景知识是分析性能问题时需要了解的。比如硬件 cache;再比如操作系统内核。应用程序的行为细节往往是和这些东西互相牵扯的,这些底层的东西会以意想不到的方式影响应用程序的性能,比如某些程序无法充分利用 cache,从而导致性能下降。比如不必要地调用过多的系统调用,造成频繁的内核 / 用户切换等。这里只是为本文的后续内容做一些铺垫,关于调优还有很多东西,我所不知道的比知道的要多的多,希望大家能共同学习进步。


【性能分析工具】

首先来看一张图:

超全整理 - 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列显示了多少块被换出了磁盘(页面交换),剩下的列显示了多少块是空闲的(未被使用),多少块正在被用作缓冲区,以及多少正在被用作操作系统的缓存。

▪ swap:显示交换活动:每秒有多少块正在被换入(从磁盘)和换出(到磁盘)。

▪ io:显示了多少块从块设备读取(bi)和写出(bo),通常反映了硬盘I/O。

▪ system:显示每秒中断(in)和上下文切换(cs)的数量。

▪ cpu:显示所有的cpu时间花费在各类操作的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO。

内存不足的表现:free  memory急剧减少,回收buffer和cacher也无济于事,大量使用交换分区(swpd),页面交换(swap)频繁,读写磁盘数量(io)增多,缺页中断(in)增多,上下文切换(cs)次数增多,等待IO的进程数(b)增多,大量CPU时间用于等待IO(wa)


▲iostat--用于报告中央处理器统计信息

iostat用于报告中央处理器(CPU)统计信息和整个系统、适配器、tty 设备、磁盘和 CD-ROM 的输入/输出统计信息,默认显示了与vmstat相同的cpu使用信息,使用以下命令显示扩展的设备统计:

超全整理 - Linux性能分析工具汇总合集

第一行显示的是自系统启动以来的平均值,然后显示增量的平均值,每个设备一行。

常见linux的磁盘IO指标的缩写习惯:rq是request,r是read,w是write,qu是queue,sz是size,a是verage,tm是time,svc是service。

▪rrqm/s和wrqm/s:每秒合并的读和写请求,“合并的”意味着操作系统从队列中拿出多个逻辑请求合并为一个请求到实际磁盘。

▪r/s和w/s:每秒发送到设备的读和写请求数。

▪rsec/s和wsec/s:每秒读和写的扇区数。

▪avgrq –sz:请求的扇区数。

▪avgqu –sz:在设备队列中等待的请求数。

▪await: Die für jede IO-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 Seitenänderungsstatus an vmstat und iostat sind detaillierter und intuitiver. Geben Sie bei der Verwendung einfach den Befehl direkt ein. Natürlich können Sie auch bestimmte Parameter verwenden.

lautet wie folgt: dstat –cdlmnpsy

超全整理 - Linux性能分析工具汇总合集


▲iotop – Linux-Prozess-Echtzeitüberwachungstool

iotop-Befehl ist ein Befehl speziell für die Anzeige von Festplatten-IO. Die Schnittstelle Der Stil ähnelt dem Befehl top und kann angezeigt werden, 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 auf nicht interaktive Weise verwendet werden: iotop –bod-Intervall. Um die E/A jedes Prozesses anzuzeigen, können Sie pidstat, pidstat –d instat verwenden.


Durchsuchen Sie das offizielle Backend der chinesischen Linux-Community und antworten Sie auf „Private Küche“, um ein Überraschungsgeschenkpaket zu erhalten.


▲pidstat – Systemressourcen überwachen

pidstat wird hauptsächlich zur Überwachung der Nutzung von Systemressourcen durch alle oder bestimmte Prozesse verwendet, wie z. B. CPU, Speicher, Geräte-E/A, Aufgabenwechsel, Threads usw .

Verwendung: pidstat –d Intervall; pidstat kann auch zum Zählen von CPU-Nutzungsinformationen verwendet werden: pidstat –u Intervall, um Speicherinformationen zu zählen: Pidstat –r Intervall.


top

Der Zusammenfassungsbereich des Befehls top zeigt fünf Aspekte der Systemleistungsinformationen an:

1. Auslastung: Zeit, Anzahl der angemeldeten Benutzer, durchschnittliche Systemlast;

3.CPU: Benutzermodus, Kernmodus, NICE , Leerlauf, Warten auf E/A, Interrupts usw.;

4. Speicher, insgesamt, verwendet, frei (Systemperspektive), Puffer, Cache

Im Aufgabenbereich werden standardmäßig Folgendes angezeigt: Prozess-ID, effektiver Benutzer, Prozesspriorität, NICE-Wert, virtueller Speicher, physischer Speicher und gemeinsam genutzter Speicher, der vom Prozess verwendet wird, Prozessstatus, CPU-Auslastung, Speicherauslastung, kumulierte CPU-Zeit und Prozessbefehl Zeileninformationen.

htop


htop ist ein interaktiver Prozessbetrachter in Linux-Systemen, eine Textmodusanwendung (in der Konsole oder im X-Terminal), erfordert ncurses.

Htop ermöglicht Benutzern die interaktive Bedienung, unterstützt Farbthemen, kann horizontal oder vertikal durch die Prozessliste scrollen und unterstützt Mausoperationen.

Im Vergleich zu top bietet htop folgende Vorteile:

▪ Sie können horizontal oder vertikal durch die Prozessliste scrollen, um alle Prozesse und die vollständige Befehlszeile anzuzeigen.

▪ Schneller als Top beim Start.

▪ Beim Beenden eines Prozesses muss die Prozess-ID nicht eingegeben werden.

▪ htop unterstützt Mausoperationen.


▲mpstat
mpstat ist die Abkürzung für Multiprocessor Statistics und ist ein Echtzeit-Systemüberwachungstool. Es meldet einige statistische Informationen über die CPU, die in der Datei /proc/stat gespeichert sind. In einem System mit mehreren CPUs können nicht nur die durchschnittlichen Statusinformationen aller CPUs, sondern auch die Informationen einer bestimmten CPU angezeigt werden. Allgemeine Verwendung: mpstat –P ALLE Intervallzeiten.


netstat

Netstat wird zum Anzeigen statistischer Daten im Zusammenhang mit IP-, TCP-, UDP- und ICMP-Protokollen verwendet und wird im Allgemeinen zum Überprüfen der Netzwerkverbindung jedes Ports der Maschine verwendet .

▲Allgemeine Verwendung:

netstat –npl kann prüfen, ob der Port, den Sie öffnen möchten, bereits geöffnet ist.

netstat –rn Routing-Tabelleninformationen drucken.

netstat –in Stellt Schnittstelleninformationen zum System bereit, druckt die MTU jeder Schnittstelle, die Anzahl der Eingabepakete, Eingabefehler, die Anzahl der Ausgabepakete, Ausgabefehler, Konflikte und die aktuelle Länge der Ausgabewarteschlange.


ps – Zeigt den Status des aktuellen Prozesses an

ps hat zu viele Parameter, siehe man ps. Häufig verwendete Methoden: ps aux #hsserver; ps – ef |grep #hundsun

▪ Methode zum Beenden eines bestimmten Programms: ps aux | der Zombie-Prozess: ps –eal |. awk '{if ($2 == "Z"){print $4}}' |

Verfolgen Sie Systemaufrufe und Signale, die während der Programmausführung empfangen werden, um bei der Analyse abnormaler Situationen zu helfen, die während der Programm- oder Befehlsausführung auftreten.

Beispiel: Um zu überprüfen, welche Konfigurationsdatei mysqld unter Linux lädt, können Sie den folgenden Befehl ausführen: strace –e stat64 mysqld –print –defaults > /dev/null


uptime

kann ausdrucken, wie lange das System insgesamt läuft und wie hoch die durchschnittliche Auslastung des Systems ist. Die letzten drei vom Befehl uptime ausgegebenen Zahlen bedeuten die durchschnittliche Auslastung des Systems in 1 Minute, 5 Minuten und 15 Minuten jeweils.


lsof

lsof (offene Dateien auflisten) ist ein Tool, das offene Dateien im aktuellen System auflistet. Sie können das lsof-Tool verwenden, um diese Liste zur Systemerkennung und Fehlerbehebung anzuzeigen:

Dateisystem-Blockierung lsof /boot anzeigen

Überprüfen Sie, welcher Prozess die Portnummer belegt lsof -i: 3306

Sehen Sie sich an, welche Dateien vom Benutzer lsof –u Benutzername geöffnet werden.

Sehen Sie an, welche Dateien vom Prozess lsof –p 4838 geöffnet werden.

Sehen Sie sich die entfernten offenen Netzwerklinks an


perfperf ist das Systemleistungsoptimierungstool, das mit dem Linux-Kernel geliefert wird. Der Vorteil liegt in der engen Integration mit dem Linux-Kernel. Es kann als erstes auf neue, dem Kernel hinzugefügte Funktionen angewendet werden, mit denen sich Hot-Funktionen und Cashe-Miss-Verhältnisse anzeigen lassen, wodurch Entwickler die Programmleistung optimieren können.


Das Grundprinzip von Leistungsoptimierungstools wie Perf, Oprofile usw. besteht darin, das überwachte Objekt abzutasten. Der einfachste Fall ist die Abtastung basierend auf dem Tick-Interrupt, dh der Abtastpunkt wird darin ausgelöst Der Tick-Interrupt Klicken Sie hier, um den aktuellen Kontext des Programms zu ermitteln. Wenn ein Programm 90 % seiner Zeit in der Funktion foo() verbringt, sollten 90 % der Abtastpunkte in den Kontext der Funktion foo() fallen. Das Glück ist schwer zu fassen, aber ich denke, solange die Abtastfrequenz hoch genug und die Abtastzeit lang genug ist, wird die obige Schlussfolgerung zuverlässiger sein. Daher können wir durch Auslösen der Stichprobe durch Tick verstehen, welche Teile des Programms die meiste Zeit in Anspruch nehmen und uns auf die Analyse konzentrieren.


Wenn Sie mehr über dieses Tool erfahren möchten, können Sie sich an folgende Adresse wenden:

http://blog.csdn.net/trochiluses/article/details/10261339


Zusammenfassung: Durch die Kombination der oben genannten häufig verwendeten Leistungstestbefehle und den Blick auf das Diagramm der Leistungsanalysetools am Anfang des Artikels können Sie zunächst verstehen, welcher Leistungsaspekt welches Tool (Befehl) während des Leistungsanalyseprozesses verwendet.


【Häufig verwendete Leistungstest-Tools】

Im zweiten Teil werden wir uns mit den Befehlstools zur Leistungsanalyse auskennen und mehrere Leistungstest-Tools vorstellen. Lassen Sie uns vor der Einführung kurz einige Leistungstest-Tools verstehen:


▪ perf_events: Ein Leistungsdiagnosetool, das mit dem Linux-Kernel-Code veröffentlicht und verwaltet wird und von der Kernel-Community verwaltet und entwickelt wird. Perf kann nicht nur für die statistische Leistungsanalyse von Anwendungen verwendet werden, sondern auch für Leistungsstatistiken und die Analyse von Kernel-Code.

Weitere Referenzen: http://blog.sina.com.cn/s/blog_98822316010122ex.html.


eBPF-Tools: Ein Leistungsverfolgungstool mit BCC, eBPF-Map, kann in großem Umfang bei der Kernel-Optimierung mit benutzerdefinierten eBPF-Programmen verwendet werden und kann auch asynchronen Code auf Benutzerebene lesen. Wichtig ist, dass diese externen Daten im Userspace verwaltet werden können. Dieser Kartendatenkörper im K-V-Format wird durch Aufrufen des BPF-Systemaufrufs im Benutzerbereich zum Erstellen, Hinzufügen, Löschen und für andere Vorgänge verwaltet. mehr: http://blog.csdn.net/ljy1988123/article/details/50444693.


perf-tools: Ein Linux-Leistungsanalyse- und Tuning-Toolset basierend auf perf_events (perf) und ftrace. Perf-Tools weist wenige Bibliotheksabhängigkeiten auf und ist einfach zu verwenden. Unterstützt Linux 3.2 und höhere Kernelversionen. mehr: https://github.com/brendangregg/perf-tools.


▪ bcc (BPF Compiler Collection): Ein Tool zur Leistungsanalyse mit eBPF. Ein Toolkit zum Erstellen effizienter Programme zur Kernel-Ablaufverfolgung und -Manipulation, einschließlich mehrerer nützlicher Tools und Beispiele. Profitieren Sie von Extended BPF (Berkeley Packet Filter), offiziell eBPF genannt, einer neuen Funktion, die erstmals zu Linux 3.15 hinzugefügt wurde. Für den Mehrzweckgebrauch ist Linux 4.1 oder höher BCC erforderlich.

Weitere Referenzen: https://github.com/iovisor/bcc#tools.


ktap: Eine neue Art von dynamischem Leistungsverfolgungstool für Linux-Skripte. Ermöglicht Benutzern, die Dynamik des Linux-Kernels zu verfolgen. ktap ist auf Interoperabilität ausgelegt und ermöglicht es Benutzern, betriebliche Erkenntnisse zu optimieren, Fehler zu beheben und Kernel und Anwendungen zu erweitern. Es ähnelt Linux und Solaris DTrace SystemTap. Weitere Referenz: https://github.com/ktap/ktap.


Flame Graphs: Es handelt sich um eine Grafiksoftware, die Perf, System Tap und Ktap-Visualisierung verwendet und es ermöglicht, die häufigsten Codepfade schnell und genau zu identifizieren. Sie können github.com/brendangregg/ verwenden. Flamegraph Prozedurale Generierung des Entwicklungsquellcodes.

Weitere Referenzen: http://www.brendangregg.com/flamegraphs.html.

1. Linux-Beobachtbarkeitstools |

超全整理 - Linux性能分析工具汇总合集

▪ Die grundlegenden Tools, die Sie zuerst erlernen müssen, sind wie folgt:
uptime, top(htop), mpstat, isstat, vmstat, free, ping, nicstat, dstat.


▪ Erweiterte Befehle lauten wie folgt:
sar, netstat, pidstat, strace, tcpdump, blktrace, iotop, slabtop, sysctl, /proc.

Weitere Referenz: http://www.open-open.com/lib/view/open1434589043973.html. Weitere Informationen zur Befehlsverwendung finden Sie unter man

2. Linux-Benchmarking-Tools |. Linux-Leistung Das Bewertungstool

超全整理 - Linux性能分析工具汇总合集

ist ein Leistungsbewertungstool. Wenn Sie mehr erfahren möchten, können Sie sich auf das unten angehängte Dokument beziehen.


3. Linux-Leistungsoptimierungstool

超全整理 - Linux性能分析工具汇总合集
ist ein Leistungsoptimierungstool, das hauptsächlich Optimierungen auf der Linux-Kernel-Quellcodeebene durchführt Sie können sich auf das beigefügte Dokument unten beziehen.


4. Linux Observability Sar | Viele Aspekte melden Systemaktivitäten, darunter: Lesen und Schreiben von Dateien, Systemaufrufnutzung, Festplatten-E/A, CPU-Effizienz, Speichernutzung, Prozessaktivitäten und IPC-bezogene Aktivitäten.

超全整理 - Linux性能分析工具汇总合集

sar wird häufig verwendet: sar [Optionen] [-A] [-o Datei] t [n]


wobei:

t das Abtastintervall und n die Anzahl der Abtastungen ist , Der Standardwert ist 1;
-o Datei bedeutet, dass die Befehlsergebnisse im Binärformat in einer Datei gespeichert werden, wobei Datei der Dateiname ist.
Optionen sind Befehlszeilenoptionen

以上是超全整理 - Linux性能分析工具汇总合集的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:Linux中文社区
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!