応用情報技術者 2012年 秋期 午後 問04
データ分析処理の並列化に関する次の記述を読んで、設問1~3に答えよ。
K社は、様々な商品の売行きを調査し分析した結果を、顧客企業に提供している。K社で使用しているアプリケーションプログラムの全体の流れを図1に示す。変換処理には変換サーバを、分析処理には分析サーバを用いている。変換処理の結果は、ファイル転送処理によって、変換サーバから分析サーバにファイル転送される。
最近では、分析対象となるデータの種類や量が増加するだけでなく、分析結果をより短時間で提供することが求められている。そこでK社では、処理時間を大幅に短縮する方策を検討することにした。

〔変換処理プログラムの改良〕
変換処理は、分析処理がしやすいように入力ファイルを加工する処理であり、入力ファイルごとに異なるレコードフォーマットやコードを統一する。変換処理のステップを図2に示す。
変換処理の時間を短縮するために、プログラムの改良を実施した。改良前の各ステップの処理時間の比率は、フォーマット変換処理が20%、コード変換処理が30%であった。プログラムの改良によって、フォーマット変換処理の時間は1/4に、コード変換処理の時間は1/3に短縮された。その他の処理のプログラムは変更せず、処理時間の短縮もない。これによって変換処理はa倍の性能向上が達成された。

〔分析処理の並列化〕
分析処理は、変換処理が出力した結果ファイルを基に、顧客に合わせた分析レポートを出力する。従来は、1台のサーバで全ての処理を逐次実行してきた。処理1件当たりの処理時間は、顧客からの処理要件や、データの種類や量によってその都度異なるが、最短で1時間、最長で3時間である。
分析処理の時間を短縮するために、分析サーバを3台用意し、処理を並行して実行することにした。ただし、各分析サーバに割り当てられた処理は逐次実行し、1件の処理を複数のサーバに分散して実行することはない。複数の処理を1台のサーバで並行実行することもない。
3台の分析サーバに処理を割り当てる方法として、方法Aと方法Bを考えた。
(1)方法A
各分析サーバで実行する件数が均等になるように処理を割り振る(図3)。

(2)方法B
分析サーバ間の処理時間のばらつきが小さくなるように、bした分析サーバに、順次、次の処理を割り当てる(図4)。

方法Aの場合、①分析サーバ間の処理時間のばらつきが大きくなり過ぎて、予想していた時間内に分析処理が完了しないことがある。一方、方法Bの場合、割り当てられた全部の処理を完了する時間が最も長く掛かる分析サーバでも、他の分析サーバよりも最大でc時間長く掛かるだけで済む。
分析処理全体の処理時間の短縮を考え、方法Bを採用した。
〔システム構成の検討〕
システム構成案として、分析処理のデータの入出力方法が異なる構成案1と構成案2を考え、ファイル転送処理と分析処理における特徴について考察した。
(1) 構成案1
個々の分析サーバがもつ内蔵ディスクでデータの入出力を行う(図5)。

(2) 構成案2
どの分析サーバからもアクセスできるファイルサーバでデータの入出力を行う(図6)。

ファイル転送処理において、構成案1では、変換処理結果のファイルを、全分析サーバに対し、それぞれ別々にファイル転送する。変換サーバは、ファイル転送時間の短縮のために、複数のファイル転送処理を同時に実行する。しかし、分析サーバが増えた場合は、変換サーバの内蔵ディスクからの読み込みやdがボトルネックにならないか考慮する必要がある。一方、構成案2の場合、変換処理の結果は、ファイルサーバにだけファイル転送すればよいので、分析サーバが増えた場合でもこれらがボトルネックになることはない。
分析処理において、構成案1の場合、分析に必要なデータは個々の分析サーバの内蔵ディスクにあるので、分析サーバが増えてもdはボトルネックにならない。一方、構成案2の場合、データはファイルサーバにあるので、分析サーバが増えた場合は、dだけでなくeについても、ボトルネックにならないか考慮する必要がある。
ある分析サーバに障害が起きたときは、別の分析サーバが処理を引き継ぐ。その際の処理時間の遅延は無視できるとした場合、構成案2におけるシステム全体の稼働率は、変換サーバ及び各分析サーバの稼働率をx、ファイルサーバの稼働率をyとしたとき、fと表すことができる。ファイルサーバの稼働率がシステムの稼働率に大きく影響するので、②可用性向上のために対策を施す必要がある。
設問1:
本文中のaに入れる適切な数値を答えよ。答えは、小数第2位を切り捨てて、小数第1位まで求めよ。
模範解答
a:1.5
解説
解答の論理構成
-
変換処理全体のうち、時間を要する部分は
・「フォーマット変換処理が20%」
・「コード変換処理が30%」
と【問題文】に示されています。よって改良前の総処理時間を とすると- フォーマット変換:
- コード変換 :
- その他 :
です。
-
改良によって
・「フォーマット変換処理の時間は1/4」
・「コード変換処理の時間は1/3」
に短縮されます。したがって改良後の各時間は- フォーマット変換:
- コード変換 :
- その他 :(変更なし)
-
改良後の総処理時間は
-
性能向上倍率(スピードアップ)は
-
「小数第2位を切り捨てて、小数第1位まで」とあるので
したがって
a = 1.5
a = 1.5
誤りやすいポイント
- 「1/4」「1/3」を“25%短縮”や“33%短縮”と読み違え、 などと計算してしまう。
- 改良部分の合計を 50%だから半分と早合点し、その他 50%を見落とす。
- 切り捨て指定を四捨五入と誤解し 1.6 としてしまう。
FAQ
Q: 時間比率が与えられている場合、総処理時間を 1 と置くのは必須ですか?
A: 必須ではありませんが、最も計算が簡単です。総時間を任意の値にしても倍率は同じになります。
A: 必須ではありませんが、最も計算が簡単です。総時間を任意の値にしても倍率は同じになります。
Q: 改善率(%)で答える問題との違いは?
A: 改善率は % で求めます。本問は倍率そのものを求めるため割り算で直に算出します。
A: 改善率は % で求めます。本問は倍率そのものを求めるため割り算で直に算出します。
Q: Amdahl の法則と同じ考え方ですか?
A: はい。「改良可能な一部だけが高速化されたとき、全体性能はどこまで向上するか」という観点は Amdahl の法則と一致します。
A: はい。「改良可能な一部だけが高速化されたとき、全体性能はどこまで向上するか」という観点は Amdahl の法則と一致します。
関連キーワード: 性能評価、ボトルネック、Amdahlの法則、スピードアップ
設問2:〔分析処理の並列化〕について、(1)〜(3)に答えよ。
(1)本文中の下線①について、15件の分析処理を行う場合、分析サーバごとの処理時間の差は最大で何時間になるか。数値を答えよ。
模範解答
10
解説
解答の論理構成
- 前提整理
- 問題文は、方法Aについて「各分析サーバで実行する件数が均等になるように処理を割り振る」と述べています。
- また分析処理は「最短で1時間、最長で3時間」と記載されています。
- 対象件数は「15件」、分析サーバは「3台」です。
- 件数の均等割り
- 各サーバは必ず5件ずつ処理します。
- 最大・最小の処理時間
- 1件あたり最長は「3時間」なので、最長シナリオは
- 1件あたり最短は「1時間」なので、最短シナリオは
- サーバ間の処理時間差
- 最大差は
- 結論
- 下線①「分析サーバ間の処理時間のばらつき」は最大「10」時間になります。
誤りやすいポイント
- 件数を揃える方法Aのルールを読み飛ばし、タスク数の偏りを許してしまう。
- 「最長で3時間」「最短で1時間」を平均値と勘違いし、ばらつきの幅を過小評価する。
- 15件を3台で割るときに端数が出ると誤認し、計算過程で6件‐5件‐4件などと配分してしまう。
- 差を求めずに最長時間「15時間」だけを答えてしまい、設問の意図を外す。
FAQ
Q: 各サーバに5件ずつ割り当てても、実際には処理時間を考慮して再配置できるのでは?
A: 方法Aは「件数が均等になるように」だけを条件にしています。処理時間を考慮するのは方法Bの役割です。
A: 方法Aは「件数が均等になるように」だけを条件にしています。処理時間を考慮するのは方法Bの役割です。
Q: 最長「3時間」、最短「1時間」はそれぞれ単一の処理時間の上限・下限ですか?
A: はい。「処理1件当たりの処理時間は…最短で1時間、最長で3時間」とある通り、個々の処理がこの範囲に収まります。
A: はい。「処理1件当たりの処理時間は…最短で1時間、最長で3時間」とある通り、個々の処理がこの範囲に収まります。
Q: 15件を超える場合でも同じ手順で差を算定できますか?
A: 件数とサーバ台数が与えられれば、最大差=(件数/台数)×(最長-最短)の式で求められます。ただし端数が出た場合は別途調整が必要です。
A: 件数とサーバ台数が与えられれば、最大差=(件数/台数)×(最長-最短)の式で求められます。ただし端数が出た場合は別途調整が必要です。
関連キーワード: ばらつき、タスク分散、スケジューリング、負荷均等化、並列処理
設問2:〔分析処理の並列化〕について、(1)〜(3)に答えよ。
(2)本文中のbに入れる適切な字句を10字以内で答えよ。
模範解答
b:分析処理が終了
解説
解答の論理構成
- 方法Bの説明
【問題文】では「分析サーバ間の処理時間のばらつきが小さくなるように、bした分析サーバに、順次、次の処理を割り当てる(図4)。」とあります。 - “ばらつきが小さくなる”理由
逐次実行で処理時間が1~3時間と幅があるため、同じ件数を静的に配分する方法Aでは処理が早く終わったサーバが遊休となり、遅いサーバがボトルネックになります。ばらつきを抑えるには“空いたサーバへ即時に次の処理を渡す”動的スケジューリングが不可欠です。 - 最適語句の導出
処理が終わったサーバこそ次の処理を担わせる対象です。従って b に入るのは「分析処理が終了」。
誤りやすいポイント
- 「アイドルになった」「空いた」など漠然とした表現を入れると原文の趣旨とずれます。
- 「処理を割り当てる」の主語は“分析サーバ”であり、サーバ側の状態を言い切る必要があります。
- 方法A・Bの違いを“件数均等/時間均等”とだけ覚えると、本設問のような動的割当てのキーワードが抜け落ちやすいです。
FAQ
Q: なぜ“終了”という言葉が必須なのですか?
A: 「処理時間のばらつきが小さくなるように」という目的を達成する条件は、“処理を終えた瞬間”に次の仕事を渡すことです。「終了」と明言することでその瞬間を特定できます。
A: 「処理時間のばらつきが小さくなるように」という目的を達成する条件は、“処理を終えた瞬間”に次の仕事を渡すことです。「終了」と明言することでその瞬間を特定できます。
Q: 方法Bはロードバランシングのどのタイプに当たりますか?
A: 各処理が終わるたびに再割当てを行うため、動的ロードバランシング(ダイナミック・スケジューリング)と呼ばれる方式に該当します。
A: 各処理が終わるたびに再割当てを行うため、動的ロードバランシング(ダイナミック・スケジューリング)と呼ばれる方式に該当します。
Q: 方法Aでも処理件数が多ければ平均化されるのでは?
A: 処理1件あたりの時間のばらつきが大きい(1~3時間)ため、件数を均等にしても残り時間の差が拡大しやすく、最長サーバ待ちが発生します。方法Bの方が確実に全体の終了時刻を短縮できます。
A: 処理1件あたりの時間のばらつきが大きい(1~3時間)ため、件数を均等にしても残り時間の差が拡大しやすく、最長サーバ待ちが発生します。方法Bの方が確実に全体の終了時刻を短縮できます。
関連キーワード: ロードバランシング、動的スケジューリング、並列処理、ボトルネック
設問2:〔分析処理の並列化〕について、(1)〜(3)に答えよ。
(3)本文中のcに入れる適切な数値を答えよ。
模範解答
c:3
解説
解答の論理構成
-
処理1件あたりの所要時間
【問題文】には「最短で1時間、最長で3時間である」とあります。したがって1件の分析処理が追加されたときにサーバへ加わる“重み”は最大で3時間です。 -
方法Bの割当アルゴリズム
方法Bは「分析サーバ間の処理時間のばらつきが小さくなるように、bした分析サーバに、順次、次の処理を割り当てる」と記述されています。ここで “bした” = “最も累積時間が短い” サーバと読み取れます(最も早く終わるサーバに次の仕事を載せる典型的な負荷分散方式)。 -
最大ばらつきの上限
この方式では、新しい処理を割り当てる直前に「最も遅いサーバ」と「最も早いサーバ」の累積時間差が だったとします。
- 追加ジョブは必ず “最も早いサーバ” に積まれる。
- 追加後の差は 。
- 増分はジョブ時間の上限 3時間。
よって 。
負荷分散を繰り返しても差を 3時間より大きく拡大させる要因はありません。最も遅いサーバと他サーバの差の上限=「1ジョブの最大時間」である 3時間です。
- 設問への適用
従って「他の分析サーバよりも最大でc時間長く掛かるだけ」という上限値は3時間となり、 c = 3
誤りやすいポイント
- 「3台だから3時間÷3=1時間差」と誤って平均化してしまう
- 方法Aと方法Bの図を見て “9件限定” と読み取り、一般化を忘れる
- “最も長いサーバが3時間長い” を「3時間+3時間=6時間差」と二重に数えてしまう
FAQ
Q: サーバ台数が4台になったら最大差も4時間ですか?
A: いいえ。上限は「1ジョブの最大処理時間」に等しいので台数に依存せず 3時間のままです。
A: いいえ。上限は「1ジョブの最大処理時間」に等しいので台数に依存せず 3時間のままです。
Q: ばらつきを確率的に評価する必要はありますか?
A: 本設問は最悪ケースの理論上限のみを尋ねているため確率計算は不要です。
A: 本設問は最悪ケースの理論上限のみを尋ねているため確率計算は不要です。
Q: 方法Aより方法Bが常に速いのですか?
A: 大半のケースで短縮できますが、全ジョブが同一時間(例:すべて2時間)の場合は両方式で完了時刻が一致します。
A: 大半のケースで短縮できますが、全ジョブが同一時間(例:すべて2時間)の場合は両方式で完了時刻が一致します。
関連キーワード: 負荷分散、累積実行時間、並列処理、最悪ケース解析
設問3:〔システム構成の検討〕について、(1)〜(3)に答えよ。
(1)本文中のd、eに入れる適切な字句を解答群の中から選び、記号で答えよ。
解答群
ア:ネットワークの帯域
イ:ファイルサーバのディスクの入出力
ウ:分析サーバのCPU処理能力
エ:分析サーバの内蔵ディスクからの読込み
オ:変換サーバの内蔵ディスクへの書込み
模範解答
d:ア
e:イ
解説
解答の論理構成
- ボトルネックとして意識すべき箇所を、構成案1と構成案2それぞれで比較する。
- 問題文には次の二つの引用がある。
- 「変換サーバは、ファイル転送時間の短縮のために、複数のファイル転送処理を同時に実行する。しかし、分析サーバが増えた場合は、変換サーバの内蔵ディスクからの読み込みやdがボトルネックにならないか考慮する必要がある。」
- 「分析に必要なデータは個々の分析サーバの内蔵ディスクにあるので、分析サーバが増えてもdはボトルネックにならない。一方、構成案2の場合、データはファイルサーバにあるので、分析サーバが増えた場合は、dだけでなくeについても、ボトルネックにならないか考慮する必要がある。」
- 構成案1では、変換サーバと複数の分析サーバが“同時に”ファイルをやり取りするため、共通に使用する回線が輻輳しやすい。したがって d には「ネットワークの帯域」が入る。
- 構成案2はファイルサーバ集中型なので、ネットワーク帯域に加えてファイルサーバ自身のストレージ I/O が競合する。よって e には「ファイルサーバのディスクの入出力」が入る。
- 解答:
- d:ア(ネットワークの帯域)
- e:イ(ファイルサーバのディスクの入出力)
誤りやすいポイント
- 「分析サーバのCPU処理能力」を選んでしまう
→ 問題文は I/O と通信の混雑を論点にしており、CPU については触れていない。 - 「分析サーバの内蔵ディスクからの読込み」を e に設定するミス
→ 構成案2では“ファイルサーバ”のディスク I/O が競合対象であることを見落としやすい。 - 構成案1と構成案2で共通するボトルネックと追加で増えるボトルネックを整理せずに暗記で選択してしまう。
FAQ
Q: ネットワーク帯域がボトルネックになるのはなぜですか?
A: 複数台の分析サーバへ同時にファイルを転送すると、同じ回線を共有するため帯域が分割され、トラフィックが集中します。特に大容量ファイル転送では帯域枯渇が顕著になります。
A: 複数台の分析サーバへ同時にファイルを転送すると、同じ回線を共有するため帯域が分割され、トラフィックが集中します。特に大容量ファイル転送では帯域枯渇が顕著になります。
Q: ファイルサーバ I/O が問題になるのは構成案2だけですか?
A: はい。構成案1では各分析サーバがローカルディスクを使うため、集中アクセスは発生しません。構成案2では一台のファイルサーバに全分析サーバがアクセスし、同一ストレージを同時利用するため I/O 競合が起こります。
A: はい。構成案1では各分析サーバがローカルディスクを使うため、集中アクセスは発生しません。構成案2では一台のファイルサーバに全分析サーバがアクセスし、同一ストレージを同時利用するため I/O 競合が起こります。
Q: ネットワーク帯域を広げればファイルサーバ I/O も解決しますか?
A: いいえ。ネットワーク帯域はデータ搬送の速度を改善しますが、ストレージ装置の読み書き速度は別問題です。両方を監視し、必要であればストレージの RAID 構成変更やキャッシュ増設などの対策が必要です。
A: いいえ。ネットワーク帯域はデータ搬送の速度を改善しますが、ストレージ装置の読み書き速度は別問題です。両方を監視し、必要であればストレージの RAID 構成変更やキャッシュ増設などの対策が必要です。
関連キーワード: ネットワーク帯域、ストレージI/O, ファイル転送、ボトルネック、並列処理
設問3:〔システム構成の検討〕について、(1)〜(3)に答えよ。
(2)本文中のfに入れる適切な式を答えよ。ここで、ネットワークの稼働率は1とする。
模範解答
f:
解説
解答の論理構成
-
必須構成要素の洗い出し
本文には
「変換サーバ及び各分析サーバの稼働率をx、ファイルサーバの稼働率をy」
とあり、ネットワークは「稼働率は1」と明示されています。したがって稼働判定に関わる要素は
・変換サーバ(1台)
・分析サーバ(3台)
・ファイルサーバ(1台)
の3種類です。 -
冗長性(並列性)の有無を判断
さらに
「ある分析サーバに障害が起きたときは、別の分析サーバが処理を引き継ぐ」
とあるため、分析サーバ群は並列冗長構成(少なくとも1台動いていれば業務継続可能)です。一方、変換サーバとファイルサーバは単一構成なのでどちらかが停止すると業務停止になります。 -
部分系ごとの稼働率計算
・変換サーバが稼働している確率 →
・ファイルサーバが稼働している確率 →
・3台の分析サーバのうち少なくとも1台が稼働している確率
-
システム全体の稼働率
直列要件(全コンポーネントが同時に使えること)のため、上記3確率を乗算します。ネットワークは1なので式に含めません。
これが f に入る式です。
誤りやすいポイント
- 「変換サーバ及び各分析サーバの稼働率をx」と書かれているため、変換サーバも“3台のうちの1台”と勘違いしやすい。変換サーバは別個の1台として直列要件になります。
- 並列冗長部分の計算で や としてしまうミスが頻発します。少なくとも1台稼働は の形で求めるのが定石です。
- ネットワークの稼働率が1と与えられている点を見落とし、不要な乗算項を入れてしまうと誤答になります。
FAQ
Q: 故障確率が独立している前提はどこに書いてありますか?
A: 本文に明示されてはいませんが、情報処理技術者試験では個別サーバの稼働率を与え、冗長効果を問う場合は独立故障を前提とするのが通例です。
A: 本文に明示されてはいませんが、情報処理技術者試験では個別サーバの稼働率を与え、冗長効果を問う場合は独立故障を前提とするのが通例です。
Q: 分析サーバが4台以上になった場合でも式は流用できますか?
A: はい。“3” を “n” に置き換えて とすれば一般化できます。
A: はい。“3” を “n” に置き換えて とすれば一般化できます。
Q: ファイルサーバを2台冗長化したらどうなりますか?
A: 2台並列冗長ならファイルサーバ系の稼働率は になります。全体式は です。
A: 2台並列冗長ならファイルサーバ系の稼働率は になります。全体式は です。
関連キーワード: システム稼働率、並列冗長化、可用性計算、直列システム、独立故障
設問3:〔システム構成の検討〕について、(1)〜(3)に答えよ。
(3)本文中の下線②について、ファイルサーバの稼働率を高めるための対策として適切なものを、解答群の中から全て選び、記号で答えよ。
解答群
ア:ファイルサーバのディスクコントローラ装置を二重化する。
イ:ファイルサーバのディスクを、よりシークタイムが短いものに交換する。
ウ:ファイルサーバのディスクをRAIDOで構成する。
エ:ファイルサーバのディスクをRAID1で構成する。
オ:ファイルサーバのディスクをRAID6で構成する。
模範解答
ア、エ、オ
解説
解答の論理構成
- 可用性(稼働率)とは、障害が発生してもシステムを止めない仕組みを指します。本文は「②可用性向上のために対策を施す必要がある」と述べ、ファイルサーバが単一障害点(SPOF)にならないよう対策を講じることを要求しています。
- 「ファイルサーバの稼働率を高める」うえで有効なのは、
・経路や装置を“二重化”して故障点を排除すること
・ディスク自体を“冗長化”してデータ損失を防止すること
です。 - 解答群を確認すると、
ア:ディスクコントローラ装置の二重化 → コントローラ障害時も運用継続=可用性向上。
イ:よりシークタイムが短いディスク → 性能改善であり可用性は変わらない。
ウ:RAIDO(RAID0) → ストライピングのみで冗長性ゼロ=障害に弱く可用性低下。
エ:RAID1 → ミラーリングにより片系故障でも運用継続=可用性向上。
オ:RAID6 → 2本まで同時故障に耐えるパリティ分散=可用性向上。 - したがって「ファイルサーバの稼働率を高めるための対策」として適切なのは
ア、エ、オ になります。
誤りやすいポイント
- RAID0(解答群ウ)は“高速化”目的のストライピングのみで耐障害性が無いことを忘れがちです。
- “シークタイムが短いディスク”の交換(解答群イ)はスループットは向上しますが、故障が発生すればサービスは止まるため稼働率には寄与しません。
- 「二重化=ディスクの話だけ」と早合点し、コントローラ二重化(解答群ア)を見落とすケースが多いです。コントローラが単一ではRAIDを組んでもSPOFが残ります。
FAQ
Q: RAID1 と RAID6 のどちらを選択すべきですか?
A: 目的とディスク本数で選びます。RAID1 は2台1組でシンプルに高可用性を実現、性能も読み出しに強いです。RAID6 は少なくとも4本必要ですが2本同時故障まで耐え、より高い可用性を得られます。
A: 目的とディスク本数で選びます。RAID1 は2台1組でシンプルに高可用性を実現、性能も読み出しに強いです。RAID6 は少なくとも4本必要ですが2本同時故障まで耐え、より高い可用性を得られます。
Q: コントローラ二重化だけで十分ではないのですか?
A: コントローラ二重化は経路の冗長化ですが、ディスク自体が壊れた場合はサービス停止につながります。したがって RAID1 や RAID6 のようなディスク冗長化も併用する必要があります。
A: コントローラ二重化は経路の冗長化ですが、ディスク自体が壊れた場合はサービス停止につながります。したがって RAID1 や RAID6 のようなディスク冗長化も併用する必要があります。
Q: RAID0 を採用しつつ可用性を確保する方法はありますか?
A: RAID0 だけでは可用性を確保できません。可用性を維持したい場合は RAID10(RAID1+0)など、ミラーリングを含む構成にする必要があります。
A: RAID0 だけでは可用性を確保できません。可用性を維持したい場合は RAID10(RAID1+0)など、ミラーリングを含む構成にする必要があります。
関連キーワード: 可用性、冗長化、RAID1, RAID6, シングルポイントオブフェイルャ


