より良いファイルシステムを備えたWindows


14

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

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

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

Linuxでは、私のビルドは少なくとも1/3速くなります。したがって、ファイルシステムに関する質問。置き忘れてすみません。


7
NTFSはどのように遅いのですか?まったく同じ操作で他のどのファイルシステムよりも遅いことを知るために、どのように速度を測定していますか?NTFSは、Windows自体がブートできる唯一のネイティブサポートファイルシステム(制限のあるFATを除く)ですが、非ブートパーティション用のext3ファイルシステムドライバーを取得できると思います。
木梅

ええ、私たちに教えてください、NTFSはどのように遅いのですか?
JL。

1
しかし、ここでの質問は何ですか?NTFSを高速化できるのでしょうか、それともWindowsが別のファイルシステムを使用できるのでしょうか。
イヴォFlipse

1
@ ivo-flipse:ここで混乱を引き起こしてすみません、両方の質問について何かを学ぶことに興味があります。同様に、Windows上のNTFSに代わる実証済みの代替手段はありませんか?そうでない場合、一部のキャッシュにメモリを追加したり、実験的なメカニズムを有効にしたりするなど、一般にNTFSのパフォーマンスを向上させることは可能でしょうか?
ユーリウシャコフ

1
@ sinni800それはごみです。ごめんなさい。デスクトップOSとしてはLinuxが完璧とはほど遠いことを認めていますが、サーバーOSとしてはほぼすべてのワークロードでWindowsよりもはるかに優れています。ベータ品質のオペレーティングシステムを使用している上位100万のWebサイトの96.6%に疑問の余地はありません。
mjaggard 16

回答:


3

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

パフォーマンスを完全に低下させることの1つは、ディレクトリに「多すぎる」エントリがあることです。1つのディレクトリに数千のエントリを渡すと、すべての処理が遅くなります。文字通り、マシン全体がNTFSがエントリを作成または削除するのを待って停止します。

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

理論的には、Windowsはファイルシステムプラグインをサポートしています。これにより、ネイティブZFS、ext3、または何でも(FUSEでも)可能になります。実際には、APIは文書化されていないため、完全に自分で作成できます。

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

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


Installable File Systemは、少なくとも2000年以来文書化されています。プラグインの欠如は、常に難易度と興味の欠如にかかっていました。まだ難しいですが、FUSEとFSDKが利用可能になりました。
-user165568

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

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

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


1
これは、さらに多くの情報を提供した場合、より良い答えになります。1.それぞれにどれだけの時間を節約できるかの指標2.これらの変更を行う方法。
mjaggard 16

3

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

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


1
今すぐ試してみたところ、exFATは遅いようです。最初にNTFSでビルド:36.083s、2番目:19.884s。最初にexFATでビルド:41.160秒、2番目:27.291秒。
ユーリウシャコフ

ええ exFATは、現在Windowsでネイティブにサポートされている他の唯一のファイルシステムであり、システムドライブとして使用できます(許可が存在します)。私は一度オンラインでテストを見ましたが、ランダム読み取りの方がexFATの方が速いと言っていました。
sinni800

テストがexFATの方が高速であると言った理由は、おそらく> 32768エントリを含むディレクトリでテストしなかったためです。また、内部の変更により、Windowsの新しいバージョンの速度がさらに低下した可能性があります。神(MS)はopendir()(または同等の)呼び出しで何が起こるかを知っています。
-MattBianco

2

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

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

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


Defenderはオフ、AVはシャットダウン(または場合によっては完全にアンインストール)。
ユーリウシャコフ

@ゆり-まあ。
ChrisF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.