Linuxパフォーマンス分析ツールの概要

WBOY
リリース: 2024-02-15 15:57:03
転載
1093 人が閲覧しました

Linux オペレーティング システムに興味があり、基礎的な知識が欲しいという思いから、この記事をまとめました。基本的な知識のチェックとして機能し、システムのあらゆる側面をカバーします。コンピュータ システム、ネットワーク、オペレーティング システムに関する完全な知識がなければ、ドキュメントに記載されているツールを完全に使いこなすことはできません。さらに、システム パフォーマンスの分析と最適化は長期にわたるシリーズです。

このドキュメントは主に、Linux の第一人者であり Netflix のシニア パフォーマンス アーキテクトである Brendan Gregg による更新された Linux パフォーマンス チューニング ツールのブログ投稿から編集された包括的な記事であり、Linux システム パフォーマンスの最適化に関連する記事を集めたものです。主に、ブログ投稿に関連する原理とパフォーマンス テスト ツールについて説明します。

背景知識: パフォーマンスの問題を分析するときは、背景知識を理解する必要があります。たとえば、ハードウェア キャッシュ、別の例としてはオペレーティング システムのカーネルがあります。アプリケーションの動作の詳細はこれらの事柄と絡み合っていることが多く、これらの低レベルの事柄が予期せぬ形でアプリケーションのパフォーマンスに影響を与える可能性があります。たとえば、一部のプログラムはキャッシュを完全に利用できず、パフォーマンスが低下します。たとえば、不必要に呼び出されるシステムコールが多すぎて、カーネル/ユーザーの切り替えが頻繁に発生するなどです。

パフォーマンス分析ツール

まず写真をご覧ください:

Linux 性能分析工具汇总

上の図は、Brendan Gregg が共有したパフォーマンス分析です。ここにあるすべてのツールは、man を通じてヘルプ ドキュメントを入手できます。一般的な使用法を簡単に紹介します:

vmstat – 仮想メモリ統計

vmstat (VirtualMeomoryStatistics、仮想メモリ統計) は、Linux でメモリを監視するための一般的なツールで、オペレーティング システムの仮想メモリ、プロセス、CPU などの全体的な状況を監視できます。 vmstat の一般的な使用法: vmstat 間隔回数 は、interval 秒ごとに 1 回、合計で times 回サンプリングすることを意味します。 、その後、ユーザーが手動で停止するまでデータが収集されます。簡単な例を挙げてみましょう:

ctrl cLinux 性能分析工具汇总 を使用すると、

vmstat によるデータ収集を停止できます。 最初の行は、システムが開始されてからの平均値を示します。2 番目の行は、現在何が起こっているかを示し始めます。次の行は、5 秒ごとに何が起こっているかを示します。各列の意味はヘッダーにあります。 、次のように表示:

  • procs: r この列は CPU を待機しているプロセスの数を示し、列 b は中断せずにスリープしている (IO を待機している) プロセスの数を示します。
  • [memory:swapd] 列は、ディスクからスワップアウトされたブロック (ページ スワッピング) の数を示し、残りの列は、空いている (未使用) ブロックの数、バッファーとして使用されているブロックの数、およびバッファーとして使用されているブロックの数を示します。オペレーティング システムのキャッシュ。
  • swap: スワップ アクティビティを表示します。1 秒あたりに (ディスクから) スワップインおよび (ディスクに) スワップアウトされているブロック数を示します。
  • io: ブロック デバイスから読み取られた (bi) および書き込まれた (bo) ブロックの数を示します。これは通常、ハードディスク I/O を反映します。
  • system: 1 秒あたりの割り込み (in) とコンテキスト スイッチ (cs) の数を表示します。
  • cpu: ユーザー コードの実行 (カーネル以外)、システム コードの実行 (カーネル)、アイドル、IO の待機など、さまざまな操作に費やされたすべての CPU 時間の割合を表示します。

メモリ不足の症状: 空きメモリが急激に減少、バッファとキャッシュをリサイクルしても役に立たない、スワップ パーティションの広範な使用 (swpd)、頻繁なページ交換 (スワップ)、読み取りおよび書き込みディスク (io) の数の増加、ページ フォールト割り込み (in) が増加し、コンテキスト スイッチの数 (cs) が増加し、IO を待機しているプロセスの数 (b) が増加し、IO の待機に大量の CPU 時間が使用されます (wa)

iostat – CPU 統計のレポートに使用されます

iostat は、システム全体、アダプター、tty デバイス、ディスク、および CD-ROM の中央処理装置 (CPU) 統計と入出力統計をレポートするために使用されます。デフォルトでは、vmstat と同じ CPU 使用率情報が表示されます。次のコマンドを使用して、拡張デバイス統計を表示します:

Linux 性能分析工具汇总

最初の行はシステム起動以降の平均を示し、次に増分平均がデバイスごとに 1 行で表示されます。

一般的な Linux ディスク IO インジケーターの略語の習慣: rq はリクエスト、r は読み取り、w は書き込み、qu は​​キュー、sz はサイズ、a は平均、tm は時間、svc はサービスです。

  • rrqm/s および wrqm/s: 1 秒あたりの読み取りリクエストと書き込みリクエストの合計。「結合」とは、オペレーティング システムがキューから複数の論理リクエストを取得し、それらを実際のディスクへの 1 つのリクエストにマージすることを意味します。
  • r/s および w/s: 1 秒あたりにデバイスに送信された読み取りおよび書き込みリクエストの数。
  • rsec/s および wsec/s: 1 秒あたりの読み取りおよび書き込みセクター数。
  • avgrq –sz: 要求されたセクターの数。
  • avgqu –sz: デバイス キューで待機しているリクエストの数。
  • await: 各 IO リクエストに費やされた時間。
  • svctm: 実際のリクエスト (サービス) 時間。
  • %util: 少なくとも 1 つのアクティブなリクエストがあった時間の割合。

dstat – システム監視ツール

dstat は、CPU 使用率、ディスク IO ステータス、ネットワーク パケット送信ステータス、およびページング ステータスを表示します。出力はカラフルで非常に読みやすく、vmstat や iostat の入力と比較して、より詳細で直感的です。使用する際はコマンドを直接入力するだけで、もちろん特定のパラメータを使用することもできます。

は次のとおりです: dstat –cdlmnpsy

Linux 性能分析工具汇总

iotop-LINUX プロセス リアルタイム監視ツール

iotop コマンドは、ハードディスク IO を表示するために特別に設計されたコマンドです。インターフェイス スタイルは top コマンドに似ており、具体的にどのプロセスが IO 負荷を生成しているかを表示できます。これは、ディスク I/O 使用状況を監視するために使用されるトップ ツールで、PID、ユーザー、I/O、プロセス、その他の関連情報を含む、トップと同様の 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:lxlinux.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート