{"metadata":{"_oai":{"id":"oai:ipsj.ixsq.nii.ac.jp:00016594","sets":["934:935:954:955"]},"path":["955"],"owner":"1","recid":"16594","title":["再現コンパイル手法を用いたJava JIT コンパイラの問題判別"],"pubdate":{"attribute_name":"公開日","attribute_value":"2005-10-15"},"_buckets":{"deposit":"4f02f232-dfcd-4caa-ad22-8ee08c0c30d2"},"_deposit":{"id":"16594","pid":{"type":"depid","value":"16594","revision_id":0},"owners":[1],"status":"published","created_by":1},"item_title":"再現コンパイル手法を用いたJava JIT コンパイラの問題判別","author_link":["0","0"],"item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"再現コンパイル手法を用いたJava JIT コンパイラの問題判別"},{"subitem_title":"Problem Determination for a Java JIT Compiler Using Replay Compilation","subitem_title_language":"en"}]},"item_keyword":{"attribute_name":"キーワード","attribute_value_mlt":[{"subitem_subject":"通常論文","subitem_subject_scheme":"Other"}]},"item_type_id":"3","publish_date":"2005-10-15","item_3_text_3":{"attribute_name":"著者所属","attribute_value_mlt":[{"subitem_text_value":"日本アイ・ビー・エム(株)東京基礎研究所"},{"subitem_text_value":"日本アイ・ビー・エム(株)東京基礎研究所"},{"subitem_text_value":"日本アイ・ビー・エム(株)東京基礎研究所"},{"subitem_text_value":"日本アイ・ビー・エム(株)東京基礎研究所"},{"subitem_text_value":"日本アイ・ビー・エム(株)東京基礎研究所"}]},"item_3_text_4":{"attribute_name":"著者所属(英)","attribute_value_mlt":[{"subitem_text_value":"Tokyo Research Laboratory IBM Japan, Ltd.","subitem_text_language":"en"},{"subitem_text_value":"Tokyo Research Laboratory IBM Japan, Ltd.","subitem_text_language":"en"},{"subitem_text_value":"Tokyo Research Laboratory IBM Japan, Ltd.","subitem_text_language":"en"},{"subitem_text_value":"Tokyo Research Laboratory IBM Japan, Ltd.","subitem_text_language":"en"},{"subitem_text_value":"Tokyo Research Laboratory IBM Japan, Ltd.","subitem_text_language":"en"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"jpn"}]},"item_publisher":{"attribute_name":"出版者","attribute_value_mlt":[{"subitem_publisher":"情報処理学会","subitem_publisher_language":"ja"}]},"publish_status":"0","weko_shared_id":-1,"item_file_price":{"attribute_name":"Billing file","attribute_type":"file","attribute_value_mlt":[{"url":{"url":"https://ipsj.ixsq.nii.ac.jp/record/16594/files/IPSJ-TPRO4614002.pdf"},"date":[{"dateType":"Available","dateValue":"2007-10-15"}],"format":"application/pdf","billing":["billing_file"],"filename":"IPSJ-TPRO4614002.pdf","filesize":[{"value":"342.9 kB"}],"mimetype":"application/pdf","priceinfo":[{"tax":["include_tax"],"price":"660","billingrole":"5"},{"tax":["include_tax"],"price":"330","billingrole":"6"},{"tax":["include_tax"],"price":"0","billingrole":"15"},{"tax":["include_tax"],"price":"0","billingrole":"44"}],"accessrole":"open_date","version_id":"70683e77-c42d-4200-8558-49abb76e1141","displaytype":"detail","licensetype":"license_note","license_note":"Copyright (c) 2005 by the Information Processing Society of Japan"}]},"item_3_creator_5":{"attribute_name":"著者名","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"緒方, 一則"},{"creatorName":"小野寺, 民也"},{"creatorName":"河内谷清久仁"},{"creatorName":"小松, 秀昭"},{"creatorName":"中谷, 登志男"}],"nameIdentifiers":[{}]}]},"item_3_creator_6":{"attribute_name":"著者名(英)","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Kazunori, Ogata","creatorNameLang":"en"},{"creatorName":"Tamiya, Onodera","creatorNameLang":"en"},{"creatorName":"Kiyokuni, Kawachiya","creatorNameLang":"en"},{"creatorName":"Hideaki, Komatsu","creatorNameLang":"en"},{"creatorName":"Toshio, Nakatani","creatorNameLang":"en"}],"nameIdentifiers":[{}]}]},"item_3_source_id_9":{"attribute_name":"書誌レコードID","attribute_value_mlt":[{"subitem_source_identifier":"AA11464814","subitem_source_identifier_type":"NCID"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourceuri":"http://purl.org/coar/resource_type/c_6501","resourcetype":"journal article"}]},"item_3_source_id_11":{"attribute_name":"ISSN","attribute_value_mlt":[{"subitem_source_identifier":"1882-7802","subitem_source_identifier_type":"ISSN"}]},"item_3_description_7":{"attribute_name":"論文抄録","attribute_value_mlt":[{"subitem_description":"Java JIT コンパイラは,実行時情報を利用した高度な適応型最適化を行い,Java プログラムをより高速に実行する.反面,適応型最適化は,適用する最適化の組合せの増加と,最適化動作が入力データやスレッド実行順序などに依存することで動作の再現性を低下させ,JIT コンパイラの問題判別作業を困難にしている.この問題は,入力データ量や実行スレッド数の多い基幹システムで顕著になる.JIT コンパイラの問題判別には,通常,デバッグ用トレースを用いるが,基幹システムなどで,本番運用中に常時トレースを生成するのは非現実的である.そのため,デバッグ用トレースを取得するには,同一アプリケーションを別のマシンで再コンパイルする必要があるが,適応型最適化の動作は入力データやスレッド実行順序などに依存するので,再コンパイルしても同一のデバッグ用トレースが得られない.本論文では,再コンパイルでも本番運用中と同じ結果を再現する,再現コンパイル手法を提案する.本手法は,記録コンパイラと再現コンパイラと呼ばれる2 種類のコンパイラを使用する.記録コンパイラは本番運用中に使用され,レポジトリと呼ばれるメモリ領域とシステムダンプを用いて,コンパイラへの入力をすべて保存する.我々の実験では,入力を保存することによる速度低下は無視できる程度,レポジトリに必要なメモリ量はコンパイラ生成コードの10%以下であった.","subitem_description_type":"Other"}]},"item_3_description_8":{"attribute_name":"論文抄録(英)","attribute_value_mlt":[{"subitem_description":"The JIT compiler for Java has been greatly improved by supporting more advanced optimizations that are based on the adaptive optimization technique. On the other hand, the adaptive optimization increases variety of combinations of optimizations to be applied to a method and decreases the possibility to reproduce the same compilation process again because it depends on the input of the Java program and the execution order of threads. Thus, it makes the JIT compiler difficult to debug particularly in the mission-critical environment, where it usually processes large amount of input with many threads. The typical approach to debug the JIT compiler is to generate the trace of the compilation process, but it is impractical in the mission-critical environment. The only way to get the trace is to run the same Java application again remotely, but this does not necessarily generate the same output because the adaptive optimizations depend on the runtime environment that can be different from that at the time of the failure when it is compiled again remotely. In this paper, we propose a new technique, called replay JIT compilation, to recreate the same JIT compilation process offline remotely using two compilers, the state-saving compiler and the replaying compiler. The state-saving compiler is designed to run in the customer environment as part of the Java runtime and save into the repository in the memory all the state information necessary for the replaying compiler to reproduce the same compilation process later offline. Our experiment has shown that the overhead of state saving is negligible, and the size of the additional memory area for state saving is only 10% of the compiled code.","subitem_description_type":"Other"}]},"item_3_biblio_info_10":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographicPageEnd":"11","bibliographic_titles":[{"bibliographic_title":"情報処理学会論文誌プログラミング(PRO)"}],"bibliographicPageStart":"1","bibliographicIssueDates":{"bibliographicIssueDate":"2005-10-15","bibliographicIssueDateType":"Issued"},"bibliographicIssueNumber":"SIG14(PRO27)","bibliographicVolumeNumber":"46"}]},"relation_version_is_last":true,"weko_creator_id":"1"},"id":16594,"updated":"2025-01-22T23:46:44.622837+00:00","links":{},"created":"2025-01-18T22:49:49.377370+00:00"}