更新後のソフトウェアが遅い、原因を自動的に特定する手法をテキサスA&M大学とIntel Labsが開発:パフォーマンスカウンタのデータを利用
テキサスA&M大学の研究者がIntel Labsのコンピュータ科学者と共同で、ソフトウェアのアップデートに起因する処理速度の低下に関する研究結果を発表した。PCやサーバが備える数百のパフォーマンスカウンタから情報を取得し、正常動作と異常動作を判定できる。
アップデートによって動作速度が高まったことをうたうソフトウェアを試してみると、実際には動作速度が遅くなっていることがある。テキサスA&M大学の研究者とIntel Labsのコンピュータ科学者は共同で、このような問題の原因を特定する作業を完全に自動化する手法「AutoPerf」を開発した。2020年2月11日にテキサスA&M大学が発表したもの。
ディープラーニングで問題特定用のアルゴリズムをトレーニングし、ソフトウェアが含む問題を数日ではなく数時間で発見できるという。
テキサスA&M大学コンピュータ科学工学部 助教授のアブドラ・ムザヒド氏は次のように語る。
「ソフトウェアをアップデートすると、かえって動作が遅くなる場合がある。ソフトウェアに変更を加える過程でエラーが混入することがあるからだ。この問題は、継続的に進化する大規模なソフトウェアシステムを使用する企業では、一段と深刻だ」
このようなパフォーマンス上の問題を、コンピュータ科学の分野では「パフォーマンスリグレッション」と呼ぶ。同氏を含む研究チームは、パフォーマンスリグレッションに向けた便利な診断ツールを開発した。このツールは、あらゆるソフトウェアやプログラミング言語と互換性があるとしている。
研究チームが開発したアルゴリズムは、バグがないバージョンのプログラムから得たパフォーマンスカウンタデータ(上段)を使ってトレーニングすることで、変更後のプログラムの性能低下を検知する(出典:Texas A&M大学)
ムザヒド氏によると、パフォーマンスリグレッションの診断には、CPUのパフォーマンスカウンタのデータを使う。
「パフォーマンスカウンタは、プログラムの実行状態を理解するための情報を提供する。プログラムが期待通りに動いていない場合、パフォーマンスカウンタが通常、異常な挙動の兆候を記録する」(同氏)
ソフトウェア実行後のパフォーマンスカウンタには特定のメモリアドレスにアクセスした回数やアクセスしていた時間、終了した時間などが記録されているため、診断に役立つ情報を引き出すことができる。
パフォーマンスカウンタが多過ぎる
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Microsoft、ソースコード解析ツール「Application Inspector」をOSSとして公開
Microsoftは、オープンソースでクロスプラットフォームのソースコード解析ツール「Microsoft Application Inspector」を公開した。多種多様なプログラミング言語で記述されたコンポーネントを使用した数百万行のコードを解析できる。コードの時間的な変化はもちろん、特に「危険な」部分がどこなのかを特定できる。 - C++やPython向けのコード可視化ツール「Sourcetrail」がオープンソースに
Coati Softwareは、クロスプラットフォームのインタラクティブなコード可視化ツール「Sourcetrail」を、無料のオープンソースソフトウェアとして公開した。CやC++、Java、Pythonなどに対応している。コードを読むことにほとんどの時間を費やす開発者に役立つツールだ。 - 「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説
ミュンヘン工科大学の研究チームのメンバーはRust言語で開発したネットワークデバイスドライバの処理速度をC言語のものと比較した。その結果、Rust版の速度低下は最大でも数%にとどまっていた。なぜ処理性能がわずかに遅くなるのか、その理由も説明した。