Linuxのプロセス状態についてもっと知るために、私はいくつかの実験を行っていました。
したがって、10億を超えるファイルを含むディレクトリ(big_dirという名前)があり(ディレクトリには再帰的に多くのサブディレクトリがあります)、tar -cv big_dir | ssh anotherServer "tar -xv -C big_dir"
実行するtop
と、tar
プロセスはDステータスのままであることがわかりました。その間、tarコマンドはファイルのパスを出力し続けます。
ディスクI/Oを実行していたため、プロセスがDステータスであったことは知っていますが、なぜそのステータスがDとRの間で切り替わり続けなかったのでしょうか。ディレクトリの下にファイル名を印刷するには、CPUの計算が必要でしたね。それ以外の場合、findコマンドは、何かを出力する必要があることをどのように知ることができますか?
を実行するdd if=/dev/zero of=/dev/null
と、dd
プロセスステータスは出力からRステータスに保たれtop
ます。しかし、なぜそれはDステータスではなかったのですか?いつもI/Oをしていませんでしたか?