Linux Daily Topics

2019年11月14日Fedora、次バージョンでPython 3のパフォーマンス改善へ

10月29日にリリースされたFedora 31で行われた大きなアップデートのひとつに、Python 2を完全に削除し、PythonコマンドをPython 3にスイッチしたことが挙げられる。そして2020年春のリリースとなる「Fedora 32」では、Pythonのパフォーマンスをさらに向上させるための変更が実施されることになる。

Changes/PythonStaticSpeedup - Fedora Project Wiki

これまでFedoraではPython 3パッケージをコンパイルする際には共有ライブラリである「libpython3.x.so」を使用しており、最終的なバイナリは/usr/bin/python3.xに動的にリンクさせていた。だが、libpython3.x.soのかわりに静的ライブラリ「libpython3.x.a」を使ってみたところ、ワークロードによって多少差が出るものの、5%~28%もの性能向上が見られたという。またリンク時最適化(LTO)とプロファイルにもとづく最適化(PGO)においても、Python 3に静的にリンクしたほうが良い結果が出たとしている。

Python 3.8以降、C言語による拡張はデフォルトではlibpythonにリンクされなくなっており、Pythonを組み込んだアプリケーションをビルドするにはpython3-configとして用意されている--embededフラグを使う必要がある。DebianやUbuntuでは、すでに静的にリンクされたバイナリを提供しており、それとは別にlibpythonのサブパッケージを用意することで、Pythonが組み込まれたパッケージでも動作するようにしている。

Fedoraプロジェクトでも同様の変更を進めていくとしているが、現状では共有ライブラリから静的ライブラリのリプレースといった急激な変更は実施せず、libpythonのネームスペースをPythonのネームスペースと分離することにフォーカスし、最終的にはPython 3がlibpythonに依存しなくなることを目指していくとしている。この変更により、Fedora 32ではPythonベースのワークロードが最大で27%向上する見込みだ。

おすすめ記事

記事・ニュース一覧