web-dev-qa-db-ja.com

より良いファイルシステムを備えたウィンドウ

Windowsワークステーションで作業しているJava開発者としての私の観察から、NTFSはLinuxファイルシステムと比較して遅いです。質問は、手動で調整できるものがNTFSドライバーにあるかどうかです。キャッシュ用のメモリ?いくつかの実験的なアルゴリズムを有効にしますか?それが利用できない場合、Windowsで使用できる別のファイルシステムがありますか?おそらく商用でさえ、NTFSよりも高速ですか?

明確にするために、私はMavenプロジェクトのコンパイル速度を改善するつもりはありません。OSの全体的な改善を取得したいと思います。 NTFSは、Linuxファイルシステムに比べて古く、遅いと感じています。地球上で最も人気のあるOSにファイルシステムが1つしかないのに、手動でデフラグが必要なのは奇妙なことです。おそらくそこにis代替手段がありますか?

更新:これが私の観察によると遅いものです。プロジェクトをビルド/パッケージ化しています。つまり、ディスク上で多くの読み取り/書き込み操作が行われます。ビルドシステムはクロスプラットフォーム(Java、Maven)であるため、たとえば、Ubuntuを起動したときにまったく同じアクションを実行できます。

Linuxでは、私のビルドは少なくとも1/3高速です。したがって、ファイルシステムについての質問。置き忘れてごめんなさい。

14
Yuri Ushakov

WindowsホストでZFSのようなものが利用できるようにしたいと思いますが、NTFSはひどいファイルシステムではありません。ほとんどの「最新の」ファイルシステム機能(拡張属性、ジャーナリング、ACL、名前を付けます)をサポートしますが、Explorerやこれらのいずれもサポートしていない他のほとんどのアプリによって妨げられています。

そのパフォーマンスを完全に損なうものの1つは、ディレクトリに「多すぎる」エントリがあることです。 1つのディレクトリに数千のエントリを渡すと、すべてが遅くなります。文字通り、これが発生すると、マシン全体がNTFSによるエントリの作成または削除の待機を停止します。

以前は、.NETアセンブリ用のHTMLベースのドキュメントを生成するアプリを使用していました。プロパティ、メソッド、クラス、名前空間などごとに1つのファイルが作成されます。より大きなアセンブリの場合、2万以上のファイルが表示され、すべてが1つのディレクトリに適切にダンプされます。マシンは、NTFSでブロックされたビルド中に数時間を費やします。

理論的には、Windowsはファイルシステムプラグインをサポートしており、ネイティブZFS、ext3、またはその他(Fuseでさえ)を可能にします。実際には、APIは文書化されていないため、完全に自分で行うことができます。

さて、Java開発を行っているので、マシンに別のOSをインストールするか、Windows上でVMを使用できますか?

また、プラットフォームに依存しないファイルシステムベンチマーク(iozone、bonnie ...頭のてっぺんからはわからない、おそらくJavaで書かれたものもいくつかあります)を試してみてください。実際には、ファイルシステムがあなたを妨げているか、それが何か他のものであるかどうか。時期尚早の最適化とそのすべて...

3
chrish
  • 最終アクセス時間をオフにします
  • 短いファイル名をオフにする
  • 通知の削除をオフにします
  • インデックス作成をオフにする
  • ジャーナリングを無効にする
  • シャドウコピーと以前のバージョンおよびクォータと共有を無効にします。
  • バイパストラバースチェックを有効にする

本当の解決策は、移植性フレームワークの下にあるunix API(fopenなど)自体ではなく、ネイティブのWindowsファイルシステムAPIを使用するようにビルドシステムを書き直すことだと思います。しかし、それは起こらないので、基本的には、彼らが許容できると思ったレベルのパフォーマンスで立ち往生しています。

もともとWindows用に作成されていないシステムを使用している場合、ディレクトリトラバーサルの処理が非常に不十分であることがよくあります。そのため、ディレクトリツリーが非常にフラットであることを確認してください。

5
user165568

新しいWindowsOSでサポートされ、NTFSよりも高速なファイルシステムが1つあります。 exFATです。システムドライブに使用できる可能性があります。しかし、それがどのような合併症を引き起こす可能性があるかは不明です。

ただし、他のパーティションにも使用できます。ランダムな読み取り/書き込み操作を使用すると高速になります。たとえば、SSDに最適です。

3
sinni800

プロジェクトフォルダのアクセス/書き込みチェックを実行するアンチウイルスプログラムを実行していますか?

コンパイルには、多数の小さなファイルをすばやく連続して読み書きすることが含まれ、ウイルススキャナーを圧倒する可能性があります。プロジェクトフォルダを除外フォルダのリストに追加し、それによって状況が改善されるかどうかを確認します。

Linuxでは、(おそらく)アンチウイルスソフトウェアはありません。

3
ChrisF