Skip to main content
QUICK REVIEW

[論文レビュー] Using High-Rising Cities to Visualize Performance in Real-Time

Katsuya Ogami, Raula Gaikovina Kula|arXiv (Cornell University)|Sep 18, 2017
Software System Performance and Reliability被引用数 3
ひとこと要約

本稿では、実行時間に応じた建物の高さとコード構造に応じた都市構造を反映する、リアルタイムで3次元的なCodeCity可視化を提案する。このプロトタイプにより、実行時におけるパフォーマンスボトルネックやメモリリークの即時検出が可能となり、Javaアプリケーションのインタラクティブで空間化されたプロファイリングを通じて、開発者の状況把握能力が向上することを示している。

ABSTRACT

For developers concerned with a performance drop or improvement in their software, a profiler allows a developer to quickly search and identify bottlenecks and leaks that consume much execution time. Non real-time profilers analyze the history of already executed stack traces, while a real-time profiler outputs the results concurrently with the execution of software, so users can know the results instantaneously. However, a real-time profiler risks providing overly large and complex outputs, which is difficult for developers to quickly analyze. In this paper, we visualize the performance data from a real-time profiler. We visualize program execution as a three-dimensional (3D) city, representing the structure of the program as artifacts in a city (i.e., classes and packages expressed as buildings and districts) and their program executions expressed as the fluctuating height of artifacts. Through two case studies and using a prototype of our proposed visualization, we demonstrate how our visualization can easily identify performance issues such as a memory leak and compare performance changes between versions of a program. A demonstration of the interactive features of our prototype is available at https://youtu.be/eleVo19Hp4k.

研究の動機と目的

  • VirtualVM や JProfiler のような従来のスナップショットベースのプロファイラーにおける遅延と構造的洞察の不足を解消すること。
  • GUI集約型アプリケーション(例:ゲームなど)においても、実行中のプログラム実行中にリアルタイムでのパフォーマンス監視を可能にすること。
  • 3次元都市の比喩を用いて、コード構造と実行ダイナミクスを統合的に可視化することで、開発者のパフォーマンス理解を向上させること。
  • ソフトウェアの進化過程において、パフォーマンスの劣化やスレッド関連の問題を検出するためのリアルタイム可視化の実用性を評価すること。
  • 基本的なメトリクスを超えて、パフォーマンスプロファイリングに適用可能なCodeCity比喩のスケーラビリティと使いやすさを検討すること。

提案手法

  • Javaプログラムのコンponent(クラス、パッケージ)を3次元都市の要素(建物、地区)にマッピングし、コード構造を表現する。
  • プログラム実行中のCPU使用量やメモリ使用量を反映する、変動する建物の高さを用いる。
  • JVMベースのアプリケーションから得たライブプロファイリングデータを可視化エンジンに統合し、動的更新を実現する。
  • 開発者がユーザー操作やコード変更に応じたパフォーマンス変化を観察できるインタラクティブなプロトタイプを実装する。
  • CodeCity比喩を活用してコンponent間の空間的関係を保持し、パフォーマンスのホットスポットを強調する。
  • ケーススタディを用いて、可視化がスレッドリークやソフトウェアバージョン間でのパフォーマンス変化の検出にどの程度有効であるかを検証する。

実験結果

リサーチクエスチョン

  • RQ1従来のスナップショットプロファイラーと比較して、プログラム実行のリアルタイム3次元可視化は、パフォーマンスボトルネックの検出をどのように改善するか?
  • RQ2CodeCity比喩は、コードコンponent間の構造的関係とそのパフォーマンス行動をどの程度効果的に明らかにできるか?
  • RQ3可視化は、アプリケーションのインタラクティブな使用中にメモリリークやスレッド関連の問題をリアルタイムで検出するのに有効か?
  • RQ4動的かつ空間化されたパフォーマンス表現は、ソフトウェア保守やリファクタリングの過程で開発者の理解をどのように向上させるか?
  • RQ5大規模または複雑なソフトウェアシステムにおいて、CodeCityを用いたプロファイリングの実用的制限とスケーラビリティは何か?

主な発見

  • リアルタイム可視化により、オーファンスレッドが原因で持続的な建物高さの変動を引き起こすTetrisゲームのプロトタイプでスレッドリークを即時検出できた。
  • プロトタイプは、ソフトウェアシステムの異なるバージョンにおけるパフォーマンスの劣化や改善を効果的に可視化し、バージョン比較を支援した。
  • 開発者はユーザー操作時の最も顕著な高さの変動を示す建物(クラス)を観察することで、パフォーマンスのホットスポットを直感的に把握できた。
  • 従来の棒グラフプロファイラーが構造的文脈を曇らせるのとは異なり、可視化はコンponent間の関係に関するより良い文脈的認識を提供した。
  • GUI集約型アプリケーションにおいて実用的価値を示した。ユーザー操作中のリアルタイムフィードバックにより、静的プロファイリングでは見逃されたパフォーマンス異常を明らかにできた。
  • 大規模なコードベースへのスケーラビリティの可能性は示されたが、マルチスレッド環境における視覚的ごみとパフォーマンスのオーバーヘッドは、さらなる最適化を要する。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。