問題タブ [iowait]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android で iowait が高い ANR
YouTube アプリケーションを実行していますが、ANR が発生し、デバイスの応答が遅くなります。
そして、私は iowait 64% を取得しています
では、iowait の原因となっているアプリケーションを特定する方法や、カーネル側で IO スケジューリングによって処理する方法について説明します。
android - iowait は Android のパフォーマンスを低下させます
これは Android の場合です。大きなファイルを作成しようとすると、アプリケーションの UI 操作が遅くなり、SD カードが遅くなり、大きなファイルをiowait
作成するときに高負荷が発生し、CPU がアイドル状態になっていることがわかります。アプリケーションの動作が遅く、UI インタラクションが応答しません。SD カードが遅いため、これは正常に見えますが、これは high で予想されることですiowait
。
非同期IOを使用している限りiowait
、アプリケーションのパフォーマンスに影響を与えないことをどこかで読みましたが、よくわからないことの1つは、バックグラウンドスレッドで大きなファイルを作成していることです。 UIスレッドと私はUIスレッドをブロックすべきではないと思います。はい、私は Java 非ブロッキング IO API を使用していませんが、バックグラウンド スレッドを使用して非同期にするだけで十分ではないでしょうか?
PS私は、指定された位置にRandomAccessFile
開いて大きなファイルを作成しています。seek
regex - top と awk で iowait を取得する
ベンチマーク スクリプトの場合、ちょっとした操作の直後に iowait % を抽出する必要があります。
今のところ、私が見つけた最良の方法はこれでした: IOWAIT=top -bn2 | awk '$1~/Cpu/ {print $6}' | sed -n '2p' | tr -d '%wa,'
正しい出力は 2.1 のようなものです:
まず、「-bn2」を正確に指定しなかった場合、理由はわかりませんが、キャプチャを 1 回だけ実行すると、常に 0.1% になります。そのため、キャプチャを 2 回行い、awk して iowait フィールドを取得し、2 行目を sed してから「%wa」を削除します。
参考までに、ここに出力がありますtop -bn2 | grep Cpu
私の問題は次のとおりです。100.0% (たとえばアイドル状態) で 1 つの列を取得すると、列番号がシフトされるため、awk が機能しなくなり、「0.0%hi」フィールドが取得されます。
私の質問は次のとおりです。
- awk に "%wa" を使用して列に移動するように指示する方法は?
誰かが私がやろうとしていることへの最善のアプローチを持っているなら、もちろん私は提案に非常にオープンです!
ありがとう
performance - 高負荷 低 CPU 低 iowait の理由は?
最初のグラフのこれらのピークを見てください。これを引き起こす要因は何ですか?
CPU 24X6
python - PythonでIO待機時間を%として取得
基本的なシステム統計を取得するための Python スクリプトを作成しています。私はそのほとんどに psutil を使用していますが、必要なものを除いて正常に動作しています。
現時点での平均 CPU 待機時間を記録したいと思います。上部の出力から、%wa の下の CPU セクションになります。
psutil でそれを取得する方法が見つからないようです。取得方法を知っている人はいますか? 本当は行きたくない道を歩もうとしている……。
この CPU 行全体は、合計が 100 になり、ログとプロットが簡単になるため、かなり優れています。
前もって感謝します。
linux - iowait が現在 99% の場合、CPU は他のプロセスを実行できますか
CPU が 1 つしかなく、IOwait が 99% の場合、その CPU はまだ他のプロセスを実行できますか? その場合、1% の CPU リソースしか使用できませんか? または、他のプロセスも 100% の CPU リソースを使用する可能性がありますが、99% の Iowait が使用されています。
私は一冊の本で次の行を読みました」
その場合、99% の iowait は、CPU がアイドル状態または待機中であることを意味しません。実際には、割り込みを受信して処理するために非常にビジーです。これが本当なら、他のプロセスは 1% の CPU リソースしか使用できないと思います。