質問: ウレアダヘッドは起動時にシステムをブロックするようです 私はbootchartsを見て、何かがおかしいようです。 ureadaheadプロセスは、本来行うべきことを行います(ほとんどの場合、ディスク使用率は100%です)が、他のアクションもブロックします。遅いラップトップのハードドライブを持っているので、ureadahead自体はブート時間の約50秒かかります。それから、目に見えるブートシーケンスの残りは、多くのcpuを使用して完了するまでにさらに100秒かかりますが、最大化せず、多くのio(ほぼ常に100%)です。これは私には奇妙に思えます。 ureadaheadの設定が間違っていますか?多くのcpuを使用しているように見えるネットワークを立ち上げるようなタスクをブロックするのはなぜですか?一般に、ブートチャート時間の約50%が必要ですか?編集:ここにブートチャートの例があります: http://img191.imageshack.us/img191/1049/localhostkarmic20100815.png (または直接の場合はこれ動作しませんでした: http://yfrog.com/f/5blocalhostkarmic20100815p/ )
回答: ブートのブロックは仕様です。ウレアダヘッドのポイントは、ブートに必要なすべてのデータを事前にプリロードすることです。これを行う理由は、ディスクが遅くなる主な理由はシーク時間です-低速のハードドライブでも50 mb /秒以上の読み取りをプッシュアウトできるはずですが、シークする必要がある場合は数十 ミリ秒 シークあたり-劇的に減少します。ウレアダヘッドは、事前に実行することで、シークを最小限に抑えることができるため、ブートに必要なすべてのデータの読み取りに必要な時間を最小限に抑えることができます。だから、 理想的 bootchartは、i/o使用率が100%であるureadaheadのように見え、その後、他のすべてが起動して(ディスク)i/oを使用しません。このブートは実際には達成できません。特に、私たちが開始しているサービスの多くがディスクに書き込むためです。しかし、それはアイデアです。ブートチャートを見ると、ureaheadが実際にディスクからデータを引き出すのに苦労しているようです-非常に低いスループットである多くの時間があります。それでも、その仕事の一部を行っているように見えます-ウレアダヘッドが起動した後、ブートはほとんどi/oバウンドではなくcpuバウンドであり、i/oバウンドブートの大きなパッチがpreload起動します。preloadを削除するか、ブートを再プロファイリングする1、またはファイルの一部が非常に断片化されている、またはureaheadのバグである可能性があります。1:/ var/lib/ureadaheadからpackファイルを削除すると、次回ブート時にureaheadが再プロファイリングされます。