「AP過去問 令和6年度秋期 午後 問4 システムアーキテクチャ」の版間の差分

提供:yonewiki
 
(同じ利用者による、間の45版が非表示)
1行目: 1行目:
<yjavascript>
<yjavascript>
</script>
</script>
<!--script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_HTML-full'-->
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_HTML-full'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_HTML-full'>
   MathJax.Hub.Config({
   MathJax.Hub.Config({
6行目: 7行目:
     tex2jax: {
     tex2jax: {
       preview: "none",
       preview: "none",
       inlineMath: [['\\$','\\$'],['\\(','\\)']],
       inlineMath: [['\\@','\\@'],['\\(','\\)']],
       displayMath: [['
[Math Processing Error]'],['\\[','\\]']],
       displayMath: [['
[Math Processing Error]'],['\\[','\\]']],
       skipTags: ["code"],
       skipTags: ["code"],
559行目: 560行目:




 小数が使われていれば浮動小数点演算で、使われていなければ整数演算です。割り算の結果は整数÷整数でも浮動小数点数演算になる場合がありますが、設問では割り算が存在しないので、考える必要がありません。簡単な問題です。したがって
 小数が使われていれば浮動小数点演算で、使われていなければ整数演算です。割り算の結果は整数÷整数でも浮動小数点数演算になる場合がありますが、設問では割り切れない割り算が存在しないので、考える必要がありません。簡単な問題です。したがって




580行目: 581行目:
}
}
</style>
</style>
<script>
</yjavascript>
<div class="imadake-left">
<div class="imadake-left">
$$  
$$  
587行目: 590行目:
$$
$$
</div>
</div>
<script>
 
</yjavascript>




627行目: 629行目:
$$  
$$  
   \begin{align*}
   \begin{align*}
   \mathbf{\text{演算性能[GFLOPS]}} = \mathbf{\text{1コアの演算能力[GFLOPS/コア]}} \times \mathbf{\text{コア数[コア]}} = 500 \times 4 = 2,000\mathbf{\text{[GFLOPS]}}  
   \mathbf{\text{演算性能[GFLOPS]}} &= \mathbf{\text{1コアの演算能力[GFLOPS/コア]}} \times \mathbf{\text{コア数[コア]}} \\
  &= 500 \times 4 \\
  &= 2,000\mathbf{\text{[GFLOPS]}}  
   \end{align*}  
   \end{align*}  
$$
$$
687行目: 691行目:


<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
b 10</span>[秒]
c 10</span>[秒]




705行目: 709行目:
$$  
$$  
   \begin{align*}
   \begin{align*}
   \mathbf{\text{通信速度[M Byte/s]}} = \frac{1,000\mathbf{\text{[M Bit/s]}} }{ 8\mathbf{\text{[Bit/Byte]}} } = \frac{1,000}{8} = 125\mathbf{\text{[ M Byte/s]}}  
   \mathbf{\text{通信速度[M Byte/s]}} = \frac{1,000\mathbf{\text{[M Bit/s]}} }{ 8\mathbf{\text{[Bit/Byte]}} } = \frac{1,000}{8}  
   \end{align*}  
   \end{align*}  
$$
$$
</div><script></yjavascript>
</div><script></yjavascript>
 
<yjavascript></script><div class="imadake-left">
$$ \require{enclose}\begin{align}
$$ \require{enclose}\begin{align}
125 \\
125 \\
8 \rlap{\enclose{longdiv}{\phantom{ 1000 }}} \hspace{0.5em} 1000 \phantom{} \\
8 \rlap{\enclose{longdiv}{\phantom{ 1000 }}} \hspace{0.5em} 1000 \phantom{} \\
\rlap{\underline{\phantom{ 48.00 }}} 48.00 \phantom{} \\
    \frac{8 \phantom{00}}{20 \phantom{0}} \\
1.000 \phantom{00} \\
    \frac{16 \phantom{0}}{\phantom{0} 40 }  \\
\rlap{\underline{\phantom{ 600 }}} 600  \phantom{00} \\
\frac{\phantom{0} 40 }{\phantom{00} 0 }
4000 \phantom{0} \\
\rlap{\underline{\phantom{ 3600 }}} 3600  \phantom{0} \\
4000 \phantom{} \\
\rlap{\underline{\phantom{ 3600 }}} 3600  \phantom{} \\
400 \phantom{} \\
\end{align}$$
\end{align}$$
</div><script></yjavascript>
<yjavascript></script><div class="imadake-left">
$$
  \begin{align*}
  \phantom{\mathbf{\text{通信速度[M Byte/s]}}} = 125\mathbf{\text{[ M Byte/s]}}
  \end{align*}
$$
</div><script></yjavascript>
 データ量を通信速度で割ると、転送にかかる時間が求められます。
・レンダリングのデータ量は500[MByte]
・通信速度は125[MByte/s]
<yjavascript></script><div class="imadake-left">
$$
  \begin{align*}
  \mathbf{\text{処理時間[秒]}} = \frac{\mathbf{\text{データ量[GByte]}} }{ \mathbf{\text{転送速度[GByte/s]}} } = \frac{500}{125} 
  \end{align*}
$$
</div><script></yjavascript>
<yjavascript></script><div class="imadake-left">
$$ \require{enclose}\begin{align}
4 \\
125 \rlap{\enclose{longdiv}{\phantom{ 500 }}} \hspace{0.5em} 500 \phantom{} \\
    \frac{500 \phantom{}}{\phantom{00} 0 } 
\end{align}$$
</div><script></yjavascript>
<yjavascript></script><div class="imadake-left">
$$
  \begin{align*}
  \phantom{\mathbf{\text{処理時間[秒]}}} = 4\mathbf{\text{[秒]}}
  \end{align*}
$$
</div><script></yjavascript>
 したがって
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
d 4</span>[秒]
 が答えです。
(2)
 APサーバへレンダリング結果を返信するのに [e] 秒掛かる。の穴埋めです。
 設問を(1)(2)とで分ける意味がよくわかりませんが、(1)は割り切れる整数が答えなんやで、と教えてくれているんすかね。やさしいのか、やさしくないのかわかりませんが、鞭(むち)打つようなな問題ばかりのくせに、ちょっぴり飴を与える出題者。えぐい。(2)は小数第2位で四捨五入だそうな。
 さきほどの転送時間の入力が500[MByte]だったのが、帰りは出力結果の100[GByte]になります。(1)の続き的な問題なんすよね。なんで分けるんだろ、いろいろ不安になってくるよね。
 データ量を通信速度で割ると、転送にかかる時間が求められます。
・レンダリングのデータ量は500[MByte]
・通信速度は125[MByte/s]
<yjavascript></script><div class="imadake-left">
$$
  \begin{align*}
  \mathbf{\text{処理時間[秒]}} = \frac{\mathbf{\text{データ量[GByte]}} }{ \mathbf{\text{転送速度[GByte/s]}} } = \frac{100}{125} 
  \end{align*}
$$
</div><script></yjavascript>
<yjavascript></script><div class="imadake-left">
$$ \require{enclose}\begin{align}
0.8 \\
125 \rlap{\enclose{longdiv}{\phantom{ 100.0 }}} \hspace{0.5em} 100 \phantom{.0} \\
    \frac{100.0 \phantom{}}{\phantom{000.} 0 } 
\end{align}$$
</div><script></yjavascript>
<yjavascript></script><div class="imadake-left">
$$
  \begin{align*}
  \phantom{\mathbf{\text{処理時間[秒]}}} = 0.8\mathbf{\text{[秒]}}
  \end{align*}
$$
</div><script></yjavascript>
 したがって
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
e 0.8</span>[秒]
 が答えです。小数第2位で四捨五入なんてしなくていい答えですね。これまた不安になります。わざわざ分けてまで作った問題なのに四捨五入の指示が意味がないっていうね。
(3)
 オンラインユーザ数取得処理(表5)では、
・インプットデータ量が 100MB
・アウトプットデータ量が 0.1MB
 となっています。インプットデータをいちいちAPサーバに転送していると容量が大きいですが、アウトプットデータだけなら容量が少ないというのが理由になると思います。これを35字にまとめると
1   5   10 11      20
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
DBサーバの処理結果 のデータ量が入力デー</span>
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
タを受け取るより少な く済むため</span>(35文字)
21 25   30    35
 とかで正解になります。いろいろ書きようのある答えなので、うまく伝えられるかがカギになる問題です。
(4)
 素材の送信処理について、変更を加えるとしたらという問題ですが、本文に
 <span style = "background:linear-gradient(transparent 75%, #ff7f7f 75%); font-weight:bold; ">動画配信者のPCへ送信する素材データは特定の素材データに偏っており、各素材データの更新頻度も高くない</span>とあるので、
 特定の素材をNASではなくAPサーバのSSDに置くのかなと思ったのですが、全部を置いても良さそうです。どっちが正しいんだろうな。SSDの空き容量に余裕があれば全部、移動でしょうね。ほとんど使われない素材の容量が膨大だったりすると全部を移動する意味はないような気もする。
1   5   10 11      20
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
素材データをNASか らAPサーバのSSD</span>
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
に移動する</span>(25文字)
21 25   30    35
あるいは
1   5   10 11      20
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
よく使う素材データを NASからAPサーバ</span>
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
のSSDに移動する</span>(29文字)
21 25   30    35
 が正解ですね。どっちの答えを出題者が求めているかは知りませんが、どっちも正解でないと困りますね。素材データ量についてや、SSDの空き容量については、なんにも言及してないし。解説本が発売されたら立ち読みでもしてきて、確認してみます。
設問3
(1)
 GPUサーバを手動で追加する [f] の対応を行う方針にした。一方で、オンラインユーザ数取得処理は、時間とともに断続的に追記される動画の視聴ログをリアルタイムに集計する処理であり、DBサーバの数を増やせないことから、DBサーバを [g] して対応という部分の穴埋めの選択問題ですね。選択肢の意味を理解しないと答えられない仕組みです。
スケールアウト/インは台数の増減による対応。アウトが増でインが減です。スケールアップ/ダウンは性能の増減による対応。アップが増でダウンが減です。この意味が理解できていれば。サーバを追加するがfなのでスケールアウトが対応し、gはDBサーバの数を増やせないことからといっているのでスケールアップの対応になります。したがって
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
f ア スケールアウト</span>
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
g イ スケールアップ</span>
 が答えです。
(2)
 表5から多次元分析とオンラインユーザ数取得処理のデータの特徴を読み取ればいいです。入力データ量が大きいことと、処理時間が長くなりそうなことを20字にまとめればいいです。
1   5   10 11      20
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; ">
入力データ量が大きく 処理時間が長い</span>(17文字)


 


 
 が答えです。ちょっとした計算が必要なので、ちょっとだけ情報処理科学計算がわかっていれば、日本語を読み解ければ、なんとか答えれそうな問題でしたね。スケールアウト/インとスケールアップ/ダウンは午前の問題でもよく出てくる問題なので、理解しておくといいですね。'''アウトが台数増'''。'''インが台数減'''、'''アップが性能増'''、'''ダウンが性能減'''、この対応をしっかり覚えよう。


 
 

2025年1月27日 (月) 00:23時点における最新版

'],['\\[','\\]']], skipTags: ["code"], processEscapes: true }, "HTML-CSS": { undefinedFamily: "'Neo Euler Medium', Meiryo, STIXGeneral, 'Arial Unicode MS', serif", webFont :"Neo Euler Medium" } }); AP 過去問題 午後に戻る。

AP過去問_令和6年度秋期_午後_問3_プログラミングの同じ回の前の問題へ移動。

AP過去問_令和6年度秋期_午後_問5_ネットワークの同じ回の次の問題へ移動。

令和6年度秋期 午後 問4 システムアーキテクチャ(AIプロンプト向け)

※AIはHTMLによる表形式を理解できるため、HTMLによる表記述スタイルに変更しました。

■データ処理機能の配置に関する次の記述を読んで、設問に答えよ。


 C社は、動画配信サービスを提供する会社であり、サービス内容が充実していることが人気を呼び、動画配信者数や動画視聴者数が増えている。動画配信者は、Webブラウザを用いて、ビデオカメラやスマートフォンで撮影した動画ファイルをC社のWebサイトにアップロードすると、Webサイト上で動画の編集・配信、広報、アクセス分析などの機能が利用できる。

 C社の動画配信サービスは、C社配信システム部が企画から運用までを担当している。配信システム部では、サービス内容の向上を目的に、動画編集機能を強化した動画配信者向けの新しいサービスを提供するシステム(以下、新システムという)を構築することにした。新システムの構築は、配信システム部のD君が担当することになった。


[新システムに必要な機能]

 D君は、現在の動画配信サービスの機能を基に、新システムに必要な動画配信者向け機能の機能要件を定義した。新システムに必要な機能一覧(抜粋)を表1に示す。


表1 新システムに必要な機能一覧(抜粋)

<table width="100%" border="2" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 6em;">機能名</td>
<td align="center" style="border: 2px solid;">機能概要</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">アップロード</td>
<td align="left" style="border: 2px solid;">動画配信者がビデオカメラやスマートフォンで撮影した動画をC社のWebサイトにアップロードして登録する機能</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">動画編集</td>
<td align="left" style="border: 2px solid;">C社のWebサイトに登録された動画を、Webブラウザを用いて編集する(カットする、結合する、BGM・テロップを挿入するなど)機能</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">配信準備</td>
<td align="left" style="border: 2px solid;">動画視聴者のネットワーク・環境に合わせた複数のビットレートの動画ファイルを作成する機能</td>
<tr>
<td align="left" style="border: 2px solid;">アクセス分析</td>
<td align="left" style="border: 2px solid;">動画が動画視聴者に何回アクセスされているかを、複数の分析軸(地域、年齢層、端末種別、アクセス動線など)から分析する機能</td>
</tr>
</table>


[新システムサーバ構成]

 D君は、新システムのサーバ構成を設計した。D君が設計した新システムのサーバ構成(抜粋)を図1に示す。また、SSDとHDDのアクセス速度を表2に、LANとインターネットの通信速度を表3に、各サーバのCPUとGPUの搭載数を表4に示す。なお、新システム内の負荷分散装置、サーバ、NASはLANで接続されている。


図1はAIでの回答では不必要なため省略します。


<style>
.table-container {
display: inline-block;
text-align: left;
margin: 20px;
}

.table-header {
display: flex;
justify-content: space-between;
margin-bottom: 5px;
}
</style>
<div><div class="table-container"><div align="center">表2 SSDとHDDのアクセス速度</div>
<table border="2" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 3em;">装置</td>
<td align="center" style="border: 2px solid; width: 8em;">読込速度</br>(Mバイト/秒)</td>
<td align="center" style="border: 2px solid; width: 8em;">書込速度</br>(Mバイト/秒)</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">SSD</td>
<td align="right" style="border: 2px solid;">500</td>
<td align="right" style="border: 2px solid;">400</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">HDD</td>
<td align="right" style="border: 2px solid;">250</td>
<td align="right" style="border: 2px solid;">150</td>
</tr>
</table>
</div>
<div class="table-container"><div align="center">表3 LANとインターネットの通信速度</div>
<table border="2" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 8em;">回線</td>
<td align="center" style="border: 2px solid; width: 8em;">通信速度</br>(G bps)</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">LAN</td>
<td align="right" style="border: 2px solid;">1</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">インターネット</td>
<td align="right" style="border: 2px solid;">10</td>
</tr>
</table>
</div>
</div>

<div class="table-container"><div align="center">表4 各サーバのCPUとGPUの搭載数</div>
<table border="2" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 6em;">サーバ</td>
<td align="center" style="border: 2px solid; width: 8em;">CPU</br>(コア)</td>
<td align="center" style="border: 2px solid; width: 8em;">GPU</br>(個)</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">APサーバ</td>
<td align="right" style="border: 2px solid;">16</td>
<td align="right" style="border: 2px solid;">0</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">DBサーバ</td>
<td align="right" style="border: 2px solid;">32</td>
<td align="right" style="border: 2px solid;">0</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">GPUサーバ</td>
<td align="right" style="border: 2px solid;">4</td>
<td align="right" style="border: 2px solid;">4</td>
</tr>
</table>
</div>


 各サーバで計算を行うCPUやGPUで実行される演算は、①<u>整数演算</u>と浮動小数点演算の二つに分類される。新システムで利用するCPUは、1コア当たり整数演算が10,000G Operations/秒(以下、OPSという)、浮動小数点演算が500G Floating-point Operations/秒(以下、FLOPSという)で実行できる。また、GPUは1個当たり浮動小数点演算が10,000G FLOPSで実行できる。

 この新システムを用いて、APサーバ1がAPサーバ1のSSDに格納された800Mバイトの動画ファイルをメモリに読み込む時間は [a] 秒である。また、DBサーバのDBMSはRDBである。


[配置の検討]

 D君は、新システムの各機能の中でデータ量や計算量が多い処理を抽出した。データ量や計算量が多い処理の一覧を表5に示す。なお、データ量には、各処理を実行するためにCPUやGPUにインプットされるデータ量と、CPUやGPUで計算した後にアウトプットされるデータ量とがある。


表5 データ量や計算量が多い処理の一覧

<table width="100%" border="2" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" rowspan="2" style="border: 2px solid; width: 3em;">機能名</td>
<td align="center" rowspan="2" style="border: 2px solid; width: 6em;">処理名</td>
<td align="center" rowspan="2" style="border: 2px solid;">処理方法</td>
<td align="center" colspan="2" style="border: 2px solid;">データ量</td>
<td align="center" colspan="2" style="border: 2px solid;">計算量</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 6em;">インプット</br>(Mバイト)</td>
<td align="center" style="border: 2px solid; width: 6em;">アウトプット</br>(Mバイト)</td>
<td align="center" style="border: 2px solid; width: 4em;">整数</br>演算数</br>(GO)</td>
<td align="center" style="border: 2px solid; width: 4em;">浮動小数</br>点演算数</br>(GFLO)</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">動画</br>編集</td>
<td align="left" style="border: 2px solid;">素材送信</td>
<td align="left" style="border: 2px solid;">NASに格納されているBGM素材やテロップ素材を、NASからAPサーバへ送信し、APサーバから動画配信者のPCへ送信する。</td>
<td align="right" valign="top" style="border: 2px solid;">50</td>
<td align="right" valign="top" style="border: 2px solid;">50</td>
<td align="right" valign="top" style="border: 2px solid;">10</td>
<td align="right" valign="top" style="border: 2px solid;">0</td>
</tr>
<tr>
<td align="center" style="border: 2px solid;">配信</br>準備</td>
<td align="left" style="border: 2px solid;">レンダリング</td>
<td align="left" style="border: 2px solid;">APサーバのメモリに格納されている動画データを基にBGM、テロップなどを合成して一つの動画データを作成する。</td>
<td align="right" valign="top" style="border: 2px solid;">500</td>
<td align="right" valign="top" style="border: 2px solid;">100</td>
<td align="right" valign="top" style="border: 2px solid;">0</td>
<td align="right" valign="top" style="border: 2px solid;">100,000</td>
</tr>
<tr>
<td rowspan="2" align="center" style="border: 2px solid;">アクセス</br>分析</td>
<td align="left" style="border: 2px solid;">オンラインユーザ数取得</td>
<td align="left" style="border: 2px solid;">DBサーバに格納されている特定の動画を視聴しているオンラインユーザ数をリアルタイムに集計して表示する。</td>
<td align="right" valign="top" style="border: 2px solid;">100</td>
<td align="right" valign="top" style="border: 2px solid;">0.1</td>
<td align="right" valign="top" style="border: 2px solid;">50</td>
<td align="right" valign="top" style="border: 2px solid;">0</td>
</tr>
<tr>
<td align="left" style="border: 2px solid;">多次元分析</td>
<td align="left" style="border: 2px solid;">DBサーバに格納されている前日までの動画の視聴ログを複数の分析軸から分析する。</td>
<td align="right" valign="top" style="border: 2px solid;">50,000</td>
<td align="right" valign="top" style="border: 2px solid;">1</td>
<td align="right" valign="top" style="border: 2px solid;">300</td>
<td align="right" valign="top" style="border: 2px solid;">0</td>
</tr>
</table>

注記 GOはGiga Operationsを示し、GFLOはGiga Floating-point Operationsを示す。


 レンダリング処理は、APサーバのCPUを4コア用いて処理する場合には [b] 秒掛かり、GPUサーバのGPUだけを1個用いて処理する場合には [c] 秒掛かる。ただし、GPUサーバを用いて処理する場合には、APサーバからGPUサーバへデータを送信するのに [d] 秒掛かり、APサーバへレンダリング結果を返信するのに [e] 秒掛かる。この検討結果から、APサーバよりもGPUサーバで処理した方がよい。

 オンラインユーザ数取得処理について、D君は②<u>DBサーバで処理した結果をAPサーバへ送信する方法が最適と考え</u>、DBサーバで処理することにした。

 素材送信処理は、同時に100名の動画配信者向けに素材データを送信しようとすると、LANの通信速度とHDDの読込速度が遅く送信に時間がかかる。しかし、図1のサーバ構成の変更には大きな費用が掛かることから、サーバ構成を変更せずに対応する方法を検討した。動画配信者のPCへ送信する素材データは特定の素材データに偏っており、各素材データの更新頻度も高くないことから、表5の③<u>素材送信処理の処理方法を変更</u>して対応することにした。


[動画配信者数増大への対応方針]

 D君は、将来的に動画配信者数が増大することを考慮して、新システムの拡張性について検討した。まず、表5のレンダリング処理は、動画データごとに処理が独立しており、GPUサーバを手動で追加する [f] の対応を行う方針にした。一方で、オンラインユーザ数取得処理は、時間とともに断続的に追記される動画の視聴ログをリアルタイムに集計する処理であり、DBサーバの数を増やせないことから、DBサーバを [g] して対応を行う方針にした。また、多次元分析処理は、④<u>そこで扱うデータの特徴</u>から、多次元分析処理専用のDBサーバを追加する方針にした。これによって多次元分析処理の負荷が他の処理へ影響しないようになる。


 その後、D君は新システムの構築を完了させ、C社は新システムによる新しい動画配信者向けサービスの提供を開始した。


設問1 [新システムのサーバ構成]について答えよ。

(1) 本文中の下線①について、整数演算に該当する演算を回答群の中から全て選び、記号で答えよ。

回答群

ア 300+200-100

イ 300×200÷100

ウ 3.00+2.00-0.10

エ -300+(-200)-(-100)

オ 300×0

カ 3.00×0

(2) 本文中の [a] に入れる適切な数値を答えよ。ここで、本文に記載の読込速度、書込速度を実効速度とし、他のオーバヘッドは無視できるものとする。なお、計算結果の小数が発生する場合、答えは小数第2位を四捨五入して小数第1位まで求めよ。

設問2 [配置の検討]について答えよ。ここで、図1のサーバ構成を一つの処理が占有でき、[新システムのサーバ構成]と表5に記載以外のオーバヘッドや並列処理に伴うオーバヘッドは無視できるものとする。

(1) 本文中の [b] ~ [d] に入れる適切な数値を整数で答えよ。

(2) 本文中の [e] に入れる適切な数値を答えよ。なお、計算結果に小数が発生する場合、答えは小数第2位を四捨五入して小数第1位まで求めよ。

(3) 本文中の下線②について、DBサーバで処理した結果をAPサーバへ送信する方法が最適と考えたのはなぜか。データ量の観点から35字以内で答えよ。

(4) 本文中の下線③について、素材送信処理の処理方法をどのように変更したか。変更点を30字以内で答えよ。

設問3 [動画配信者数増大への対応方針]について答えよ。

(1) 本文中の [f] 、[g] に入れる適切な字句を回答群の中から選び、記号で答えよ。

回答群

ア スケールアウト

イ スケールアップ

ウ スケールイン

エ スケールダウン

(2) 本文中の下線④について、オンラインユーザ数取得処理と対比して、多次元分析処理で扱うデータの特徴を20字以内で答えよ。

 

令和6年度秋期 午後 問4 システムアーキテクチャ(問題原文)

■データ処理機能の配置に関する次の記述を読んで、設問に答えよ。


 C社は、動画配信サービスを提供する会社であり、サービス内容が充実していることが人気を呼び、動画配信者数や動画視聴者数が増えている。動画配信者は、Webブラウザを用いて、ビデオカメラやスマートフォンで撮影した動画ファイルをC社のWebサイトにアップロードすると、Webサイト上で動画の編集・配信、広報、アクセス分析などの機能が利用できる。

 C社の動画配信サービスは、C社配信システム部が企画から運用までを担当している。配信システム部では、サービス内容の向上を目的に、動画編集機能を強化した動画配信者向けの新しいサービスを提供するシステム(以下、新システムという)を構築することにした。新システムの構築は、配信システム部のD君が担当することになった。


[新システムに必要な機能]

 D君は、現在の動画配信サービスの機能を基に、新システムに必要な動画配信者向け機能の機能要件を定義した。新システムに必要な機能一覧(抜粋)を表1に示す。


表1 新システムに必要な機能一覧(抜粋)
機能名 機能概要
アップロード 動画配信者がビデオカメラやスマートフォンで撮影した動画をC社のWebサイトにアップロードして登録する機能
動画編集 C社のWebサイトに登録された動画を、Webブラウザを用いて編集する(カットする、結合する、BGM・テロップを挿入するなど)機能
配信準備 動画視聴者のネットワーク・環境に合わせた複数のビットレートの動画ファイルを作成する機能
アクセス分析 動画が動画視聴者に何回アクセスされているかを、複数の分析軸(地域、年齢層、端末種別、アクセス動線など)から分析する機能


[新システムサーバ構成]

 D君は、新システムのサーバ構成を設計した。D君が設計した新システムのサーバ構成(抜粋)を図1に示す。また、SSDとHDDのアクセス速度を表2に、LANとインターネットの通信速度を表3に、各サーバのCPUとGPUの搭載数を表4に示す。なお、新システム内の負荷分散装置、サーバ、NASはLANで接続されている。


図1 新システムのサーバ構成(抜粋)


表2 SSDとHDDのアクセス速度
装置 読込速度
(Mバイト/秒)
書込速度
(Mバイト/秒)
SSD 500 400
HDD 250 150
表3 LANとインターネットの通信速度
回線 通信速度
(G bps)
LAN 1
インターネット 10

表4 各サーバのCPUとGPUの搭載数
サーバ CPU
(コア)
GPU
(個)
APサーバ 16 0
DBサーバ 32 0
GPUサーバ 4 4


 各サーバで計算を行うCPUやGPUで実行される演算は、①整数演算と浮動小数点演算の二つに分類される。新システムで利用するCPUは、1コア当たり整数演算が10,000G Operations/秒(以下、OPSという)、浮動小数点演算が500G Floating-point Operations/秒(以下、FLOPSという)で実行できる。また、GPUは1個当たり浮動小数点演算が10,000G FLOPSで実行できる。

 この新システムを用いて、APサーバ1がAPサーバ1のSSDに格納された800Mバイトの動画ファイルをメモリに読み込む時間は 秒である。また、DBサーバのDBMSはRDBである。


[配置の検討]

 D君は、新システムの各機能の中でデータ量や計算量が多い処理を抽出した。データ量や計算量が多い処理の一覧を表5に示す。なお、データ量には、各処理を実行するためにCPUやGPUにインプットされるデータ量と、CPUやGPUで計算した後にアウトプットされるデータ量とがある。


表5 データ量や計算量が多い処理の一覧
機能名 処理名 処理方法 データ量 計算量
インプット
(Mバイト)
アウトプット
(Mバイト)
整数
演算数
(GO)
浮動小数
点演算数
(GFLO)
動画
編集
素材送信 NASに格納されているBGM素材やテロップ素材を、NASからAPサーバへ送信し、APサーバから動画配信者のPCへ送信する。 50 50 10 0
配信
準備
レンダリング APサーバのメモリに格納されている動画データを基にBGM、テロップなどを合成して一つの動画データを作成する。 500 100 0 100,000
アクセス
分析
オンラインユーザ数取得 DBサーバに格納されている特定の動画を視聴しているオンラインユーザ数をリアルタイムに集計して表示する。 100 0.1 50 0
多次元分析 DBサーバに格納されている前日までの動画の視聴ログを複数の分析軸から分析する。 50,000 1 300 0
注記 GOはGiga Operationsを示し、GFLOはGiga Floating-point Operationsを示す。


 レンダリング処理は、APサーバのCPUを4コア用いて処理する場合には 秒掛かり、GPUサーバのGPUだけを1個用いて処理する場合には 秒掛かる。ただし、GPUサーバを用いて処理する場合には、APサーバからGPUサーバへデータを送信するのに 秒掛かり、APサーバへレンダリング結果を返信するのに 秒掛かる。この検討結果から、APサーバよりもGPUサーバで処理した方がよい。

 オンラインユーザ数取得処理について、D君は②DBサーバで処理した結果をAPサーバへ送信する方法が最適と考え、DBサーバで処理することにした。

 素材送信処理は、同時に100名の動画配信者向けに素材データを送信しようとすると、LANの通信速度とHDDの読込速度が遅く送信に時間がかかる。しかし、図1のサーバ構成の変更には大きな費用が掛かることから、サーバ構成を変更せずに対応する方法を検討した。動画配信者のPCへ送信する素材データは特定の素材データに偏っており、各素材データの更新頻度も高くないことから、表5の③素材送信処理の処理方法を変更して対応することにした。


[動画配信者数増大への対応方針]

 D君は、将来的に動画配信者数が増大することを考慮して、新システムの拡張性について検討した。まず、表5のレンダリング処理は、動画データごとに処理が独立しており、GPUサーバを手動で追加する の対応を行う方針にした。一方で、オンラインユーザ数取得処理は、時間とともに断続的に追記される動画の視聴ログをリアルタイムに集計する処理であり、DBサーバの数を増やせないことから、DBサーバを して対応を行う方針にした。また、多次元分析処理は、④そこで扱うデータの特徴から、多次元分析処理専用のDBサーバを追加する方針にした。これによって多次元分析処理の負荷が他の処理へ影響しないようになる。


 その後、D君は新システムの構築を完了させ、C社は新システムによる新しい動画配信者向けサービスの提供を開始した。


設問1 [新システムのサーバ構成]について答えよ。

(1) 本文中の下線①について、整数演算に該当する演算を回答群の中から全て選び、記号で答えよ。

回答群

ア 300+200-100

イ 300×200÷100

ウ 3.00+2.00-0.10

エ -300+(-200)-(-100)

オ 300×0

カ 3.00×0

(2) 本文中の に入れる適切な数値を答えよ。ここで、本文に記載の読込速度、書込速度を実効速度とし、他のオーバヘッドは無視できるものとする。なお、計算結果の小数が発生する場合、答えは小数第2位を四捨五入して小数第1位まで求めよ。

設問2 [配置の検討]について答えよ。ここで、図1のサーバ構成を一つの処理が占有でき、[新システムのサーバ構成]と表5に記載以外のオーバヘッドや並列処理に伴うオーバヘッドは無視できるものとする。

(1) 本文中の に入れる適切な数値を整数で答えよ。

(2) 本文中の に入れる適切な数値を答えよ。なお、計算結果に小数が発生する場合、答えは小数第2位を四捨五入して小数第1位まで求めよ。

(3) 本文中の下線②について、DBサーバで処理した結果をAPサーバへ送信する方法が最適と考えたのはなぜか。データ量の観点から35字以内で答えよ。

(4) 本文中の下線③について、素材送信処理の処理方法をどのように変更したか。変更点を30字以内で答えよ。

設問3 [動画配信者数増大への対応方針]について答えよ。

(1) 本文中の に入れる適切な字句を回答群の中から選び、記号で答えよ。

回答群

ア スケールアウト

イ スケールアップ

ウ スケールイン

エ スケールダウン

(2) 本文中の下線④について、オンラインユーザ数取得処理と対比して、多次元分析処理で扱うデータの特徴を20字以内で答えよ。

 

回答・解説

設問1

(1)

ア 300+200-100

 整数演算です。

イ 300×200÷100

 整数演算です。

ウ 3.00+2.00-0.10

 浮動小数点数演算です。

エ -300+(-200)-(-100)

 整数演算です。

オ 300×0

 整数演算です。

カ 3.00×0

 浮動小数点数演算です。


 小数が使われていれば浮動小数点演算で、使われていなければ整数演算です。割り算の結果は整数÷整数でも浮動小数点数演算になる場合がありますが、設問では割り切れない割り算が存在しないので、考える必要がありません。簡単な問題です。したがって


ア、イ、エ、オ


(2)

 APサーバ1がAPサーバ1のSSDに格納された800Mバイトの動画ファイルをメモリに読み込む時間は [a] 秒である。

 の穴埋め問題ですが、計算が必要になる問題です。APサーバ1のSSDの読込速度は500Mバイト/秒なので、800Mバイトを読み込むには、

=(M)(M/)=800500=1.6 


 したがって


a 1.6[秒]


 が答えです。


設問2

(1)

 bについて

 レンダリング処理は、APサーバのCPUを4コア用いて処理する場合には [b] 秒掛かり…の穴埋め問題です。

 まずは、CPUの4コアでの1秒あたりの浮動小数点演算能力を求めます。

 本文中の

 新システムで利用するCPUは、1コア当たり整数演算が10,000G Operations/秒(以下、OPSという)、浮動小数点演算が500G Floating-point Operations/秒(以下、FLOPSという)で実行できる。

 という部分から

・1コアの浮動小数点演算能力=500[GFLOPS/コア]

 で、4コア用いて処理する場合なので、

・コア数=4[コア]


[GFLOPS]=1[GFLOPS/]×[]=500×4=2,000[GFLOPS]


 処理時間は、表5 データ量や計算量が多い処理の一覧のレンダリングの行の処理量と演算性能の商によって求めることができます。

・処理量は浮動小数点のみで100,000[GFLO]と指定されているので、


[]=[GFLO][GFLOPS]=100,0002,000=50[]


 したがって


b 50[秒]


 が答えです。


 cについて

 GPUサーバのGPUだけを1個用いて処理する場合には [c] 秒掛かる。の穴埋め問題です。

 まずはGPU1コアあたりでの1秒あたりの浮動小数点演算能力を確認します。

 GPUは1個当たり浮動小数点演算が10,000G FLOPSで実行できる。

 という部分から


[GFLOPS]=10,000[FLOPS]


・処理量は浮動小数点のみで100,000[GFLO]でしたから


[]=[GFLO][GFLOPS]=100,00010,000=10[]


 したがって


c 10[秒]


 が答えです。


 dについて

 GPUサーバを用いて処理する場合には、APサーバからGPUサーバへデータを送信するのに [d] 秒掛かり… の穴埋めです。

 GPUサーバで処理をするには通信速度1[Gbps]のLANを使って、入力データ量の500[Mバイト]を転送する処理がかかるので、この転送にかかる時間を求めよというのがdの穴埋め問題です。

 1[G ビット/s]は何[M バイト/s]かという演算を先に実施します。1Byteは8Bitなので、Bit量[Bit]/8[Bit/Byte]の演算で単位を[Byte]に変換できます。


[M Byte/s]=1,000[M Bit/s]8[Bit/Byte]=1,0008


 データ量を通信速度で割ると、転送にかかる時間が求められます。

・レンダリングのデータ量は500[MByte]

・通信速度は125[MByte/s]


 したがって


d 4[秒]


 が答えです。


(2)

 APサーバへレンダリング結果を返信するのに [e] 秒掛かる。の穴埋めです。

 設問を(1)(2)とで分ける意味がよくわかりませんが、(1)は割り切れる整数が答えなんやで、と教えてくれているんすかね。やさしいのか、やさしくないのかわかりませんが、鞭(むち)打つようなな問題ばかりのくせに、ちょっぴり飴を与える出題者。えぐい。(2)は小数第2位で四捨五入だそうな。


 さきほどの転送時間の入力が500[MByte]だったのが、帰りは出力結果の100[GByte]になります。(1)の続き的な問題なんすよね。なんで分けるんだろ、いろいろ不安になってくるよね。


 データ量を通信速度で割ると、転送にかかる時間が求められます。

・レンダリングのデータ量は500[MByte]

・通信速度は125[MByte/s]


 したがって


e 0.8[秒]


 が答えです。小数第2位で四捨五入なんてしなくていい答えですね。これまた不安になります。わざわざ分けてまで作った問題なのに四捨五入の指示が意味がないっていうね。


(3)

 オンラインユーザ数取得処理(表5)では、

・インプットデータ量が 100MB

・アウトプットデータ量が 0.1MB

 となっています。インプットデータをいちいちAPサーバに転送していると容量が大きいですが、アウトプットデータだけなら容量が少ないというのが理由になると思います。これを35字にまとめると


1   5   10 11      20

DBサーバの処理結果 のデータ量が入力デー

タを受け取るより少な く済むため(35文字)

21 25   30    35


 とかで正解になります。いろいろ書きようのある答えなので、うまく伝えられるかがカギになる問題です。


(4)

 素材の送信処理について、変更を加えるとしたらという問題ですが、本文に

 動画配信者のPCへ送信する素材データは特定の素材データに偏っており、各素材データの更新頻度も高くないとあるので、


 特定の素材をNASではなくAPサーバのSSDに置くのかなと思ったのですが、全部を置いても良さそうです。どっちが正しいんだろうな。SSDの空き容量に余裕があれば全部、移動でしょうね。ほとんど使われない素材の容量が膨大だったりすると全部を移動する意味はないような気もする。


1   5   10 11      20

素材データをNASか らAPサーバのSSD

に移動する(25文字)

21 25   30    35


あるいは


1   5   10 11      20

よく使う素材データを NASからAPサーバ

のSSDに移動する(29文字)

21 25   30    35


 が正解ですね。どっちの答えを出題者が求めているかは知りませんが、どっちも正解でないと困りますね。素材データ量についてや、SSDの空き容量については、なんにも言及してないし。解説本が発売されたら立ち読みでもしてきて、確認してみます。


設問3

(1)

 GPUサーバを手動で追加する [f] の対応を行う方針にした。一方で、オンラインユーザ数取得処理は、時間とともに断続的に追記される動画の視聴ログをリアルタイムに集計する処理であり、DBサーバの数を増やせないことから、DBサーバを [g] して対応という部分の穴埋めの選択問題ですね。選択肢の意味を理解しないと答えられない仕組みです。


スケールアウト/インは台数の増減による対応。アウトが増でインが減です。スケールアップ/ダウンは性能の増減による対応。アップが増でダウンが減です。この意味が理解できていれば。サーバを追加するがfなのでスケールアウトが対応し、gはDBサーバの数を増やせないことからといっているのでスケールアップの対応になります。したがって


f ア スケールアウト


g イ スケールアップ


 が答えです。


(2)

 表5から多次元分析とオンラインユーザ数取得処理のデータの特徴を読み取ればいいです。入力データ量が大きいことと、処理時間が長くなりそうなことを20字にまとめればいいです。


1   5   10 11      20

入力データ量が大きく 処理時間が長い(17文字)


 が答えです。ちょっとした計算が必要なので、ちょっとだけ情報処理科学計算がわかっていれば、日本語を読み解ければ、なんとか答えれそうな問題でしたね。スケールアウト/インとスケールアップ/ダウンは午前の問題でもよく出てくる問題なので、理解しておくといいですね。アウトが台数増インが台数減アップが性能増ダウンが性能減、この対応をしっかり覚えよう。

 

AP過去問_令和6年度秋期_午後_問3_プログラミングの同じ回の前の問題へ移動。

AP過去問_令和6年度秋期_午後_問5_ネットワークの同じ回の次の問題へ移動。

AP 過去問題 午後に戻る。