11月7日、海外のテクノロジーメディアThe Registerが「Torvalds patch improves Linux performance by 2.6%」と題した記事を公開した。この記事では、Linuxのマルチスレッド性能を2.6%向上させた新しいパッチについて詳しく紹介されている。以下に、その内容を紹介する。
今回の改修は、Linuxカーネルの創設者であるリーナス・トーバルズによるもので、コード変更は「x86/uaccess: Avoid barrier_nospec() in 64-bit copy_from_user()」という名前が付けられた。このセキュリティ対応は、メルトダウンやスペクター攻撃のような脆弱性を防ぐためのものである。こうした攻撃は2018年に公表されたが、問題は依然として存在している。
パッチはRed Hatの開発者ジョシュ・ポワンブーフによって初めて提出されたもので、トーバルズが改良を加えた結果、パフォーマンスの向上が実現した。トーバルズはこのコミットの中で「カーネルテストロボットによると、スレッドごとの操作ベンチマークが2.6%向上した」と述べている。
トーバルズのバージョンは、barrier_nospec() APIを避けている。このAPIは、一部の機械コードの予測実行を防ぐものである。予測実行は、最新のCPUが分岐予測を利用して必要なプログラムコードを事前に実行し、その結果をキャッシュしておく機能である。この機能は正確に予測されれば時間を節約できるが、誤った場合は結果が破棄される。問題は、こうした予測実行がセキュリティリスクを引き起こすことであり、これに対処するための研究が続けられている。
代わりに、copy_from_user()呼び出しで無効なアドレスが原因で許可されない場合には、ポインタマスキングを利用して「1」の値を返すアドレスを返すようにしている。
こうした攻撃に対する防御は必要不可欠である。Linuxの主な用途であるウェブサーバーなどは、あらゆる可能な攻撃に対して防御策を講じる必要がある。これによりサーバーの安全性は向上するが、性能が低下する結果にもつながる。トーバルズはこうした性能を犠牲にする対策を嫌っていることでも知られている。
スタンドアロンのローカルマシン(デスクトップやノートPCなど)であれば、こうした対策を無効化し、ある程度の安全性を保ちつつもより良いパフォーマンスを享受できるが、リスクを理解し、少しの潜在的リスクを受け入れる必要がある。
この変更は大きなものではないが、Linuxの性能向上においてトーバルズが持つ技術的知識と影響力の高さを示すものである。彼はx86アーキテクチャに精通しており、同等の技術を持つ者は非常に少ない。大半は大手チップメーカーで働いているため、契約上の制約で情報を公表できない。トーバルズがLinux Foundationから年収100万ドル以上の報酬を得ているのも、この専門知識によるものである。
詳細はTorvalds patch improves Linux performance by 2.6%を参照していただきたい。