トピック

超高速SSDでもエクスプローラーでは速度が全然出ない?!50GB/s超の“実用速度”を実現するために何が必要だったのか「FastCopy」開発者に聞いてみた

SSDの速度を本当に引き出すためのポイント text by 日沼諭史

合同会社FastCopy研究所 所長・CEOの白水 啓章氏、インタビューを行ったITGマーケティングにて

 年々高速化が進むPCのストレージ。PCIe 5.0世代のSSDでは、高速なモデルは15GB/s目前といった速度に到達している。しかし、実のところ、このパフォーマンスはWindowsのエクスプローラー上だとほとんど発揮されていないことはご存じだろうか。エクスプローラーでファイルコピーしてみると、いくら内蔵SSDが高速でも数GB/sで頭打ちになるのだ。

 ベンチマークテストではたしかにスペック通りの性能を目にすることができるが、それはあくまでもベンチマークテストに限った話。実際のファイル操作をエクスプローラー上で行なう限り、実用速度はそれよりずっと低いため、せっかくの高速ストレージが宝の持ち腐れになっている。

 これは既存のPCIe 4.0やPCIe 5.0だけの話ではない。SSDを複数枚搭載して高速化を図るRAIDカードや、Thunderbolt 5接続の外部SSDもそう。今後さらに高速な規格が登場したとしてもWindowsのエクスプローラーがボトルネックになることからは逃れられない。ストレージのスペックが上がるほど期待値との乖離が大きくなり、影響がより顕著に感じられてしまうだろう。

 こうした状況に業を煮やしたのが、「FastCopy」を開発した白水啓章(しろうず ひろあき)氏だ。独自のアイデアでストレージ本来の性能を引き出しつつ、高信頼なファイルのコピーやバックアップを実現している。そこにどんな技術が詰め込まれているのか、話を伺った。

ストレージの理論値近い性能を引き出す「FastCopy」とは?

 2024年11月に開催された「Inter BEE 2024」で、約59GB/sという常識外れのシーケンシャルリードを叩き出すマシンがSamsungのブースに展示されていた。本誌でもリポートしたので覚えている方もいるのではないだろうか。

Inter BEE 2024で展示されていたLenovo ThinkStation P8のカスタムモデル
この時は59GB/sに迫る驚異的なシーケンシャルリードを記録していた

 このときは8K動画編集の快適さをアピールするデモンストレーションが行われていた。ストレージの高速化により編集作業中の動作が快適になったとしても、前後に発生する素材データや完成データのやりとり(コピー処理)も合わせて高速化しなければ本当に快適になったとは言えない。データ転送をエクスプローラーで行なってしまうと、先ほど言った通りストレージが本来持っているスペックよりもはるかに低速なパフォーマンスしか出ないためだ。

 そこで活躍するのが白水氏の開発したFastCopy。同展示ではFastCopyを使用した高速なファイル転送も実演し、Samsungのデータセンター向けSSDを搭載したHighPoint製外付けエンクロージャー「RocketStor 6542AW」と、上記のLenovo ThinkStation P8間でデータ転送を行い、高いパフォーマンスを見せつけていた。

Inter BEE 2024で展示されていたCDFP接続の外付けエンクロージャー「RocketStor 6542AW」
ベンチマークのシーケンシャルリードは約27GB/s
FastCopyによるファイルコピーの実行速度は約14.5GB/sで、かなりの速度を引き出せていた

 FastCopyは、指定ファイルやフォルダを目的の場所にコピー(もしくは削除)するためのWindows用ツールだ。

 個人利用は無料で、商用利用可能な「Pro版」は有償ライセンスが必要。映像制作の現場だけでなく、国内外の大手企業、政府系機関への導入実績もあり、個人開発とはいえ「世界的なお墨付き」のあるソフトだ。白水氏は、Windows 95時代に登場したLAN内メッセージ交換ソフト「IP Messenger」の開発者としても知られており、長くお世話になっている読者もいるかもしれない。

 単純にコピーする機能だけでなく、「Pro版」はハッシュを生成してデータ比較することで正しくコピーされているかどうかをチェックし、信頼性を高めるベリファイ機能も備えている。

 FastCopyはWindows XP時代からある息の長いツールで、白水氏は当時からエクスプローラーがHDD本来のパフォーマンスを活かせていないことに気付いており、速度以外の面でもバックアップ作業などに適さない部分があるとも感じていた。そんな不満から「性能を100%引き出してあげたい、ストレスなくバックアップしたい」というモチベーションで開発をスタートさせたのだという。

7GB/sクラスのPCIe 4.0対応SSD上で、Windowsエクスプローラーを使いファイルコピーを試してみると、2.5GB/s余りの速度しか出ない
こちらはリード・ライトともに5GB/s超えのSSDを2枚用意して、Windowsエクスプローラーでデータをコピーした際の速度だが、やはり2.5GB/s前後の速度しか出なかった

なぜFastCopyはデータを高速にコピーできるのか

 同氏はWindowsのエクスプローラーの処理が遅い理由について、「内部でどう処理しているのかまで正確には分からないが」と断りつつも、ファイルコピー時のリードとライトの処理において「Windows XP時代のエクスプローラーは、片方が動作している間、もう片方が休んでいるような挙動になっていたり、大規模なデータコピー時には、OSファイルキャッシュがむしろオーバーヘッドになっている」といったあたりを原因と見ていたとのこと。Windows VISTA以降は並列処理が行われるようになったものの、現在のエクスプローラーでも速度が発揮されていないのは「ダイレクトI/Oが使われていない、非同期I/Oの発行数が少ないといったあたりが原因の可能性が高い」とのことだ。

エクスプローラーでは非同期なI/O処理はほとんど行なわれていないようだという

 そこで、「リード・ライトごとに専用スレッドで動かす、そのうえでバッファ容量を大きく取る」といったアイデアを元にFastCopyを作り上げていった。スタートから半年ほどである程度ソフトとして形になり、2004年リリースに至る。

 以降、ユーザーの要望などに応えて高速化やベリファイの追加など、機能・性能の拡充を続けてきた。非同期なI/O処理、デバイスと直接やりとりするダイレクト I/O(OSによるキャッシュの仕組みを介在させない処理)の利用なども工夫の1つだ。

 さらには、HDDのシークにかかる時間を考慮して、それが最短になる場所に書き込むようなアルゴリズムを考案したり、別ドライブ間と同一ドライブ間、もしくはHDDとSSDとで異なる手法を用いてコピーしたりするなど、状況に応じた最適な処理を行なうようにもなっている。

 また、特にNVMe SSDの場合はキュー(処理の発行)数の上限が大きく取られており、「少なくとも数百以上のキュー数で処理した方が性能は出やすい」ことから、FastCopyではそれも考慮した設計としている。なお、HDDに対してキューが大量に発行されると問題がありそうだが、Windowsの場合はアプリケーション側からはストレージがSSDなのかHDDなのか判別可能で、FastCopyに限らず対象ストレージに合わせて動作を切り替えることが可能とのこと。エクスプローラーでは、このあたりのテクニックがあまり活用されていないのではないか、と白水氏は推測している。

さらなる高速化を目指してSamsungらが協力最新の試作版FastCopyは実測値で50GB/sオーバーを達成

 こうしたさまざまなテクニックを活用して高速処理を可能にしているFastCopyの最新版は、2025年1月リリースのv5.8.1。しかし今、白水氏の手元では「v6.0.0」という未公開のアルファテストバージョンが稼働している。

 これは、Inter BEE 2024のデモ展示でFastCopyが使われていたことを同氏が知り、「もっと高速化できそう」とSNSにポストしたことから、Samsungや代理店のITGマーケティング、アスクが検証用の機材提供、技術協力を申し出たことに始まる。

検証用機材として提供された「Lenovo ThinkStation P8」のカスタマイズモデル

 先ほどの紹介した当時の写真を見ると分かるように、外付けエンクロージャーを対象にした約20GBのファイルコピーにFastCopyを使用したケースでは、平均約14.5GB/sの転送速度となっていた。エクスプローラーで転送するよりは格段に高速だが、ベンチマークソフトの方ではリード約27GB/s・ライト約24GB/sとなっており、そこには及んでいない。

 ストレージのスペックを引き出しきれていない原因を突き止めるため、白水氏は提供された「Lenovo ThinkStation P8」を使用して検証を進めていった。AMD Threadripper Pro 7975WXに、Samsung 990 PROを8基装着したHighPoint製RAIDカード「R7608A」などを搭載する、まさしくハイエンドなマシンだ。

HighPoint製RAIDカード「R7608A」
SSDやRAIDコントローラを冷却する大型ヒートシンクを備えている
搭載されていたSSDの990 PRO 2TB×8枚

 検証の結果、転送速度が数十GB/sに達する超高速I/O環境においては、データの非同期の読み書き処理自体ではなく、それ以前の段階で行なわれるOS内部の同期的な処理がボトルネックになっていることが分かった。1つのCPUコアが100%占有され、非同期I/Oの発行処理が追加で行なえなくなっていたのだという。

 これによってCPUのコア1つあたりでは、HighPoint製RAIDカードの環境で28GB/s程度まで、一般的なWindowsのRAID 0(ストライプボリューム)ではさらに低い13GB/s程度までしか出ないことになっていたようだ。

 これを解決するべく、白水氏は、複数コアで同時処理できるよう「I/O処理専用のスレッドプールを追加して、そこから複数スレッドでリード・ライトの非同期命令を同時発行するようにした」。さらに「I/O処理の完了通知は命令の発行順ではなくバラバラになることもあるが、どこかで完了したスレッドがあったら即座に次のI/O処理に移る」ような仕組みも実装した。

 最終的には「従来の設計・構造を大幅に改変し、ライブラリにも手を入れる」など、コピー処理の根幹部分がほぼ全て書き換わるようなアップデートに。フルスクラッチに近い状態だったが、ある程度速度が出ない原因のあたりが付けられていたこともあり、実質35日ほどの稼働時間で実装を終えたとのこと。

 検証用機材においては、最終的にRAIDカードを2セット用意しリード・ライトともに最高速がでる状況を用意。サーマルスロットリングさえ発生しなければ、ベンチマークソフトが記録したリード59GB/s、ライト53GB/sと同等の、デバイスの限界に限りなく近い性能でファイルコピーできることが確認できた。

FastCopyの改修により、50GB/sを超える速度でファイルコピーが可能に。なお、TransRateの項目に表示されている52,154に続く括弧内の数字(109,977)はリード/ライト両方の合計速度となっている
Windowsのタスクマネージャー上からも55GB/s超えでデータが転送されていることが確認できた

 「それまで自分が使っていたのは20GB/s程度までしか出ない機材だったので、こういった超高速I/O処理だとどうなるかまでには気付けなかった」とのこと。「ただ、いずれ一般ユーザーのデバイスの速度もどんどん上がっていくことは間違いない。そのポテンシャルを生かせる道筋を作る意味でも、今回の取り組みは有意義だったと思う」と白水氏は語る。

90~100GB/sで次の壁にぶちあたる?今後の高速化の課題とはCPUやメモリの性能も最高速度に影響する100GB/sオーバーの世界

100GB/sあたりが次の速度の壁として見えており、CPUやメモリの性能も大きく影響してくるという

 超高速I/O環境にも対応するFastCopy v6.0.0のリリースはまだもう少し先になるとのことだが、一方で新たな限界も見えてきている。今回テストバージョンで盛り込んだ手法であっても、間もなく転送レートの上限に到達しそうなのだ。

 原因の1つはメモリ帯域幅の限界。ファイルデータのコピー時にはメモリに対してリード/ライト両方処理が入る。例えば、ストレージの速度を70~85GB/sほど出したいのであれば、メモリ帯域幅はその倍となる140~170GB/sほど必要になる。理論値であればRyzen ThreadripperやXeonのプラットフォームで構築可能なメモリ帯域幅だが、実測でこの数値を達成するのはなかなか難しい。

 また、メモリ帯域の制約をハードウェアの世代交代で解決できたとしても「キューを発行するスレッドの統括役となるスレッドは並列化が難しく、50GB/sあたりでCPUコア1個が50~60%占有する状態になっている。このままだと90~100GB/sで100%になるので、それ以上は伸びない」というCPU 1コアあたりの性能の限界もある。

 白水氏は、少なくともアルゴリズム部分では上限を突破できるように、分散処理の方法などさらなる工夫を検討していきたいとしているが、さらにもう1つ問題が顕在化しつつある。それは、コピー時にベリファイもセットで行なうようにした場合、処理完了までに極端に時間がかかってしまうことだ。

 FastCopyがベリファイのために使用している「xxHash」は、ハッシュアルゴリズムの中でも高速に生成できる方式ではあるのだが、それでも巨大バッファでは14GB/sあたりが上限となる。そのため、今まさにこのハッシュ計算部分も並列処理できるように改修し始めている。

ベリファイ処理を追加すると信頼性を高めることができるが、現在はハッシュ値の計算にかかる時間がボトルネックになっている

 「ハッシュツリー的な並列計算をすれば、130GB/sくらいまで出ることを確認済み。ただ、コピー元とコピー先それぞれでのデータ処理とハッシュ計算、4つすべてを50GB/sで処理すると、それだけで200GB/sのメモリ帯域が必要になる。これを満たすハードウェアとなると、かなりハードルが上がるのでは」と白水氏。

 現行のDDR5-6400でも帯域幅は50GB/s(シングルチャネル時)を少し超える程度。DDR5-4800のメモリを8スロット(8ch)搭載している検証機のThinkStation P8でも実測は190GB/sだったことから、200GB/sがいかに厳しい要求かが分かる。ファイルを読み込む、書き込む、というシンプルな処理も”本気”でやろうとすれば、コンシューマーレベルのハードウェアではとても太刀打ちできない”重い”ものになるのだ。

FastCopyを使用するメリットは現在の一般的なストレージでも大きい

 数十GB/sや数百GB/sといった雲の上みたいな話ではなく、一般ユーザーが触れられるレベルのハードウェアであっても、すでにエクスプローラーのコピーの遅さが足かせになってきている。

取材当日に用意されていたASUS ProArtのパーツを使って組まれたハイエンドクラスのデスクトップPC(CPU:Core Ultra 7 265K/マザーボード:ASUS ProArt Z890-CREATOR WIFI)
PCに内蔵されているSSDはSamsung 9100 PRO
Thunderbolt 5接続のエンクロージャーを用意して速度を計測
エンクロージャー側には990 PROを搭載

 取材当日は、PCIe 5.0接続の内蔵SSD(Samsung 9100 PRO)と、Thunderbolt 5接続の外付けSSD(990 PRO)のデモ環境が用意されていた。これらは一般ユーザーであっても十分に手に入れられるものだ。この2つのストレージ間でファイルコピーした場合、双方向転送の速度は最大80Gbps(理論値10GB/s)のはずだが、エクスプローラーでの転送レートは2GB/sに届かなかった。

 しかし、FastCopyでは6GB/s以上を記録し、エクスプローラーの3分の1の時間で処理を終えられる。ここに歴然とした作業効率の差が生まれることは間違いない。巨大データの受け渡しや定期的なバックアップ処理など、FastCopyが使いやすいシーンでは積極的に利用するべきだろう。

ベンチマークテストでは6GB/sを超えている
エクスプローラーでデータのコピーを行うと、実測値は2GB/sに満たない
FastCopyであれば、ベンチマーク速度に近い6GB/s超えの速度でコピーが行えた
Windowsのタスクマネージャー上からも6GB/s以上の速度が出ていることを確認

 FastCopyの開発が始まったWindows XP以降、エクスプローラーのコピー処理も改良されてきているものの、計測結果を見る限り、高速デバイスへの最適化はまだまだ足りていない。将来的に改善される可能性もあるが、「世の中がもっと良くなるため、ということであれば、FastCopyの技術提供など協力は惜しまない」と白水氏はマイクロソフトにラブコールを送る。FastCopyが今後どんな進化、発展を見せていくのか注目だ。

 なお、2025年4月12日(土)と4月13日(日)の2日間に渡り秋葉原UDX アキバ・スクエアで開催される「ASK★FES 2025 ~何かが見つかる!世界のPCパーツ大集合祭り~」のITGマーケティングブースでは、FastCopyによるファイルコピーの高速さを体感できるデモ機が展示される予定。ぜひ現地で確認してみてほしい。