一行の変更によりLinuxのパフォーマンスが4000%(40倍)向上

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

Linuxカーネルソースコードのたった1行の変更により、パフォーマンスが約4000%向上したことが判明し、注目を集めています(Phoronix)。

Intelが運用しているLinuxカーネルテストロボットの報告によると、Intel Xeon Platinum(Cooper Lake)テストサーバー上で動作する「will-it-scale.per_process_ops」スケーラビリティテストケースで、3888.9%の改善が確認されたとのこと。カーネルテストロボットは、Linuxカーネルのソースコードを監視し、変更があれば自動的にビルドやテストを実施するサービスで、カーネルの品質向上やバグの早期発見のために運用されています。

大幅な性能向上の原因となったコミットは「mm, mmap: limit THP alignment of anonymous mappings to PMD-aligned sizes」で、パッチメッセージによると、このコミットにより、以前のパフォーマンス低下が修正され、特殊なケースでパフォーマンスが大幅に向上することが確認されたとのこと。

Since commit efa7df3e3bb5 ("mm: align larger anonymous mappings on THP boundaries") a mmap() of anonymous memory without a specific address hint and of at least PMD_SIZE will be aligned to PMD so that it can benefit from a THP backing page.

コミットefa7df3e3bb5("mm: より大きな匿名マッピングを THP 境界に合わせる")以降、特定のアドレスヒントなしで mmap()され、かつ PMD_SIZE 以上のサイズを持つ匿名メモリのマッピングは、THP(Transparent Huge Pages)対応のページの恩恵を受けられるように PMD 境界に合わせて配置されるようになりました。

However this change has been shown to regress some workloads significantly. [1] reports regressions in various spec benchmarks, with up to 600% slowdown of the cactusBSSN benchmark on some platforms. The benchmark seems to create many mappings of 4632kB, which would have merged to a large THP-backed area before commit efa7df3e3bb5 and now they are fragmented to multiple areas each aligned to PMD boundary with gaps between. The regression then seems to be caused mainly due to the benchmark's memory access pattern suffering from TLB or cache aliasing due to the aligned boundaries of the individual areas.

しかし、この変更により、一部のワークロードにおいてパフォーマンスが大幅に低下することが確認されています。例えば、あるベンチマーク([1])では、複数の spec ベンチマークにおいてリグレッションが見られ、特定のプラットフォームでは cactusBSSN ベンチマークで最大600%の遅延が発生しています。このベンチマークは 4632kB の多くのマッピングを生成するようで、コミット efa7df3e3bb5 以前はこれらが THP 対応の大きなエリアに統合されていましたが、現在では PMD 境界に合わせて分割され、間にギャップが生じています。このリグレッションは、主に個々のエリアが整列された境界を持つことによる TLB やキャッシュのエイリアシングの影響で、ベンチマークのメモリアクセスパターンに悪影響を与えるために発生していると見られます。

Another known regression bisected to commit efa7df3e3bb5 is darktable and early testing suggests this patch fixes the regression there as well.

別の既知のリグレッションとして、efa7df3e3bb5 のコミットが原因とされた darktable の問題があり、初期テストではこのパッチによりリグレッションが解決されることも確認されています。

To fix the regression but still try to benefit from THP-friendly anonymous mapping alignment, add a condition that the size of the mapping must be a multiple of PMD size instead of at least PMD size. In case of many odd-sized mapping like the cactusBSSN creates, those will stop being aligned and with gaps between, and instead naturally merge again.

リグレッションを解決しつつ、THP に適した匿名マッピングのアライメントを維持するために、マッピングサイズが PMD サイズの「倍数」であることを条件に追加しました。cactusBSSN のように異常なサイズのマッピングが多数ある場合、これによりこれらのマッピングはギャップなしで再び自然に統合されるようになります。

マージされたmmapパッチは、わずか1行のコードに影響するものです。

ただしパフォーマンスの改善は、合成テストにおけるものであり、実際のワークロードではこれほど大きな改善が見られる可能性は低いことに注意する必要があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次