第 6 章 考察
7.2 今後の課題
今後の課題としては,まず提案手法を実装した評価システムにおける各アルゴリズムの 性能向上が挙げられる.障害予測から素早く回避操作を導出できればできるほど,運用管 理者は余裕を持って回避操作の実行にあたることができる.そのためには,線形時間以下 の計算量を目指したアルゴリズム性能の改良が望ましい.
加えて,実際の障害予測技術を用いた実験の検証が挙げられる.本研究では,障害予測 情報が正確であればあるほど,効果的な回避策を提示できると考えられる.しかし現状で は,あらゆる情報システムに適用可能な汎用的で高精度な障害予測技術は確立されていな い.そのため,既存の障害予測技術の中からなるべく精度の高いものを選択,組み合わせ る必要がある.Gainaruら[12]による統計的・データマイニング的手法をHPC システム に適用した例などを参考にしたい.
謝辞
本研究を進めるにあたり,情報社会基盤研究センター 敷田幹文教授には日頃よりご指 導,ご助言をいただき心より深く感謝致します.また本研究に多くの技術的・専門的助言 を頂いた,敷田研究室の窪田清氏,坂下幸徳氏,情報処理学会インターネットと運用技術 研究会の皆様,及び情報社会基盤研究センター技術職員の皆様に感謝致します.最後に,
自主勉強会の開催を通じて活発な技術交流や議論にお付き合い頂いた主催者の並河雄紀君 と参加者の皆様,そして多くの励ましを頂いた同期,先輩,後輩,家族に感謝致します.
研究業績
口頭発表および論文集掲載 ( 査読あり )
加藤裕,敷田幹文:障害予測における最適な障害回避手段の提示法,第5回 情報処理 学会インターネットと運用技術シンポジウム (IOTS2012) 論文集,pp. 110-116 (2012)
参考文献
[1] International Business Machines Corporation. Tivoli. http://www-01.ibm.com/
software/tivoli/.
[2] Ramendra K. Sahoo, Adam J. Oliner, Irina Rish, Manish Gupta, Jos´e E. Moreira, Sheng Ma, Ricardo Vilalta, and Anand Sivasubramaniam. Critical event prediction for proactive management in large-scale computer clusters. In Lise Getoor, Ted E.
Senator, Pedro Domingos, and Christos Faloutsos, editors,KDD, pp. 426–435. ACM, 2003.
[3] Peter Bodik, Greg Friedman, Lukas Biewald, Helen Levine, George Candea, Kayur Patel, Gilman Tolle, Jonathan Hui, Armando Fox, Michael I. Jordan, David A.
Patterson, and David A. Patterson. Combining visualization and statistical analysis to improve operator confidence and efficiency for failure detection and localization.
In ICAC, pp. 89–100, 2005.
[4] 日本ヒューレット・パッカード株式会社. Hp service intelligence. http://www8.hp.
com/jp/ja/hp-news/article_detail.html?compURI=tcm:191-1198948.
[5] International Business Machines Corporation. Puresystems. http://www.ibm.com/
ibm/puresystems/.
[6] Frederick Hayes-Roth, Donald A. Waterman, and Douglas B. Lenat. Building expert systems. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1983.
[7] Agnar Aamodt and Enric Plaza. Case-based reasoning; foundational issues, method-ological variations, and system approaches. AI COMMUNICATIONS, Vol. 7, No. 1, pp. 39–59, 1994.
[8] 本村陽一,岩崎弘利. ベイジアンネットワーク技術 ユーザ・顧客のモデル化と不確実 性推論. 東京電機大学出版局, 2006.
[9] Oracle Corporation. Java se overview - oracle technology network. http://www.
oracle.com/technetwork/java/javase/overview/index.html.
[10] 中村友洋. Webアプリケーションの障害を予測する“アクセス時間解析方式”の提案.
情報処理学会論文誌.コンピューティングシステム, Vol. 47, No. 12, pp. 349–357, Sep 2006.
[11] Dean Wampler and Alex Payne. Programming Scala. O’Reilly Media, 2009.
[12] Ana Gainaru, Franck Cappello, Joshi Fullop, Stefan Trausan-Matu, and William Kramer. Adaptive event prediction strategy with dynamic time window for large-scale hpc systems. InManaging Large-scale Systems via the Analysis of System Logs and the Application of Machine Learning Techniques, SLAML ’11, pp. 4:1–4:8, New York, NY, USA, 2011. ACM.
付 録 A ルール詳細化アルゴリズム記述
第4章の節 4.2 で述べたルール詳細化アルゴリズムの大まかな記述をコードリストA.1 に示す.なお,この記述は計算量を検証・理解するために用意したもので,プログラムの 主要な記述のみを取りあげたダイジェストである事に注意されたい.
コードリストA.1: ルール詳細化アルゴリズム記述 1 // C l a s s e s
2 Rule r u l e ; // T h i s c l a s s p r o v i d e s d a t a & f u n c t i o n s o f t h e r u l e 3 Host h o s t ; // T h i s c l a s s p r o v i d e s d a t a & f u n c t i o n s o f t h e h o s t 4 H o s t P a i r p a i r ; // P a r i n g o f h o s t and a l t e r n a t e h o s t
5
6 // V a r i a b l e s
7 L i s t<Rules> ∗R u l e s ; // I n t e r m e d i a t e d a t a
8 Set<Host> h o s t s , s u b H o s t s ; // C o l l e c t i o n o f h o s t s
9 Map<S t r i n g , L i s t<H o s t P a i r>> a l t e r n a t i o n s ; // Expanding p a t t e r n s 10 L i s t<S t r i n g> i f L i s t , t h e n L i s t ; // i f / t h e n e l e m e n t s o f t h e r u l e 11 p r e f i x : S t r i n g ; // A b s t r a c t d e s c r i p t i o n
12
13 // C o n s t a n t s
14 f i n a l S t r i n g TGT; // Tag f o r r e c o g n i z i n g h o s t s
15 f i n a l S t r i n g ALT; // Tag f o r r e c o g n i z i n g a l t e r n a t e h o s t s 16
17 f o r ( Rule a b s t r a c t R u l e : r u l e s ) { 18 i f L i s t = a b s t r a c t R u l e . g e t I f L i s t ( ) ; 19 t h e n L i s t = a b s t r a c t R u l e . g e t T h e n L i s t ( ) ; 20 a b s t r a c t R u l e = t a g g i n g ( a b s t r a c t R u l e ) ;
21 a l t e r n a t i o n s = c r e a t e A l t e r n a t i o n s ( ) ; // C r e a t e l i s t o f h o s t s 22 f o r ( Host t a r g e t : h o s t s ) {
23 p r e f i x = g e t P r e f i x ( a l t e r n a t i o n s , t a r g e t ) ; 24 s u b H o s t s = deepCopy ( h o s t s ) . remove ( t a r g e t ) ; 25 f o r ( Host s u b T a r g e t : s u b H o s t s ) {
26 i f ( s u b T a r g e t . getName ( ) . s t a r t s W i t h ( p r e f i x ) ) continue; 27 a l t e r n a t i o n s . g e t ( p r e f i x ) . add (new H o s t P a i r ( t a r g e t ,
s u b T a r g e t ) ) ;
28 }
29 }
30 expandedRules . add ( a b s t r a c t R u l e ) ; // S e t i n i t i a l r u l e
31 f o r (Map . Entry<S t r i n g , L i s t<H o s t P a i r>> e n t r y : a l t e r n a t i o n s . e n t r i e s ( ) ) {
32 midRules . c l e a r ( ) ;
33 midRules . a d d A l l ( expandedRules ) ;
34 f o r ( H o s t P a i r p a i r : e n t r y . g e t V a l u e ( ) ) { 35 tempMidRules = deepCopy ( midRules ) ; 36 f o r ( Rule r u l e : tempMidRules ) { 37 Rule expandedRule = new Rule ( . . . ) ;
38 f o r ( S t r i n g i f T e x t : r u l e . g e t I f L i s t ( ) ) { 39 i f ( i f T e x t . c o n t a i n s (TGT) ) {
40 p r e f i x = getHostName ( i f T e x t ) ;
41 i f ( p a i r . g e t 1 s t ( ) . getName ( ) . s t a r t s W i t h ( p r e f i x ) ) {
42 expandedRule . a d d I f (
43 unTagging ( p r e f i x , p a i r . g e t 1 s t ( ) ) ) ;
44 } e l s e {
45 expandedRule . a d d I f ( i f T e x t ) ;
46 }
47 } e l s e i f ( i f T e x t . c o n t a i n s (ALT) ) { 48 p r e f i x = getHostName ( i f T e x t ) ;
49 i f ( p a i r . g e t 2 n d ( ) . getName ( ) . s t a r t s W i t h ( p r e f i x ) ) {
50 expandedRule . a d d I f (
51 unTagging ( p r e f i x , p a i r . g e t 1 s t ( ) ) ) ;
52 } e l s e {
53 expandedRule . a d d I f ( i f T e x t ) ;
54 }
55 } e l s e {
56 expandedRule . a d d I f ( i f T e x t ) ;
57 }
58 }
59 f o r ( S t r i n g thenText : r u l e . g e t T h e n L i s t ( ) ) { 60 i f ( thenText . c o n t a i n s (TGT) ) {
61 p r e f i x = getHostName ( thenText ) ;
62 i f ( p a i r . g e t 1 s t ( ) . getName ( ) . s t a r t s W i t h ( p r e f i x ) ) {
63 expandedRule . addThen (
64 unTagging ( p r e f i x , p a i r . g e t 2 n d ( ) ) ) ;
65 } e l s e {
66 expandedRule . addThen ( thenText ) ;
67 }
68 } e l s e i f ( thenText . c o n t a i n s (ALT) ) {
69 p r e f i x = getHostName ( thenText ) ;
70 i f ( p a i r . g e t 2 n d ( ) . getName ( ) . s t a r t s W i t h ( p r e f i x ) ) {
71 expandedRule . addThen (
72 unTagging ( p r e f i x , p a i r . g e t 2 n d ( ) ) ) ;
73 } e l s e {
74 expandedRule . addThen ( thenText ) ;
75 }
76 } e l s e {
77 expandedRule . addThen ( thenText ) ;
78 }
79 }
80 }
81 }
82 f o r ( Rule tempRule : tempMidRules ) { 83 i f ( ! midRules . c o n t a i n s ( tempRule ) )
84 midRules . add ( tempRule ) ; // Add i n t e r m e d i a t e d a t a
85 }
86 midRules . r e m o v e A l l ( expandedRules ) ;
87 expandedRules = midRules ;
88 }
89 r u l e s . a d d A l l ( expandedRules ) ; 90 }
91 return r u l e s ;
付 録 B 最適策提示アルゴリズム記述
第 4 章の節 4.3 で述べた最適回避策提示アルゴリズムの大まかな記述をコードリスト B.1に示す.なお,この記述は計算量を検証・理解するために用意したもので,プログラ ムの主要な記述のみを取りあげたダイジェストである事に注意されたい.
コードリストB.1: 最適策提示アルゴリズム記述 1 // C l a s s e s
2 Plan p l a n ; // A b s t r a c t i o n o f workaround p l a n
3 Cost c o s t ; // Time , Monetary c o s t , Performance and r e l i a b i l i t y 4 Weight w e i g h t ; // Weight c o e f f i c i e n t f o r c o s t s
5 P r e d i c t i o n p r e d i c t i o n ; // C o l l e c t i o n o f p r e d i c t i o n f a c t s 6
7 // V a r i a b l e s
8 L i s t<S t r i n g> r e s u l t F a c t s ; // R e s u l t from I n f e r e n c e Engine 9
10 // C o n s t a n t s
11 Cost BASIS ; // B a s i s d a t a from c o n f i g u r a t i o n f i l e
12 Weight WEIGHT; // Weight d a t a from c o n f i g u r a t i o n f i l e 13
14 // C r e a t e a b s t r a c t c l a s s e s from t h e Engine r e s u l t 15 f o r ( S t r i n g f a c t : r e s u l t F a c t s ) {
16 i f ( P r e d i c t i o n . i s P r e d i c t i o n ( f a c t ) ) { 17 p r e d i c t i o n . s e t ( f a c t ) ;
18 } e l s e i f ( P r e d i c t i o n . i s R e a s o n ( f a c t ) ) { 19 p r e d i c t i o n . s e t R e a s o n ( f a c t ) ;
20 } e l s e i f ( i s I n f e r e n c e R e s u l t ( f a c t ) ){ 21 f o r ( Plan tempPlan : p l a n s ) {
22 i f ( tempPlan . getRuleName ( ) . e q u a l s ( getRuleName ( f a c t ) ) ) {
23 p l a n = tempPlan ;
24 break;
25 }
26 }
27 p l a n . addAction ( g e t A c t i o n ( f a c t ) ) ;