【基本情報】稼働率の計算、基本の型は3つ|直列・並列・MTBF・MTTR

稼働率の計算、頻出論点のくせに、毎回「あれ、直列ってどっちだっけ…掛けるんだっけ…」ってなりませんか。直列と並列は、それだけ取り違えやすい論点です。

でも安心してください。稼働率の問題は、基本の型3つを押さえれば主要なパターンに対応できます。逆算や必要台数の問題も、基本式を変形したり、構成に合わせて組み合わせたりして解くもの。式の意味から理解しておくと、丸暗記に頼らずに判断できるようになります。今日はそれを順番に見ていきます。

先に結論:基本の型3つ(まずは2台の基本形)

公式 式(2台の場合) 気持ち
① 直列 A × B 全員出勤しないと店が開かない
② 並列 1 −(1−A)×(1−B) 誰か1人いれば店は開く
③ MTBF・MTTR MTBF ÷(MTBF+MTTR) 動いてた時間 ÷ 全部の時間

「気持ち」の列が一番大事です。式だけを丸暗記すると、本番で直列と並列を取り違えやすくなるので、意味から入りましょう。

台数が増えても考え方は同じで、一般形はこうなります。

  • 直列(n台):A₁ × A₂ × … × Aₙ
  • 同じ稼働率Aのn台直列:Aⁿ
  • 並列(n台):1 −(1−A₁)(1−A₂)…(1−Aₙ)
  • 同じ稼働率Aのn台並列:1 −(1−A)ⁿ

そして全体を通して使う基本の関係がこれ。

不稼働率 = 1 − 稼働率

「動いていない確率」をパッと作れるかどうかが、このあとの並列計算の生命線になります。

なお、直列・並列・2-out-of-3のように複数の装置を組み合わせる計算は、「各装置の故障が互いに独立(1台の故障が他の故障を引き起こさない)で、共通の電源ダウンや切替装置の故障は考えない」という単純モデルが前提です。試験ではこの「独立」の一文が問題文に書かれていることが多いのですが、それは「確率を掛け合わせてよい」という合図であって、掛けるのか、(1−A)を作ってから掛けるのかは、直列・並列・k-out-of-nのどの条件かで決まります。そこは構成図で確認してください。一方、MTBF・MTTRから単体の稼働率を求める計算や、稼働率を停止時間に換算する計算には、装置間の独立性はそもそも関係しません。

① 直列は掛け算。「全員出勤しないと開かない店」

直列接続っていうのは、構成する装置が全部動いてないとシステムが動かないつなぎ方です。Webサーバが生きててもDBサーバが死んでたらサービスは止まりますよね。あれです。

「AもBも同時に動いてる確率」なので、素直に掛け算します。

例題:稼働率0.95の装置2台を直列につないだら?

0.95 × 0.95 = 0.9025(だいたい0.90)

ここでひとつ、覚えておくと得する感覚があります。試験で出てくるような「稼働率が0より大きく1未満」の装置を直列に足していくと、全体の稼働率は必ず下がっていきます。0.95の装置を2台つないだのに、全体では0.90。1より小さい数どうしを掛けてるんだから、そりゃ下がります。もう少しきちんと言うと、直列システム全体の稼働率は、構成装置の中で最も低い稼働率以下になります。

なので試験で「直列なのに単体より高い数字」の選択肢があったら、計算しなくても切れます。単純な独立モデルでは直列全体は各装置の稼働率以下——この性質、選択肢の検算にどんどん使っていきましょう。

② 並列は「1 − 全滅の確率」。ここが特に取り違えやすいところ

並列接続は、どれか1台でも生きてればOKなつなぎ方。サーバの冗長化ってやつです。

で、ここで「1台でも動いてる確率」を正面から数えようとすると、動いているパターンが多すぎて場合分けが大変なことになります。だから逆から攻めます。

システムが止まるのは、全部が同時に死んでるときだけ。だったら、

稼働率 = 1 −(全滅している確率)

これだけです。

例題:稼働率0.85の装置2台を並列にしたら?

1台が死んでる確率 = 1 − 0.85 = 0.15
2台とも死んでる確率 = 0.15 × 0.15 = 0.0225
稼働率 = 1 − 0.0225 = 0.9775(だいたい0.98)

0.85の装置を2台並べただけで0.98。冗長化ってすごいんですよ。というわけで並列は直列の逆で、この単純モデル(故障は独立・どれか1台動けばサービス継続・切替の失敗は考えない)では、全体の稼働率は単体以上に上がります

ちなみに実務の可用性設計だと、共通電源や共通ネットワークの障害、切替装置そのものの故障、待機系が起動しない、みたいな「全部まとめて巻き込まれるケース」があるので、並列公式だけでは評価しきれません。試験では、問題文にこうした条件の指定がなければ、独立故障を前提とする単純な並列モデルで計算します。頭の片隅に置いておくと読解問題でも役立ちます。

ここでよくある計算ミス

並列の問題で、うっかり「0.85 × 0.85 = 0.7225」ってやっちゃうミス。これが稼働率問題で最も代表的な計算ミスです。

この0.7225は、並列を直列として計算した場合に出る典型的な誤答です。「並列」の文字を見たら、まず各装置の不稼働率(1−稼働率)を作る。この最初の一手を手順として固定してしまいましょう。

混合構成:「計算できる小さなブロックを、内側からまとめる」

本番で差がつくのが、直列と並列が混ざったパターン。でも手順を固定してしまえば、順番に処理していくだけです。

  1. 図の中から、「ここは直列」「ここは並列」とはっきり判断できる小さなブロックを探す
  2. そのブロックの稼働率を先に計算する
  3. 計算し終えたブロックを「稼働率○○の装置1台」に置き換える
  4. 外側の接続について、同じことを繰り返す

例題:稼働率0.9の装置2台の並列部分と、稼働率0.95の装置1台が直列につながってる。全体の稼働率は?

まず並列ブロック:1 − 0.1 × 0.1 = 0.99
それを1台とみなして直列:0.99 × 0.95 = 0.9405(だいたい0.94)

この例では並列ブロックが内側にあるので並列から計算しましたが、構成によっては「直列の列が並列に並んでいる」パターンもあります。「並列が常に先」ではなく、カッコの中から計算する、あの感覚で、内側のブロックから外へ向かって固めていってください。

やりがちなのは、全部を直列とみなしていきなり掛けてしまう(0.9×0.9×0.95)パターンと、並列部分を0.9のまま使っちゃうパターンです。

おまけ:「3台のうち2台以上動けばOK」のパターン

たまに出るのが、3台とも稼働率0.9で、故障は互いに独立、2台以上生きていればシステムが動くという設定です。1台でもOKな全並列より条件が厳しく、全台必要な直列より緩い。中間のパターンですね。

考え方は「動くケースを全部足す」です。

3台とも動く:0.9×0.9×0.9 = 0.729
ちょうど2台動く:3 ×(0.9×0.9)× 0.1 = 0.243
合計 = 0.972

式でまとめると、稼働率Aの3台なら 3A²(1−A)+ A³ です。

「ちょうど2台」に3を掛けているのは、どの1台が壊れるかで3パターンあるからです。0.81は、この3通りのうち1通りしか数えなかった場合に出る値(0.729+0.081)。組合せ数の掛け忘れから生まれる典型的な誤答です。

目標稼働率を満たすには何台必要か

「稼働率0.85の装置を並列に並べて、全体で0.99以上にしたい。最低何台?」みたいな問題も出ます。使うのはさっきの一般式です。

1 −(1−A)ⁿ ≧ 目標稼働率

選択肢問題なら、n=1、2、3…と順番に代入して、初めて目標を超えた台数が答え。それだけです。

n=1:0.85(届かない)
n=2:1 − 0.15² = 0.9775(届かない)
n=3:1 − 0.15³ = 0.996625(届いた)→ 3台

対数を使えば一般式でも解けますが、科目Aは選択肢があるので、n=1、2、3…と順に代入するほうが速く、計算ミスも防ぎやすいです。

③ MTBFとMTTR:「動いてた時間 ÷ 全部の時間」

もうひとつの定番がこれ。まず用語から。略語は仰々しく見えますが、中身は「動いていた時間と修理時間の割合」の話です。

  • MTBF:修理しながら使い続けるシステムで、修理が終わって動き出してから、次に故障するまでの「動いてた時間」の平均。長いほど壊れにくい。実績から求めるときは 総稼働時間 ÷ 故障回数
  • MTTR:故障してから修理が終わって、また使える状態に戻るまでの「止まってた時間」の平均。短いほど直しやすい。実績から求めるときは 総修理時間 ÷ 故障回数

システムの一生って、「動く→壊れる→直す→動く→…」の繰り返しですよね。稼働率は、そのうち動いてた時間の割合。なので、

稼働率 = MTBF ÷(MTBF+MTTR)
不稼働率 = MTTR ÷(MTBF+MTTR)

例題:MTBFが570時間、MTTRが30時間なら?

570 ÷(570+30)= 570 ÷ 600 = 0.95

注意点はここ。分母は「MTBF+MTTR」です。分母をMTBFだけにすると570÷570=1になってしまうし、分子をMTTRにすると出てくるのは稼働率ではなく不稼働率(この例なら0.05)。そして分子と分母をまるごと逆にすると1を超えます。稼働率は割合なので、答えが1を超えていたら不適切——計算を見直す合図です。検算に使ってください。

ひとつ補足しておくと、この式は「動く→壊れる→直す」を繰り返す修理可能なシステムを、計画停止などを考えない単純なモデルで扱うときの式です。実務のSLAでは「計画停止を停止時間に含めるか」など稼働率の定義自体を契約で確認する必要がありますが、試験の計算ではこの単純モデルでOKです。

逆算はこの形に直せば解ける

この式、「稼働率とMTBFが分かってるとき、MTTRは?」みたいな逆算の形でもよく出ます。構えなくて大丈夫、基本式を方程式として変形するだけです。変形済みの形も置いておきます。

MTTRの逆算

MTTR = MTBF ×(1−稼働率)÷ 稼働率

例:稼働率0.95、MTBF570時間なら、MTTR = 570 × 0.05 ÷ 0.95 = 30時間。さっきの例題の逆再生ですね。

MTBFの逆算

MTBF = 稼働率 × MTTR ÷(1−稼働率)

構成問題のほうにも逆算パターンがあります。

直列で未知の装置の稼働率を求める

未知の稼働率 = 全体の稼働率 ÷ 既知部分の稼働率

例:全体0.9405で、片方が0.99なら、0.9405 ÷ 0.99 = 0.95。直列の積の式を未知の稼働率について解く——要するに、掛け算の逆の割り算です。

2台並列で未知の装置の稼働率を求める

未知の稼働率 = 1 −(1−全体の稼働率)÷(1−既知装置の稼働率)

並列の逆算は「不稼働率の世界」で割り算してから、最後に1から引いて戻します。(1−A)を作ってから作業するのは、順方向の計算と同じ流れです。

運用実績からMTBF・MTTRを出すパターン

運用データから自分でMTBF・MTTRを組み立てる問題もあります。ここでは、「観測した時間」と「実際に動いていた時間」を混同しないことが命です。

例題:観測開始から1,000時間。この間に故障が5回発生し、5回とも修理が完了した。修理時間の合計は50時間だった。MTBF・MTTR・稼働率は?

総稼働時間 = 1,000 − 50 = 950時間
MTBF = 950 ÷ 5 = 190時間
MTTR = 50 ÷ 5 = 10時間
稼働率 = 190 ÷(190+10)= 0.95

観測時間1,000をそのまま故障回数で割ると答えがズレます。まず引き算して総稼働時間を作る。ここが最初の分岐点です。

おまけ:稼働率99.9%って、年間どれくらい止まるの?

ちょっと実務っぽい換算問題も出ます。

例題:稼働率99%のシステムは、1年(8,760時間)あたり、単純計算でどれくらい停止することになる?

停止する割合 = 1 − 0.99 = 0.01
8,760 × 0.01 = 87.6時間

これはあくまで「理論上の年間停止時間」ですが、感覚をつかむには十分です。365日=8,760時間として早見表にするとこうなります。

稼働率 理論上の年間停止時間
99% 87.6時間
99.9% 8.76時間
99.99% 52.56分
99.999% 約5.26分

99%→99.9%→99.99%のように小数点以下に9が1桁増えるたびに、停止時間は10分の1になります。「スリーナイン(99.9%)」とか言われるやつの正体はこれです。桁の検算にも使えるので、87.6時間だけでも覚えておくと便利です。

どの式を使うか迷ったら:判定フロー

  1. 構成図がある → 直列・並列・k-out-of-nのどれかを判定して合成計算
  2. MTBF・MTTRが与えられている → MTBF ÷(MTBF+MTTR)
  3. 稼働率と期間が与えられている → 期間 ×(1−稼働率)で停止時間
  4. 未知の稼働率・MTTR・台数を聞かれている → 対応する式を変形するか、順に代入
  5. 最後に単位(時間・分など)、百分率、丸め方を確認

ありがちなミスまとめ

やらかし 出てくる誤答 対策
並列なのに掛け算 妙に小さい値(直列の答え) 「並列」を見たら(1−A)を先に作る
混合構成を一気に掛ける 全直列の値 内側のブロックから固める
稼働率と不稼働率を取り違える 0.05など「止まってる側」の値 まず「1−稼働率」を別に書き出す
2-out-of-3で組合せ数を掛け忘れる 0.81のような小さめの値 「どの1台が壊れるか」を数える
分母をMTBFだけにする/分子分母が逆 1ぴったり or 1を超える値 「動いてた÷全部」と唱える。1超えは見直しの合図
MTBF計算で修理時間を引かない MTBFが大きすぎる値 総稼働時間=観測時間−総修理時間
途中で丸める 最終値が選択肢と微妙にズレる 小数は最後まで持って、丸めるのは最後
検算しない 直列は最小値以下・並列(単純モデル)は単体以上

仕上げに演習10問どうぞ

型が分かったら、あとは複数パターンを実際に手で計算した分だけ、点につながりやすくなります。当サイトの稼働率の演習問題では、直列と並列の取り違え、不稼働率との混同、組合せ数の掛け忘れなど、代表的なミスをしたときに出る値を間違いの選択肢に含めてあります。外した選択肢を見ると「あ、自分いま並列を掛け算したな」って自分のミスの種類まで分かる仕組みです。ちょっと悔しいですが、効きます。

  • 直列接続の基本計算
  • 目標の稼働率を満たす最小の台数を求める
  • 未知の装置の稼働率を逆算する(直列・並列の両方)
  • 3台のうち2台以上で動く構成の稼働率
  • 目標の可用性から適切な構成を選ぶ
  • MTBF・MTTRからの稼働率と、MTTRの逆算
  • 稼働率から年間の停止時間への換算
  • 運用実績(観測時間・故障回数・修理時間)からMTBFを求める

今日のまとめ

  • 基本となる関係は3つ。直列は稼働率の積、並列は「1−全台停止の確率」、稼働率=MTBF÷(MTBF+MTTR)
  • 複数装置を組み合わせる計算は、故障の独立性など問題文の条件を確認してから
  • 混合構成は「計算できる内側のブロックから固めて、1台に置き換える」の繰り返し
  • 不稼働率=1−稼働率=MTTR÷(MTBF+MTTR)。逆算は基本式を未知数について解く
  • 年間停止時間=年間時間×不稼働率。9が1桁増えるごとに10分の1
  • 直列は最も低い装置以下・並列(単純モデル)は単体以上。選択肢の検算に使える

次回は、これまた取り違えの多い「サブネットマスクの計算」をやります。

参考資料

  • IPA「基本情報技術者試験(レベル2)シラバス Ver.9.2」

本記事の例題は、基本情報技術者試験の出題範囲を参考に、当サイトで独自に作成したものです。

関連する問題


コメント

タイトルとURLをコピーしました