GNU/Linux >> Linux の 問題 >  >> Linux

オープンソースツールを使用してLinuxのパフォーマンスのボトルネックを特定する

コンピューターは、最も遅いハードウェアコンポーネントと同じ速度でしか動作しない統合システムです。 1つのコンポーネントの機能が他のコンポーネントよりも劣っている場合、つまり、コンポーネントが遅れて追いついていない場合は、システム全体が抑制される可能性があります。これがパフォーマンスのボトルネックです 。深刻なボトルネックを取り除くと、システムが飛ぶ可能性があります。

この記事では、Linuxシステムのハードウェアのボトルネックを特定する方法について説明します。この手法は、パーソナルコンピュータとサーバーの両方に適用されます。私はPCに重点を置いています。LAN管理やデータベースシステムなどの分野でのサーバー固有のボトルネックについては説明しません。多くの場合、それらには専用のツールが含まれます。

また、解決策についてはあまり話しません。これは、この記事には大きすぎるトピックです。代わりに、パフォーマンスを微調整したフォローアップ記事を作成します。

仕事を成し遂げるために、オープンソースのグラフィカルユーザーインターフェイス(GUI)ツールのみを使用します。 Linuxのボトルネックに関するほとんどの記事はかなり複雑です。彼らは特殊なコマンドを使用し、難解な詳細を深く掘り下げます。

オープンソースが提供するGUIツールを使用すると、多くのボトルネックを簡単に特定できます。私の目標は、どこでも使用できる迅速で簡単なアプローチを提供することです。

どこから始めるか

コンピューターは、6つの主要なハードウェアリソースで構成されています。

  • プロセッサー
  • メモリ
  • ストレージ
  • USBポート
  • インターネット接続
  • グラフィックプロセッサ

1つのリソースのパフォーマンスが低下すると、パフォーマンスのボトルネックが発生する可能性があります。ボトルネックを特定するには、これら6つのリソースを監視する必要があります。

オープンソースは、仕事をするためのツールをたくさん提供しています。 GNOMEシステムモニターを使用します。その出力は理解しやすく、ほとんどのリポジトリで見つけることができます。

起動して、リソースをクリックします タブ。多くのパフォーマンスの問題をすぐに特定できます。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

リソース パネルには3つのセクションが表示されます:CPU履歴メモリとスワップの履歴 、およびネットワーク履歴 。一目見ただけで、プロセッサがいっぱいになっているのか、コンピュータのメモリが不足しているのか、インターネットの帯域幅をすべて使い果たしているのかがすぐにわかります。

これらの問題については、以下で説明します。今のところ、コンピュータの速度が低下したときは、最初にシステムモニターを確認してください。最も一般的なパフォーマンスの問題を即座に把握できます。

それでは、特定の領域のボトルネックを特定する方法を見ていきましょう。

プロセッサのボトルネックを特定する方法

ボトルネックを見つけるには、まず、使用しているハードウェアを知る必要があります。オープンソースは、この目的のためにいくつかのツールを提供しています。画面が読みやすく、広く普及しているHardInfoが好きです。

HardInfoを起動します。そのコンピューター->まとめ パネルはCPUを識別し、そのコア、スレッド、および速度について説明します。また、マザーボードやその他のコンピュータコンポーネントも識別します。

HardInfoは、このコンピューターに1つの物理CPUチップがあることを明らかにしています。そのチップには、2つのプロセッサまたはコアが含まれています。各コアは、2つのスレッドまたは論理プロセッサをサポートします。これは合計4つの論理プロセッサです。これは、システムモニターのCPU履歴セクションが図1に示したものとまったく同じです。

プロセッサのボトルネック プロセッサがその時間の要求に応答できない場合に発生します。彼らはすでに忙しいです。

これは、システムモニターが論理プロセッサの使用率を80%または90%以上で持続的に示している場合に識別できます。これは、4つの論理プロセッサのうち3つが100%の使用率でいっぱいになっている例です。これは、他の作業に多くのCPUを残さないため、ボトルネックになります。

どのアプリが問題を引き起こしていますか?

どのプログラムがそのCPUをすべて消費しているかを調べる必要があります。システムモニターのプロセスをクリックします タブ。次に、%CPUをクリックします 消費しているCPUの量でプロセスを並べ替えるためのヘッダー。システムを抑制しているアプリが表示されます。

上位3つのプロセスはそれぞれ合計の24%を消費します CPUリソース。 4つの論理プロセッサがあるため、これはそれぞれがプロセッサ全体を消費することを意味します。これは図3に示すとおりです。

プロセス パネルはanalytical_AIという名前のプログラムを識別します 犯人として。パネルで右クリックすると、メモリ使用量、開いているファイル、入力/出力の詳細など、リソース消費の詳細が表示されます。

ログインに管理者権限がある場合は、プロセスを管理できます。優先度を変更して、停止、続行、終了、または強制終了できます。したがって、ここでボトルネックをすぐに解決できます。

処理のボトルネックをどのように修正しますか?問題のあるプロセスをリアルタイムで管理するだけでなく、ボトルネックの発生を防ぐことができます。たとえば、違反者の代わりに別のアプリを使用したり、回避したり、そのアプリを使用するときの動作を変更したり、アプリを営業時間外にスケジュールしたり、根本的なメモリの問題に対処したり、アプリやシステムソフトウェアのパフォーマンスを微調整したり、アップグレードしたりできます。あなたのハードウェア。ここでは説明しきれないので、次の記事でこれらのオプションについて説明します。

一般的なプロセッサのボトルネック

システムモニターを使用してCPUを監視すると、いくつかの一般的なボトルネックが発生します。

1つの論理プロセッサがボトルネックになり、他のすべての論理プロセッサの使用率が低くなることがあります。これは、複数の論理プロセッサを利用するのに十分なほどスマートにコーディングされていないアプリがあり、使用しているものを最大限に活用していることを意味します。そのアプリは、より多くのプロセッサを使用した場合よりも終了に時間がかかります。一方、少なくとも、他のプロセッサを他の作業のために解放し、コンピュータを引き継ぐことはありません。

また、論理プロセッサが100%の使用率で永久にスタックしているのを目にするかもしれません。非常に忙しいか、プロセスがハングしています。ハングしているかどうかを確認する方法は、プロセスがディスクアクティビティをまったく実行しないかどうかです(システムモニターのプロセスとして) パネルが表示されます)。

最後に、すべてのプロセッサがボトルネックになると、メモリも完全に使用されていることに気付くかもしれません。メモリ不足の状態により、プロセッサのボトルネックが発生することがあります。この場合、症状のあるCPUの問題ではなく、根本的なメモリの問題を解決する必要があります。

メモリのボトルネックを特定する方法

最近のPCには大量のメモリがあるため、メモリのボトルネックは以前よりもはるかに少なくなっています。それでも、メモリを大量に消費するプログラムを実行している場合、特にランダムアクセスメモリ(RAM)をあまり含まないコンピュータを使用している場合は、それらに遭遇する可能性があります。

Linuxは、プログラムとディスクデータのキャッシュの両方にメモリを使用します。後者はディスクデータアクセスを高速化します。 Linuxは、プログラムで使用するために必要なときにいつでもそのメモリを再利用できます。

システムモニターのリソース パネルには、合計メモリとその使用量が表示されます。 プロセス パネルでは、個々のプロセスのメモリ使用量を確認できます。

これがシステムモニターのリソースの一部です 集約メモリ使用量を追跡するパネル:

メモリの右側に、スワップがあります。これは、Linuxがメモリ不足のときに使用するディスク容量です。メモリーをディスクに書き込んで操作を続行し、RAMの低速拡張としてスワップを効果的に使用します。

注意が必要な2つのメモリパフォーマンスの問題は次のとおりです。

  1. メモリは主に使用されているように見え、スワップスペースで頻繁にまたは増加するアクティビティが見られます。
  2. メモリとスワップの両方が主に使い果たされています。

状況1は、スワップが常にメモリよりも遅いため、パフォーマンスが低下することを意味します。パフォーマンスの問題と見なすかどうかは、多くの要因(たとえば、スワップスペースのアクティブ度、速度、期待値など)によって異なります。私の意見では、トークンスワップの使用以上のものは、現代のパーソナルコンピュータでは受け入れられません。

状況2は、メモリとスワップの両方が主に使用されている場所です。これはメモリのボトルネックです。 コンピューターが応答しなくなります。 スラッシングの状態に陥る可能性もあります 、メモリ管理以上のことはできません。

上の図6は、RAMが2GBしかない古いコンピューターを示しています。メモリ使用量が80%を超えると、システムはスワップへの書き込みを開始しました。応答性が低下しました。このスクリーンショットは、90%以上のメモリ使用量を示しており、コンピュータは使用できません。

メモリの問題に対する最終的な答えは、メモリの使用量を減らすか、購入量を増やすことです。フォローアップ記事で解決策について説明します。

ストレージのボトルネックを特定する方法

今日のストレージには、いくつかの種類のソリッドステートおよびメカニカルハードディスクがあります。デバイスインターフェイスには、PCIe、SATA、Thunderbolt、およびUSBが含まれます。使用しているストレージの種類に関係なく、同じ手順を使用してディスクのボトルネックを特定します。

システムモニターから始めます。そのプロセス パネルには、個々のプロセスの入出力レートが表示されます。そのため、どのプロセスが最も多くのディスクI/Oを実行しているかをすばやく特定できます。

ただし、ツールにはディスクあたりの総データ転送速度は表示されません。 特定のディスクの総負荷を確認して、そのディスクがストレージのボトルネックであるかどうかを判断する必要があります。

これを行うには、atopコマンドを使用します。ほとんどのLinuxリポジトリで利用できます。

atopと入力するだけです コマンドラインプロンプトで。以下の出力は、デバイスsdbを示しています busy 101% 。明らかに、パフォーマンスの限界に達しており、システムが作業を実行できる速度を制限しています。

CPUの1つがディスクで85%の時間(cpu001 w 85%)そのジョブを実行するのを待機していることに注意してください。 )。これは、ストレージデバイスがボトルネックになる場合によく見られます。実際、多くの人が最初にCPU I / Oを見て、ストレージのボトルネックを見つけるのを待っています。

したがって、ストレージのボトルネックを簡単に特定するには、atopを使用します 指図。次に、プロセスを使用します ボトルネックの原因となっている個々のプロセスを特定するためのシステムモニターのパネル。

USBポートのボトルネックを特定する方法

USBポートを一日中使う人もいます。ただし、これらのポートが最適に使用されているかどうかは確認されません。外付けディスクやメモリースティックなどを接続する場合でも、USB接続デバイスから最大のパフォーマンスが得られることを確認する必要があります。

このチャートはその理由を示しています。潜在的なUSBデータ転送速度は大幅に異なります 。

HardInfoのUSBデバイス タブには、コンピュータがサポートするUSB​​規格が表示されます。ほとんどのコンピューターは複数の速度を提供します。特定のポートの速度をどのように知ることができますか?ベンダーは、チャートに示されているように、それらを色分けします。または、コンピュータのドキュメントを確認することもできます。

取得している実際の速度を確認するには、オープンソースのGNOMEDisksプログラムを使用してテストします。 GNOME Disksを起動し、そのベンチマークディスクを選択するだけです。 機能を実行し、ベンチマークを実行します。これにより、特定のデバイスが接続されたポートで得られる実際の最大速度がわかります。

接続するデバイスに応じて、ポートの転送速度が異なる場合があります。データレートは、ポートとデバイスの特定の組み合わせによって異なります。

たとえば、3.1の速度で飛行できるデバイスは、プラグインする場合、2.0のポート(2.0の速度)を使用します。 (そして、それがより遅い速度で動作していることを教えてくれません!)逆に、USB 2.0デバイスを3.1ポートに接続すると、動作しますが、2.0の速度で動作します。したがって、高速USBを入手するには、ポートとデバイスの両方がUSBをサポートしていることを確認する必要があります。 GNOME Disksは、これを検証する手段を提供します。

USB処理のボトルネックを特定するには、ソリッドステートディスクとハードディスクの場合と同じ手順を使用します。 atopを実行します USBストレージのボトルネックを見つけるコマンド。次に、システムモニターを使用して、問題のあるプロセスの詳細を取得します。

インターネット帯域幅のボトルネックを特定する方法

システムモニターのリソース パネルには、現在発生しているインターネット接続速度がリアルタイムで表示されます(図1を参照)。

インターネットの最大速度をテストするための優れたPythonツールがありますが、Speedtest、Fast.com、SpeakeasyなどのWebサイトでもテストできます。最良の結果を得るには、すべてを閉じてのみを実行します 速度テスト。 VPNをオフにします。 1日のさまざまな時間にテストを実行します。いくつかのテストサイトの結果を比較します。

次に、結果を、ベンダーが取得していると主張しているダウンロードおよびアップロードの速度と比較します。そうすれば、あなたはあなたが支払っている速度を得ていることを確認することができます。

別のルーターがある場合は、ルーターがある場合とない場合でテストします。これにより、ルーターがボトルネックになっているかどうかがわかります。 WiFiを使用する場合は、WiFiを使用する場合と使用しない場合でテストします(ラップトップをモデムに直接ケーブル接続します)。自分で修正できるWiFiのボトルネックが実際にあるのに、インターネットベンダーについて不満を言う人をよく見かけます。

一部のプログラムがインターネット接続全体を消費している場合は、どれを使用するかを知りたいと思います。 nethogsを使用して見つけてください 指図。ほとんどのリポジトリで利用できます。

先日、私のシステムモニターが突然インターネットアクセスの急上昇を示しました。 nethogsと入力しました コマンドラインで、帯域幅の消費者をClamavアンチウイルスアップデートとして即座に識別しました。

グラフィック処理のボトルネックを特定する方法

デスクトップコンピュータの背面にあるマザーボードにモニターを接続する場合は、オンボードグラフィックスを使用しています。 。背面のカードに接続すると、専用のグラフィックサブシステムができます。ほとんどの人がそれをビデオカードと呼んでいます またはグラフィックカード。 デスクトップコンピュータの場合、アドインカードは通常、マザーボードのグラフィックスよりも強力で高価です。ノートパソコンは常にオンボードグラフィックスを使用します。

HardInfoのPCIデバイス パネルには、グラフィックスプロセッシングユニット(GPU)が表示されます。また、使用している専用ビデオメモリの量も表示されます(「プリフェッチ可能」とマークされたメモリを探してください)。

CPUとGPUは非常に緊密に連携しています。簡単にするために、CPUはGPUがレンダリングするフレームを準備してから、GPUがフレームをレンダリングします。

GPUのボトルネック CPUが100%ビジーなGPUで待機しているときに発生します。

これを特定するには、CPUとGPUの使用率を監視する必要があります。 ConkyやGlanceなどのオープンソースモニターは、拡張機能がグラフィックチップセットで機能する場合にこれを行います。

Conkyのこの例を見てください。このシステムには多くの使用可能なCPUがあることがわかります。 GPUは25%しかビジーではありません。そのGPU数が代わりに100%に近いと想像してみてください。そうすれば、CPUがGPUを待機していることがわかり、GPUのボトルネックが発生します。

一部のシステムでは、GPUを監視するためにベンダー固有のツールが必要になります。これらはすべてGitHubからダウンロード可能であり、GPUモニタリングおよび診断コマンドラインツールに関するこの記事で説明されています。

概要

コンピューターは、統合されたハードウェアリソースのコレクションで構成されています。それらのいずれかがワークロードで他のものよりもはるかに遅れている場合、パフォーマンスのボトルネックが発生します。それはあなたのシステム全体を妨げる可能性があります。最適なパフォーマンスを実現するには、ボトルネックを特定して修正できる必要があります。

少し前までは、ボトルネックを特定するには深い専門知識が必要でした。今日のオープンソースGUIパフォーマンスモニターはそれを非常にシンプルにします。

次の記事では、LinuxPCのパフォーマンスを向上させる具体的な方法について説明します。その間、コメントであなた自身の経験を共有してください。


Linux
  1. LinuxPCのパフォーマンスを向上させるためのオープンソースツールとヒント

  2. Linuxを理想的なワークステーションにする3つのオープンソースツール

  3. Linux 待ち行列システム

  1. 初心者のためのLinuxサーバーを保護するための6つのオープンソースツールとヒント

  2. 私のLinuxの話:スペイン語でオープンソースをカバーする

  3. オタクが推奨するトップ5のオープンソースLinuxキャッシングツール

  1. checksecを使用してLinuxのセキュリティプロパティを特定する

  2. iostat を使用して Linux でシステム パフォーマンスを監視する (例を含む)

  3. Linux のオーバークロック ツール