パフォーマンステストは|使い方IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

最近連続データストリームバッファシステム、おおよそ次のテストを達成するためのC言語コードを行って、それが機能的に問題はないはず。だから、パフォーマンスの点で次のテスト。topコマンドを入力し、あなたは確かに子供は注目する価値があるCPU使用率、一連のを見ることができるIO使用状況、下図のように:

用法IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

topコマンド

上記の画像の前にイオの数字はそれが何を意味するのでしょうか?それはまだIOに費やされた時間のCPUは63%を指し?マニュアルを表示し、IOを発見したのLinuxでmanコマンドを入力します(待つ)として解釈され、「I / O完了時間を待っています。」

用法IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

「I / O完了時間を待っています。」

あなたはiowaitのリテラルの解釈のマニュアルに従った場合、誤解に陥りやすいです。ので、一例では、で過ごしたCPU時間の63%と思われるのを待っている I / O操作はそんなに無駄にCPU性能が得られ、完了です。

まあ、正確に、Linuxは成熟したオペレーティングシステムである、それは時間のかかるI / O待ちに浪費、貴重なCPUのパフォーマンスをさせないだろうではない、実際には、現在のシステムならば、他のタスクがありますCPUを使用する必要があり、Linuxの意志I / Oタスクが一時的に一時的に必要なタスクにCPUを使用する権利を保留するために待っています。

だから、それは何を意味し、最後にIOWAIT?

一部の人々はiowaitのが唯一のCPUのサブセットは、iowaitのは実際にはアイドル状態に分類することができ、アイドル(アイドル)時であるエッセンスCPUがアイドル状態で表し、と思うが、iowaitのは、タスクが完了するために、I / O操作を待つ必要があることを示しています時間。

用法IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

それが何を意味するの終わりにIOWAIT?

iowaitの値は、CPU時間の単なる例示であり、100%は、全く一般的にのみ、現在のシステムで他のタスクにCPUを使用する必要はありませんこのような状況の「待機中」に費やされている場合でも、すべての後に、いくつかの真実があると思うだろうとき発生。一度他のタスクがCPUを使用する必要がありますので、Linuxカーネルは、もはやすべての「I / O待ち」されているCPUを使用して、タスク、CPU時間にすぐに利用できなくなります(もはや100%IO)を費やしていません。

不过读者应该明白的是,“idle”是 CPU 的状态,而 “iowait”则是任务的状态。对于单核 CPU 来说,同时只能有一个任务运行,上述说法可以认为是准确的。但是对于多核 CPU 来说,情况就有些不同了。

例如,某个系统拥有 4 个 CPU,有一个 I/O 超密集型任务正在运行,那么,iowait 会是 100% 呢,还是 25% 呢?换句话说,iowait 会是在其中一个 CPU 上 100%,其他CPU 上 0% 呢,还是会在 4 个 CPU 上平均 25 % 呢?

用法IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

简单做一个实验

简单做一个实验就可以了。我们使用 Linux 中的 dd 命令模拟高密集 I/O 任务,这一过程可以通过输入以下命令实现:

dd if=/dev/sda of=/dev/null bs=1MB
这条命令可能需要 root 权限,/dev/sda 是我的磁盘,读者可能需要换成自己的节点名。

此时,通过 top 命令可以查看到下面这样的结果:

用法IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

top 命令

图中的 “wa”表示 I/O 等待时间(它和 io、iowait 是一个意思,名字不同而已)。可见,Linux 此时采用单个 CPU 处理 I/O 任务。如果读者细心的话,应该能够发现,I/O 任务只是偶尔的切换到其他 CPU 上运行,这是为了保证 CPU 缓冲的命中率,Linux 内核尽量让任务在单个 CPU 中运行。

在其他一些系统中,I/O 任务可能会在各个CPU中频繁的切换,此时会产生下面这样的结果:

用法IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

I/O 任务可能会在各个CPU中频繁的切换

假设 dd 命令是系统中执行 I/O 的唯一任务,那么在同一时刻,最多只会有一个 CPU 处理 I/O 等待任务。因此,实际上 34.8+20.9+26.7+3.7=86.1,接近但低于100。

进一步实验

为了让实验更可重现,我们可以使用 taskset 命令为任务指定 CPU:

タスクセット1つのDD場合の=は/ dev / sdaに=を/ dev / null BS = 1メガバイト
タスクセット1 CPU、次の数は数が、マスクではないことに留意すべきです。

CPUの使用率ルックを表示するには、topコマンドによるこの時間は、私たちは、ほぼすべての時間を/ O操作が完了している私を待っている費やすことCPU0を示し、100に近いCPU0 WAのアイテムを見つけることができるはずです。まあ、彼らはそれの他のタスクに集中することができないこの時間CPUではないでしょうか?私たちは、次のコマンドを入力します。

タスクセット1つのsh -c「真ながら、真行う;済」

上記のコマンドは、無限ループに同じCPU上で実行計算集約的なタスクをシミュレートするために使用され、それを実行する機会はないですか?topコマンドを入力し、以下の結果を与えます:

用法IO Linuxシステムtopコマンドは、多くの人々は、その特定の意味を誤解しています

WAのCPU0は0に減少します

CPU0のWAは0に減少し、同時に、CPU時間、システムの状態、100%に近いのユーザ状態。これは、I / O待機時間だけ子供のアイドル時以降に、CPUの性質がアイドルで、期待され、Linuxカーネルは、考えられる2番目のタスクにCPUを使用することができます。もともとCPU時間のI / Oの完了を待って、今2番目のタスクを処理するために使用。この時点で、waは当然ゼロに近い結果を得る、topコマンドによって表示します。

概要

意味の今、基本的には明確なtopコマンドは%IO:指定されたCPUは、この時間内に表さIOWAITされるため、実際には、CPUがアイドル状態ですが、CPUは、厳密な意味での「自由」ではありません、結局のところ、それは待つ必要がありますI / O操作が完了しています。I / O動作要求を生成するためのスレッドは、I / O操作が完了するのを待っているブロックします。このことを理解し、我々は非常に有用であるI / O集中型の操作C言語プログラムのために開発しました。

おすすめ

転載: www.cnblogs.com/wyf0518/p/11325050.html