問題タブ [fsync]
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.
sync - boost::filesystem::create_directories() によって作成されたディレクトリにすぐにアクセスできませんか?
boost::filesystem::create_directories()
新しいディレクトリを作成するために使用しています。作成直後にこれらのディレクトリにアクセスしようとすると、「そのようなディレクトリはありません」というエラーが表示されます。しかし、ディレクトリを作成した後にしばらくスリープすると、すべて問題ありません (エラーは発生しません)。また、ディレクトリを作成した後にfsync()
andを使用してみましたが、違いはありませんでした。sync()
ext4 および xfs ファイル システムでテストしており、ブースト バージョンはブースト 1.44 です。
私の質問は
boost::create_directories()
ディレクトリを即座に作成しますか? それとも何かが間違っている可能性はありますか?- また、ext4/xfs ですべてをディスクにフラッシュすることが
sync()
保証fsync()
されていますか?
python - file.flush() は正確に何をしていますか?
File Objectsの Pythonドキュメントでこれを見つけました。
flush()
必ずしもファイルのデータをディスクに書き込むわけではありません。この動作を保証するにflush()
は、後に続くを使用します。os.fsync()
私の質問は、Python は正確に何をしているのflush
かということです。ディスクにデータを強制的に書き込むと思っていましたが、そうではないことがわかりました。なんで?
linux - fsync() なしの rename() は安全ですか?
rename(tmppath, path)
最初に電話せずに電話しても安全fsync(tmppath_fd)
ですか?
パスが常に完全なファイルを指すようにします。私は主にExt4を気にしています。rename() は、将来のすべての Linux カーネル バージョンで安全であると約束されていますか?
Python での使用例:
linux - msync は、ext3 の fsync のように、ファイルシステム上のすべてのファイルをディスクに同期しますか?
私の知る限り、ログモードが「data=ordered」のほとんどの ext3 システムでは、fsync は fd で指定されたファイルを同期するだけでなく、ファイルシステム上のすべてのファイルを同期します。この問題は、カーネル 2.6 以前では修正されていません。 .30
msync は fsync と同じことをするのですか?
ありがとう。
c++ - fsyncの順序/方向は重要ですか?
いくつかのファイルとディレクトリをUSBサムドライブに書き出すとしましょう。
フォルダnewFolder1
と2つのファイルnewfile1
とを作成しましたnewfile2
。
同期は自動的には行われないのでfsync
、変更する必要があります。
だから私は、、を呼び出す必要がfsync
あります。newFolder1
newfile1
newfile2
質問は、私がこれを行う順序は重要ですか?
linux-kernel - fsync() が Linux カーネル 3.1.* でカーネル 3.0 よりもはるかに時間がかかる理由
テストプログラムがあります。Linux カーネル 3.1.* では約 37 秒かかりますが、カーネル 3.0.18 では約 1 秒しかかかりません (以前と同じマシンでカーネルを置き換えるだけです)。カーネル 3.1 で改善する方法を教えてください。ありがとう!
linux-kernel - fsync を使用してディスク アクセスを最小限に抑えるには
書き込みが発生するたびに、その書き込みで fsync が使用される状況があります。では、ディスク アクセスを最小限に抑えるにはどうすればよいでしょうか。カーネルはどのようにこれを行いますか?
fsync() は、ファイル記述子 fd によって参照されるファイルのすべての変更されたコア内データ (つまり、変更されたバッファ キャッシュ ページ) をディスク デバイス (または他の永続的なストレージ デバイス) に転送 (「フラッシュ」) します。
カーネルは、変更されたすべてのバッファのデータを、しばらくすると定期的にハードディスクに転送できると思います。これにより、ディスク アクセスを最小限に抑えることができます。
いくつかの提案/ヒントを教えてください。
linux - Linux: スマートな fsync()?
オーディオを録音して SD カードに書き込んでいます。データ レートは約 1.5 MB/s です。ext4 ファイル システムのクラス 4 SD カードを使用しています。
一定の間隔の後、カーネルはファイルを自動同期します。これの欠点は、アプリケーションのバッファがディスクに書き込まれるのを待って山積みになることです。
カーネルが現在行っていることを頻繁に同期すると、問題が解決する可能性があると思います。
fsync()
特定の間隔で同期するためにアプリケーションで使用しました。しかし、これでは問題は解決しません。アプリケーションが を呼び出す直前にカーネルが同期している場合があるfsync()
ため、アプリケーションから fsync() を呼び出すのは時間の無駄でした。
smart_fsync()
アプリケーションが smart_fsync() を呼び出すと、しばらく同期していない場合にのみカーネルが同期し、それ以外の場合は単に戻るように、同期メカニズム (たとえば、) が必要です。
としての機能はありませんのでsmart_fsync()
。可能な回避策は何ですか?
python - サブプロセスの開いているファイルを取得するにはどうすればよいですか?
サブプロセスの開いているファイルを取得するにはどうすればよいですか?
ファイルを生成するサブプロセスを開きました。これらのファイルのファイル記述子にfsyncを実行させたいです。
だから私がこのようなコードを持っているなら:
プロセスpは、以下を使用してサブプロセスのプロセスIDを取得できるいくつかのファイルを生成します。
しかし、どうすればこれらのファイルのfdを取得してflushとfsync()を呼び出すことができますか?
実際、「lsof」(開いているファイルの一覧表示)というユーティリティを見つけましたが、システムにインストールまたはサポートされていないため、標準的な方法が本当に必要なため、これ以上の調査は行いませんでした。
ありがとう