- 次回このファイルの更新された内容を取得するためにファイルを再度開くのではなく、ファイルを使用
lseek(fd,0)
してから使用するのは安全ですか?read(fd,buf)
/proc/stat
- そして、
mmap()
このファイルを開いた後の呼び出しは実際に何をしますか(以下を参照)?
私が直面している問題は、トップレポートのCPU使用率が低すぎることです(ソフトウェア割り込みの場合は10%対100%)。straceは、topがこのファイルを再度開かず、代わりに最初に探してもう一度読み取ることを示します。そして、どういうわけか、次回このファイルから読み取られる内容は、catforfileだけを実行したときに得られる内容と一致しません/proc/stat
。
また、topとcat/proc/stat
を同時にループで実行すると、topは正しいCPU使用率を報告し始めます。
私が見つけたもう1つの違いは、topはファイルmmap()
を開いた直後にcallを使用しますが、それを行わないことです。これも私の問題に関連している可能性があるかどうかはわかりません(ここにあるため):/proc/stat
cat
filesdes=-1
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7b37649000
2.6.32-27サーバーイメージでUbuntu10.04.1デスクトップエディションを使用しています。CPUはIntelQ6600です。