「MTBF 50,000時間」と書かれたサーバーを2台買ってきた
カタログのスペック欄に MTBF 50,000時間。時間で書かれてもピンと来ないので年に直すと約5.7年になる。ここで多くの人が「5.7年は動く機械なんだな」と読む。だが指数分布を仮定した信頼性計算では、これは「平均して5.7年に1回止まる」であって「5.7年間動く保証」ではない。実際、この機器が最初の1年を無故障で通す確率は exp(-8760/50000) = 0.839289、つまり84%しかない。6台買えば1年以内に1台は壊れる計算になる。
もっと厄介なのはここからだ。同じ機器を2台に増やしたとき、年間停止時間は増えることもあれば減ることもある。処理を2台で分担していて片方が落ちたら業務が止まるなら、それは直列で、停止時間は倍近くに増える。片方が落ちてももう片方が引き継ぐなら並列で、年間停止時間は 42.0分から 0.0034分——1万2501分の1まで落ちる。
台数は同じ2台。変わったのは掛け算の向きだけ。この向きを取り違えると、可用性の見積もりは桁で狂う。システム信頼性計算ツールは、その掛け算をこちらで組めるようにするために作った。
稼働率を出すツールはあるのに、系を組めるツールが無かった
日本語で「稼働率 計算」を検索すると、MTBF と MTTR の2つの入力欄があって A = MTBF/(MTBF+MTTR) の結果を返すページがいくつも出てくる。calculator.jp 系、ratiocalc 系、cloned.jp 系——どれも計算そのものは正しい。ただ、実務で使おうとすると必ず3か所で止まった。
1つめ。装置を並べて系を組めない。 現実に知りたいのは1台の稼働率ではなく、その1台を5つ直列につないだ生産ライン全体の稼働率だったり、2台並列にしたサーバー群の可用性だったりする。単発の換算ツールでは、出てきた値を自分で電卓に打ち直して掛け合わせるしかない。しかも直列は稼働率の積、並列は不稼働率の積、N+1冗長は二項分布の裾の和と、構成ごとに掛け方が違う。ここを手作業でやると符号や向きを間違える。
2つめ。0.999999993601 という数字が返ってきても、何も分からない。 9が何個並んでいるかを画面で数えることになる。この数字が意味を持つのは、「8ナイン」「年間停止時間 0.0034分」という別の単位に翻訳されたときだけだ。稼働率が読者に伝わる形になっていない。
3つめ。冗長化の前後比較が出ない。 冗長化を検討している人が知りたいのは「2台にすると停止時間が何分の1になるか」であって、冗長化後の絶対値ではない。1台の稼働率を出したあと、もう一度2台の構成を入力し直して、電卓で割り算する——その手間ごとツールの内側に入れたかった。
海外には TI や SiTime が公開している FIT 計算機があるが、いずれも自社部品の故障率データベースに紐づいたもので、任意の系統構成を組む用途には向かない。
実装しながら気づいた設計上の落とし穴も1つある。並列構成の系の MTBF を 1/Σλ で出してはいけない。直列なら故障率を足し合わせた逆数が系の MTBF として厳密だが、並列では「1台壊れても系は動き、その間に修理が進む」ため、系の平均故障間隔は復旧率にも依存する。式の形が同じだからと 1/Σλ を並列の欄に埋めると、数値そのものが間違いになる。だからこのツールでは、並列・n個中k個のときは系の MTBF を「—」にして、代わりに修理を考慮しない前提の MTTF を別ラベルで出すことにした。値が出ないことを画面で説明するほうが、それらしい嘘の数字を出すよりましだと判断した。
稼働率・MTBF・信頼度——「動いている割合」から組み直す
稼働率 求め方:動いている時間 ÷ 全時間、それだけ
出発点は割り算1本しかない。稼働率(アベイラビリティ)とは、ある期間のうち機器が動いていた時間の割合のことだ。
通勤に使う自転車で考えるとつかみやすい。平均して1,500km 走るとパンクし、直すのに平均5km分の時間がかかるとする。すると1回のサイクルは「走れた1,500km + 止まっていた5km分」で1,505km分。走れている割合は 1500/1505 = 0.996678、つまり99.668%になる。
この「走れる平均距離」を時間に置き換えたのが MTBF、「直すのにかかる平均時間」が MTTR だ。
A = MTBF / (MTBF + MTTR) 稼働率
U = MTTR / (MTBF + MTTR) 不稼働率(止まっている割合)
分母は「1サイクルの全時間」で、分子を動いていた側にするか止まっていた側にするかの違いしかない。A + U = 1 になるのは、時間はどちらかに必ず属するからだ。
mtbf とは:故障と故障の「間隔」であって寿命ではない
MTBF は Mean Time Between Failures、故障と故障の間隔の平均。ここで押さえておくべきなのは、これが保証値ではなく平均値だという点だ。指数分布(故障率が時間によらず一定)を仮定する信頼性計算では、機器は「経過時間を覚えていない」。1年使った機器も新品も、次の1時間で壊れる確率は同じになる。だから MTBF 50,000時間の機器が最初の1週間で壊れることは、確率的に普通に起こる。
mtbf mttr 違い:直すのか、捨てるのか
現場で混ざりやすい3つの用語を切り分けておく。
| 用語 | 正式名 | 何の平均か | 対象 |
|---|---|---|---|
| MTBF | Mean Time Between Failures | 故障から次の故障までの間隔 | 修理して使い続ける機器 |
| MTTF | Mean Time To Failure | 使い始めてから壊れるまでの時間 | 修理せず交換する機器・部品 |
| MTTR | Mean Time To Repair | 故障してから復旧するまでの時間 | 修理作業そのもの |
MTBF と MTTR は別のものを測っている。MTBF は動いていた側の時間、MTTR は止まっていた側の時間だ。そして MTBF と MTTF の違いは対象の性質で、サーバーやポンプのように直して使い続けるものは MTBF、LED や電解コンデンサのように壊れたら捨てるものは MTTF で語る。並列冗長の系で「修理を考慮しない前提の MTTF」という値が出てくるのは、この使い分けをそのまま持ち込んでいるからだ。
fit 故障率 換算:λ = 1/MTBF、FIT = λ × 10⁹
故障率 λ は MTBF の逆数、「1時間あたり何回壊れるか」を表す。MTBF 1,500時間なら λ = 6.66667e-4 /h になる。
電子部品のデータシートで MTBF ではなく FIT が使われるのは、単純に桁の問題だ。抵抗やコンデンサの MTBF は1億時間や10億時間になり、「1.0e8 時間の部品と 5.0e7 時間の部品」を並べても比較しづらい。そこで λ を 10億時間あたりの故障件数に直したのが FIT(Failures In Time)で、この2つはそれぞれ 10 FIT と 20 FIT になる。
λ = 1 / MTBF [1/h]
FIT = λ × 1,000,000,000 1e9時間あたりの故障件数
MTBF 10億時間(=約11.4万年)がちょうど 1 FIT にあたる。そして故障率は足せるので、部品を直列に並べた系の FIT は各部品の FIT の単純な和になる。データシートの数字をそのまま足せるのが FIT の実務上の強みだ。
信頼度 R(t) は稼働率とはまったく別の量
もう1つ、稼働率と混同されやすいのが信頼度 R(t) だ。これは「t 時間のあいだ1回も故障しない確率」で、故障率一定の仮定のもとでは指数関数になる。
R(t) = exp(-λ・t) t時間を無故障で通る確率
F(t) = 1 - R(t) t時間のうちに1回以上故障する確率
決定的な違いは、稼働率は時間に依存しない定常指標で、信頼度は時間の関数だという点にある。MTBF 10時間・MTTR 1時間の機器は稼働率90.9%——時間の9割は動いている——なのに、1年(8,760時間)を無故障で通す確率は exp(-876) で実質ゼロだ。矛盾ではない。何度も壊れるが、そのたびに直して動かし続けているから稼働率は高い。「よく止まるが、すぐ直る」と「めったに止まらない」は別の性質で、SLA で問われるのは前者、無人観測装置や打ち上げ後の機器で問われるのは後者になる。
用語の正式な定義は JIS Z 8115 ディペンダビリティ(総合信頼性)用語 に、概観は 平均故障間隔(Wikipedia) にまとまっている。
ナイン数を年間停止時間に直すと、判断の材料になる
「稼働率99.9%以上」という要求を受けたとき、それが年間どれくらいの停止に相当するかを即答できるかどうかで、契約を結ぶ前の判断が変わる。不稼働率に年間時間 8,760h を掛けるだけで換算できる。
| ナイン数 | 稼働率 | 年間停止時間 |
|---|---|---|
| 1ナイン | 90% | 36.5日 |
| 2ナイン | 99% | 3.65日 |
| 3ナイン | 99.9% | 8.76時間 |
| 4ナイン | 99.99% | 52.6分 |
| 5ナイン | 99.999% | 5.26分 |
| 6ナイン | 99.9999% | 31.5秒 |
9が1個増えるごとに停止時間が1桁縮む。だから「99.9%」と「99.99%」の間には、見た目の0.09ポイント差ではなく 8.76時間 対 52.6分という10倍の差がある。
ここに実構成の数字を並べると、構成の効き方が見える。MTBF 1,500h / MTTR 5h の装置は単体なら稼働率99.668%だが、2台直列にすると 99.3366519133%、年間停止時間58.1093時間になる。生産ラインのように5工程を直列に並べると 98.6859885099%、年間115.107時間まで落ちる。逆に MTBF 50,000h / MTTR 4h のサーバーを2台並列にすると 99.9999993601%、年間停止時間 0.0033633分だ。同じ「2台構成」なのに年間停止時間は4桁以上動く。
SLA の観点だと、この差は金額に直結する。年間停止時間8.76時間(3ナイン)を約束したのに、実構成が直列2台の 99.337%=年間58.1093時間だったとすると、年間49.35時間の超過になる。多くの保守契約では返金率が停止時間に連動するので、契約書に判を押す前に構成を計算しておく意味は大きい。
生産ラインなら別の形で効く。工程を1つ追加するたびに系の稼働率は掛け算で落ちるので、5工程の各々が99.5〜99.9%という悪くない数字でも、系としては98.686%になる。年間115時間、営業日換算で14日分以上の生産機会が消える計算だ。この規模になると、設備投資の回収計画そのものが前提から狂う。
数字の感覚として押さえておきたいのが MTBF の年換算だ。8,760で割ればいい。MTBF 50,000h ≒ 5.71年、MTBF 100,000h ≒ 11.4年、MTBF 1e9 h = 1 FIT = 約11.4万年。データシートに並ぶ非現実的に大きな MTBF は、こう直すと「1台あたりで見れば人間の一生より長い」というだけで、1,000台並べれば話が変わることも同時に分かる。用語と考え方は JIS Z 8115 が基準になる。
稼働率の数字が要求される4つの局面
SLA・保守契約の事前確認。 顧客から「稼働率99.9%以上」を求められたとき、今の機器構成でそれが成立するかを契約前に確かめる。ナイン数と年間停止時間が同時に出るので、契約書の数値と直接突き合わせられる。届かない場合は MTTR を縮めるか冗長化するかの二択になり、どちらがどれだけ効くかもその場で試せる。
冗長化の投資判断。 「サーバーをもう1台買うと、年間停止時間は何分の1になるのか」に数字で答える場面。停止1時間あたりの損失額が分かっていれば、短縮された停止時間に掛けるだけで投資の効果が金額になる。並列2台のケースでは短縮倍率が12,501倍と出るので、2台目の価格が損失額に対して見合うかどうかの判断材料になる。
生産ラインの工程増減の影響評価。 工程を1つ足す・自動化して MTTR を半分にする、といった変更が系全体の稼働率をどう動かすか。直列構成では最も稼働率の低い工程が全体の足を引っ張るので、どの工程を先に改善すべきかが分かる。
資格試験の答え合わせと実務構成の練習。 応用情報技術者・基本情報技術者の稼働率計算、技術士一次や QC 検定の信頼性設計は、直列・並列の稼働率と2台並列の MTTF =1.5×MTBF あたりが定番だ。手計算した答えを検算しつつ、N+1冗長電源のような実務でよく出る構成でも同じ考え方が通ることを確かめられる。
使い方は3ステップ
1. 系の構成を選ぶ。 1台でも止まると系全体が止まるなら「直列」、1台生きていれば動くなら「並列(全冗長)」、同じ機器を n 台並べて k 台動いていればよい構成なら「n個中k個」を選ぶ。N+1冗長の電源やディスクアレイ、多数決を取る三重系は「n個中k個」にあたる。選んだ構成に応じて、下の入力欄が装置リストと同一機器+台数指定とで切り替わる。
2. MTBF と MTTR を入れる。 直列・並列では装置を1行ずつ、最大6台まで追加できる。n個中k個では同一機器の MTBF・MTTR と、総台数 n・必要台数 k を指定する。運転時間 t は既定で8760時間(1年)が入っていて、信頼度 R(t) を評価する時点になる。無停止で切り替わる構成なら MTTR に 0 を入れてもよく、エラーにはならない。
3. 稼働率とナイン数と年間停止時間を読む。 系の稼働率、ナイン数、年間停止時間、信頼度 R(t) が表示される。冗長構成では冗長化しない場合との比較が出るので、停止時間が何分の1になるかを確認できる。装置ごとの内訳表には各装置の稼働率・故障率・FIT・R(t) が並び、系の数字がどこから来ているかを追える。系統構成は信頼性ブロック図としても描かれ、直列では最も稼働率の低い装置が強調される。
典型ケースはプリセット6件(直列2台・並列2台・N+1冗長電源・生産ライン5工程・電子部品のFIT合算・4ナインちょうど)から1クリックで入るので、まずそこから触って挙動をつかむのが早い。
7つのケースで確かめる(入力値 → 結果 → 解釈)
ケース1|直列2台——冗長化ではなく「悪化」の側
入力: 直列 / MTBF 1,500h・MTTR 5h の装置を2台 / t = 8,760h 結果: 稼働率 99.3366519133%(2ナイン・判定「低い」)、不稼働率 6.63348e-3、年間停止時間 58.1093時間、系の MTBF 750h、λ 1.33333e-3 /h(FIT 1,333,330)、R(8760) = 8.46137e-6 解釈: 単体の稼働率は 0.996677740864、つまり99.668%ある。それを2台直列にした結果が99.337%。台数を増やしたのに稼働率は下がっている。直列は「両方生きていないと動かない」構成なので確率が掛け算になり、1未満の数を掛ければ必ず小さくなるからだ。系の MTBF も単体1,500hの半分の750hになる。情報処理技術者試験の稼働率計算で最も出るパターンで、ツールの初期状態でもある。
ケース2|並列2台——同じ2台でも向きが逆なら1万倍効く
入力: 並列(全冗長) / MTBF 50,000h・MTTR 4h のサーバーを2台 / t = 8,760h
結果: 稼働率 99.9999993601%(8ナイン)、不稼働率 6.39898e-9、年間停止時間 0.0033633分、無修理時の MTTF 75,000h、R(8760) = 0.974172021456、単体との停止時間比 12,501倍の短縮
解釈: 単体は稼働率 99.9920006399%(4ナイン・年間42.0446分)。これを並列2台にすると8ナイン、年間停止時間は0.0034分=約0.2秒になる。両方が同時に止まっているときだけ系が止まるので、不稼働率が2乗されて桁が一気に飛ぶ。無修理時の MTTF が 75,000h = 1.5×MTBF になるのは2台並列の教科書値で、資格試験でも頻出。なお系の MTBF は「—」と表示される(並列では 1/Σλ が成立しないため)。
ケース3|N+1冗長電源(3台中2台)——直感に反する MTTF
入力: n個中k個 / MTBF 100,000h・MTTR 8h・n = 3・k = 2 / t = 8,760h 結果: 稼働率 99.9999980804%(7ナイン)、不稼働率 1.91959e-8、年間停止時間 0.0100894分、無修理時の MTTF 83,333.3h、R(8760) = 0.980076116326、単体との停止時間比 4,167.22倍の短縮 解釈: 電源3台のうち2台動いていればよい N+1 構成。稼働率は7ナインまで上がる。ところが無修理時の MTTF は 83,333h で、単体の 100,000h より短い。多数決系・N+1系は「早い段階での故障には強いが、系として見た平均寿命は縮む」性質を持つ。3台のうち2台が壊れた時点で系は止まるので、1台だけの場合より早く終端に達するからだ。修理を前提とする運用なら稼働率のほうを見ればよく、修理できない用途(打ち上げ後の機器など)では MTTF のほうが効いてくる。
ケース4|生産ライン 直列5工程——足を引っ張る工程を特定する
入力: 直列 / (800h, 2h) (1200h, 4h) (600h, 3h) (2000h, 1.5h) (1500h, 2.5h) の5工程 / t = 8,760h 結果: 稼働率 98.6859885099%(1ナイン・判定「非常に低い」)、年間停止時間 115.107時間、系の MTBF 203.39h、FIT 4,916,670、R(8760) = 1.97214e-19、最も稼働率の低い装置は3番目 解釈: 各工程の稼働率は 0.997506 / 0.996678 / 0.995025 / 0.999251 / 0.998336 で、どれも99.5%以上ある。それでも5つ掛け合わせると98.686%まで落ちる。年間115時間の停止だ。最低は3番目の工程(MTBF 600h・MTTR 3h)で、ここを改善すると系への効きが最も大きい。逆に4番目(0.999251)をいくら磨いても、掛け算の中の一番小さい項が残る限り系は上がらない。
ケース5|電子部品のFIT合算——データシートの数字をそのまま足す
入力: 直列 / MTBF 1e8h・5e7h・2e8h・1e9h の4部品(MTTR は全て24h) / t = 8,760h 結果: 稼働率 99.9999136001%(6ナイン)、年間停止時間 0.454118分、系の MTBF 27,777,800h、系の FIT 36、R(8760) = 0.999684689721 解釈: 4部品の FIT はそれぞれ 10・20・5・1。系の FIT はこれを足すだけの 36 になる。故障率が加法的だからで、直列構成では FIT の足し算がそのまま系の故障率になる。系の MTBF は 1/3.6e-8 = 2,777万時間=約3,171年。基板1枚の信頼性をデータシートから積み上げる用途では、この足し算が計算の中心になる。
ケース8|3台中3台——冗長化したつもりが逆効果
入力: n個中k個 / MTBF 100,000h・MTTR 8h・n = 3・k = 3 / t = 8,760h 結果: 稼働率 99.9760038395%(3ナイン・判定「標準」)、年間停止時間 2.10206時間、無修理時の MTTF 33,333.3h、停止時間の変化 0.33336倍(=3倍に増加)、構成は直列と等価 解釈: 3台並べたのに「3台とも動いていないと系が動かない」構成なので、これは直列とまったく同じ計算になる。単体の年間停止時間 0.700744時間に対して系は 2.10206時間、ちょうど3倍に増えている。k と n を取り違えると「冗長化のために台数を増やしたのに可用性が落ちる」という事故がそのまま起きるので、k = n のときは「直列構成と同じ計算になる」旨の注記が出るようにした。
ケース11|稼働率90.9%なのに信頼度は実質ゼロ
入力: 直列 / 1台 MTBF 10h・MTTR 1h / t = 8,760h
結果: 稼働率 90.9090909091%(1ナイン・判定「非常に低い」)、年間停止時間 796.364時間、系の MTBF 10h、λ 0.1 /h(FIT 1e8)、R(8760) = 0(F = 1)
解釈: 10時間に1回壊れるが1時間で直る機器。時間の9割は動いているので稼働率は90.9%になる。一方で1年を無故障で通す確率は exp(-0.1 × 8760) = exp(-876) で、倍精度の下限を大きく下回って0になる。稼働率が高いことと、長期間を無故障で通せることは別物という関係が最も極端に出るケースで、「よく壊れるがすぐ直る」設備の性質をそのまま表している。この場合は「この運転時間では実質的に故障が確実」という補足が添えられる。
実装の中身——桁落ちと二項係数、2つの設計判断
判断1: 稼働率 A の積か、不稼働率 U の積か
系の稼働率を求めるとき、素直な書き方は「各装置の A を掛けて、1 から引く」だ。ところがこれは桁落ちする。直列2台(MTBF 1e9h / MTTR 0.001h ×2)で試すと、1 - ΠA は 2.000177801164682e-12 になった。同じ量を桁落ちしない形で計算すると 1.999999999997e-12 で、相対誤差 8.9e-5。1 に極めて近い値どうしの積から 1 を引くと、有効桁が上位から消えるからだ。
稼働率が5ナイン・6ナインの領域に入ると、意味を持つ情報は「1 からどれだけ離れているか」=不稼働率のほうに全部移る。そこでこのツールは不稼働率 U_sys を先に求め、A_sys = 1 - U_sys とする方針にした。求め方は構成ごとに違う。
直列 U_sys = -expm1( Σ log1p(-U_i) ) 引き算を関数側に押し込む
並列 U_sys = Π U_i 引き算が一度も出ない(厳密)
n個中k個 U_sys = Σ[i=0..k-1] C(n,i)・A^i・U^(n-i)
並列が最も単純なのは、「全台が同時に止まっている確率」がそのまま不稼働率だからで、掛け算しか出てこない。n個中k個は「動作台数が k 未満になる確率」を二項分布の裾から直接足している。信頼度 F(t) についても同じ構造で、F_i = -expm1(-λ_i・t) を使って直接求めている。
この方針が効くのは表示のためだけではない。ナイン数は floor(-log10(U_sys)) で決まるので、U_sys の相対誤差が境界付近にあるとナイン数が1段ずれる。実際、直列2台(MTBF 99,999h / MTTR 2h)と(MTBF 2,038.775094h / MTTR 2h)の組合せでは U_sys = 1.0000000000000156e-3 となり、-log10 が 2.9999999999999933 になって floor が 2 に落ちる。画面には稼働率99.900%と出ているのにナイン数だけ「2ナイン」になる矛盾だ。これを避けるため floor に 1e-12 の許容誤差を足している。
判断2: 二項係数を階乗で出すか、漸化式で出すか
n個中k個の計算には二項係数 C(n,i) が要る。定義どおり n! / (i!(n-i)!) と書くのが素直だが、このツールは n を20台まで許すので使えない。20! = 2.4e18 は倍精度の整数安全域 2^53 ≒ 9.0e15 を超えるからだ。分子と分母が両方とも安全域の外に出た状態で割ると、答えが整数から微妙にずれる。
そこで階乗を経由せず、漸化式で順に積み上げている。
C(n,0) = 1
C(n,i) = C(n,i-1) × (n-i+1) / i
途中に現れる最大値は C(20,10) = 184,756 で、倍精度に余裕で収まる。
計算フローと、ケース3の手計算
全体の流れは次のとおり。
1. 装置ごとに A_i / U_i / λ_i / FIT_i / R_i(t) を求める
2. 構成(直列・並列・n個中k個)に応じて U_sys を直接計算
3. A_sys = 1 - U_sys、ナイン数 = floor(-log10(U_sys) + 1e-12)
4. 年間停止時間 = U_sys × 8760 [h]
5. 構成に応じて R_sys(t) / F_sys(t) を計算
6. 冗長構成なら、単体(A_i の最大値)と停止時間を比較して倍率を出す
ケース3(N+1冗長電源・3台中2台)を追ってみる。
単体 A = 100000/100008 = 0.999920006399
U = 8/100008 = 7.99936e-5
k=2 なので「動作台数が1台以下」の確率を足す
0台動作: C(3,0)・A^0・U^3 = 1 × (7.99936e-5)^3 = 5.12e-13
1台動作: C(3,1)・A^1・U^2 = 3 × 0.99992 × (7.99936e-5)^2
= 1.9195e-8
U_sys = 5.12e-13 + 1.9195e-8 = 1.91959e-8
A_sys = 1 - 1.91959e-8 = 0.999999980804 → 99.9999980804%
ナイン数 = floor(-log10(1.91959e-8)) = floor(7.716) = 7
年間停止 = 1.91959e-8 × 8760 = 1.68156e-4 h = 0.0100894 分
3台とも同時に壊れる確率(5.12e-13)は、2台壊れる確率(1.9195e-8)に対して無視できる大きさしかない。N+1冗長の可用性は事実上「2台目が壊れる確率」で決まることが、この2項の比から読み取れる。
無修理 MTTF の求め方と、その検証
並列・n個中k個では系の MTBF を出さず、修理を考慮しない MTTF を出す。並列で異機種が混ざる場合は包除原理で求める。
並列(一般) MTTF = Σ[空でない部分集合S] (-1)^(|S|+1) / (Σ[i∈S] λ_i)
n個中k個(同一) MTTF = MTBF × Σ[j=k..n] 1/j
装置は最大6台なので部分集合は63通り、全列挙して構わない。この式は検算しにくいので、実装前に R_sys(t) を 0 から十分先まで Simpson 法(400万分割)で数値積分し、独立に突き合わせた。並列異機種3台では包除原理が 67,543.705229h、数値積分との相対差 1.5e-9。3台中2台の 83,333.333333h は相対差 2.1e-12、20台中15台の 6,923.546612h は 3.2e-13 で一致した。2台並列がちょうど 1.5×MTBF になることも同時に確認できている。
n個中k個の式が MTBF × Σ[j=k..n] 1/j という調和和の形になるところは、k が大きくなるほど項数が減って値が小さくなる——つまり単体より短くなる——という性質がそのまま式に現れていて、ケース3の「MTTF 83,333h が単体の100,000hより短い」という結果とも符合する。
単発の稼働率換算では届かないところ
日本語で「MTBF 計算」「稼働率 計算」と検索して出てくるツールは、前半で触れたとおり、MTBF と MTTR を1組だけ入れて A = MTBF/(MTBF+MTTR) を返す単発の換算機がほとんどだ。数字は正しい。ただ、そこから先に進めない。
このツールが上乗せしているのは4点。
- 系統構成を組める — 装置を1行ずつ足して直列・並列・n個中k個を切り替えられる
- ナイン数と年間停止時間への翻訳 — 0.999999993601 という数字は、そのままでは意味が伝わらない
- 冗長化の前後比較 — 冗長化しない場合と並べ、停止時間が何分の1になるかの倍率まで出す
- FIT の合算 — データシートの FIT をそのまま足し込み、系の MTBF に直せる
海外には TI や SiTime が公開している FIT 計算機があるが、いずれも自社部品のデータベースに紐づいていて、手持ちの装置の MTBF を持ち込む使い方は想定されていない。
似た言葉が並ぶ関連ツールとの役割分担
このサイトには「信頼性」「寿命」という語が出てくるツールが他にもあるが、見ている対象がそれぞれ違う。工程能力指数 Cp/Cpk 計算は作られたモノの寸法や特性のばらつきが規格幅に収まるかを見るツール。部品交換時期の管理は個々の部品を次いつ替えるかというスケジュールを追うもの。疲労寿命計算は繰返し応力を何回受けたら折れるかという材料の話。そして本ツールが出すのは、それらを組み上げた系が全体として何%の時間動いているかだ。品質・部品の寿命・系の可用性は、同じ「信頼性」という看板の下にあっても別の物差しで、混ぜて議論すると噛み合わなくなる。
「ナイン」はどこから来た数え方なのか
稼働率を 99.99% ではなく「4ナイン」と呼ぶ言い方は、いまやクラウドの SLA からデータセンターの営業資料まで浸透している。ルーツは通信業界だ。電話交換機の可用性目標として掲げられた 99.999%(5ナイン)が業界の合言葉になり、そのまま IT に持ち込まれた。5ナインは年間停止時間に直すと 5.26分。「電話をかけようとしてつながらない時間が1年で5分」という、当時としてはかなり野心的な目標だったことが数字から伝わってくる。
面白いのは、この数え方が桁だけを見るという点だ。99.99% と 99.995% はどちらも4ナインで、年間停止時間は 52.6分と 26分で倍違う。ざっくり水準を共有するには便利だが、契約書に書く数字としては粗い。だからこのツールでは、ナイン数と一緒に不稼働率と年間停止時間を必ず並べて出している。
2台並列の平均寿命が「2倍」ではなく「1.5倍」になる理由
応用情報でよく問われるところ。同じ機器を2台並べて片方が生きていれば動く構成にしたとき、修理をしない前提での平均寿命(MTTF)は 2×MTBF ではなく 1.5×MTBF になる。
2台並列の無修理MTTF
2台のうち先に壊れる1台まで : MTBF / 2 ← 故障の機会が2倍あるので半分
そこから残り1台が壊れるまで : MTBF ← 無記憶性により「新品と同じ」
合計 : 1.5 × MTBF
鍵は指数分布の無記憶性だ。故障率が一定という仮定の下では、5年動いてきた機器も昨日入れた機器も、これから1時間以内に壊れる確率は同じ。だから1台目が倒れた瞬間、残りの1台は「使い古された機器」ではなく「新品と同じ余命 MTBF を持つ機器」として扱える。直感的には「2台あるんだから寿命も2倍」と言いたくなるが、最初の1台が倒れるまでの期間が半分に縮むぶん、合計は 1.5倍にしかならない。
3台にすると寿命が縮む、という逆説
もっと直感に反するのが多数決系(TMR)だ。3台中2台が動いていればよい構成の無修理 MTTF は MTBF × (1/2 + 1/3) で 0.8333×MTBF。単体より短い。台数を増やしたのに平均寿命が縮むのは、2台目が倒れた時点でもう系が止まるからで、3台とも壊れきるのを待たない。20台中15台まで持っていくと 0.346×MTBF まで落ちる。多数決系は「短い時間で見た信頼度」と「稼働率」を上げるための構成であって、平均寿命を伸ばす構成ではない、というのがこの数字の意味だ。
FIT の「10億時間」はどこから出てきたか
FIT は Failures In Time の略で、10億(1e9)時間あたりの故障件数を表す。なぜ中途半端に見える 1e9 なのか。半導体の故障率を MTBF で書くと 1億時間・10億時間という桁になり、ゼロを数えるだけで消耗する。そこで逆数を取り、実用上ほとんどの部品が 1〜1000 の範囲に収まるようスケールを選んだ結果が 1e9 だった。MTBF 1e9 時間はちょうど 1 FIT にあたり、年に直すと約114,155年になる。部品1個としては永遠に近いが、これを数百個積んだ基板では無視できない値になる——という桁感を持たせるための単位だと考えると腑に落ちる。
バスタブ曲線の真ん中しか見ていない
信頼性工学の教科書に必ず出てくるバスタブ曲線は、故障率の時間変化を3期に分ける。製造欠陥が早々に露見する初期故障期、故障率がほぼ一定になる偶発故障期、部品が摩耗してきて故障率が上がる摩耗故障期。本ツールが仮定している指数分布はこのうち真ん中の偶発故障期だけを表している。出荷直後のエージング前の機器や、設計寿命を超えて使い倒している設備では、計算値より実績のほうが悪くなる。より一般の分布を扱うにはワイブル分布(形状パラメータ m ≠ 1)が要る。
参考: 高可用性 - Wikipedia / 故障率 - Wikipedia
使うときに効くTips
1. MTBF を伸ばすより MTTR を縮めるほうが早い 稼働率の式は MTBF と MTTR の比で決まるので、どちらを動かしても効く。ただし MTBF を倍にするのは設計変更や部品グレードアップの話になるのに対し、MTTR は予備機を1台棚に置く・復旧手順書を整える・夜間の連絡体制を決める、といった運用側の手当てで半分になることがある。費用対効果でまず見るべきはこちら。
2. 直列では最も弱い装置から叩く 直列の稼働率は掛け算なので、一番小さい項が系全体を支配する。他をいくら磨いても、足を引っ張っている1台を放置している限り数字は動かない。ツールは直列構成のとき最も稼働率の低い装置が何番目かを示すので、そこを起点にする。
3. 並列の計算値は理想値 並列冗長の稼働率は、2台が独立に壊れることを前提にしている。同じ電源系統からとっている、同じ空調で冷やしている、同じロットの部品を使っている——このどれかに当たると共通原因故障で2台同時に落ちるので、桁通りの値は出ない。冗長化は電源と設置場所まで分けて初めて計算どおりになる。
4. MTBF は保証値ではない 「MTBF 50,000時間」は「50,000時間まで壊れない」ではなく「平均するとその間隔で壊れる」。指数分布では経過時間によらず故障率が一定なので、買った翌月に壊れることも普通に起こる。
5. 運転時間 t は R(t) にしか効かない 運転時間を変えても稼働率・ナイン数・年間停止時間は1桁も動かない。動くのは信頼度 R(t) と不信頼度 F(t) だけ。連続運転の長さを評価に織り込みたいなら、見る欄はここになる。
よくある質問
並列構成にしたら系のMTBFが「—」になった。計算できていないのか
計算できないのではなく、あえて出していない。直列系の MTBF は 1/Σλ で厳密に求まるが、並列系では話が変わる。1台壊れても系は動き続け、その間に修理が終われば元に戻るため、系の故障間隔は修復のスピード(復旧率)にも依存する。復旧率を無視して 1/Σλ を並列系に当てはめると、数値そのものが間違いになる。代わりに表示しているのが「無修理時のMTTF」で、これは修理を一切しない前提で系が停止するまでの平均時間。稼働率は修理を織り込んだ値なので、この2つは別の前提の数字だと理解して使ってほしい。
MTTR に0を入れてもエラーにならない。これは正しい入力なのか
正しい入力として扱っている。MTTR = 0 は「瞬時復旧」「無停止で予備側に切り替わる」構成を表し、そのとき A = MTBF/(MTBF+0) = 1 で稼働率100%になる。無停止電源の切替やホットスタンバイのモデル化で使う。ただし結果は「12ナイン超」で頭打ちにしてある。不稼働率が 1e−12 を下回る領域は、共通原因故障も切替失敗も無視したモデルの外挿でしかなく、倍精度の丸め誤差だけで桁が動く。数字を信じるというより「この構成では停止時間が計算上ほぼゼロ」という定性的な読み方をするところだ。
稼働率が「100.00%」と表示されず、99.9999993601% のような細かい桁で出るのはなぜか
丸めてしまうと冗長化の効果が画面から消えるため、不稼働率の桁に応じて小数点以下の表示桁を自動で伸ばしている。並列2台の稼働率を「100.00%」と出したら、単体との違いも3台にしたときの違いも区別がつかない。同じ理由で不稼働率とナイン数と年間停止時間を必ず併記している。稼働率が1に近づくほど、意味のある情報は「1からどれだけ離れているか」の側に移るからだ。報告書に載せるなら、年間停止時間まで落としたほうが読み手に伝わる。
「n個中k個」で3台中3台にしたら稼働率が下がった。台数を増やしたのに悪化するのか
3台中3台は「3台すべてが動いていないと系が動かない」構成、つまり直列とまったく同じ計算になる。k = n を選ぶと結果にその旨の注記が出る。冗長化のつもりで台数を増やしても、必要台数 k を一緒に増やしてしまうと故障の機会だけが増えるので、停止時間は台数に比例して伸びる。逆に k = 1 は並列(全冗長)と同じ計算になる。N+1冗長の電源を組みたいなら、必要な負荷をまかなえる台数を k、実装する台数を n に入れるのが正しい使い方で、n − k が予備の数にあたる。
稼働率は99%あるのに、信頼度 R(t) がほぼ0と出る。矛盾していないか
矛盾ではなく、2つがまったく別の量だからだ。稼働率は「長い目で見て時間の何割動いているか」という定常状態の比率で、壊れては直しを繰り返すことを前提にしている。一方の信頼度 R(t) は「t 時間を1回も故障せずに通しきる確率」で、途中で1回でも壊れたらアウト。頻繁に壊れるが数分で直る機器は、稼働率が高いのに長時間連続運転の信頼度は限りなくゼロになる。運転時間 t を変えても稼働率・ナイン数・年間停止時間は動かず、R(t) と F(t) だけが動くのは、この違いがそのまま出ているため。無人運転や長期ミッションを評価したいなら R(t) を、日々の可用性を評価したいなら稼働率を見る。
入力した MTBF や装置構成はどこかに送信されるのか
送信されない。計算はすべてブラウザの中で完結していて、MTBF・MTTR・台数といった入力値がサーバーに送られたり保存されたりすることはない。社内設備の実績 MTBF や、取引先から受け取った機器の数値をそのまま入れても外には出ない。結果のコピーもブラウザのクリップボードに書き込むだけで通信は発生しない。ページを閉じれば入力値は残らないので、繰り返し使う条件は手元に控えておいてほしい。
まとめ
MTBF と MTTR を稼働率に直すところまでは電卓でもできる。難しいのはその先——装置を並べたときに系がどう変わるか、出てきた 0.999999993601 が年間何時間の停止を意味するのか、冗長化すると何分の1になるのか。そこを一息で出すのがこのツールだ。直列・並列・n個中k個を切り替えて、手元の構成で試してみてほしい。
品質のばらつきを見るなら工程能力指数 Cp/Cpk 計算、部品の交換タイミングを追うなら部品交換時期の管理、材料が繰返し応力に何回耐えるかは疲労寿命計算が使える。
計算結果の解釈で迷ったところや、こういう構成も扱ってほしいという要望があれば、お問い合わせページから知らせてほしい。
Mahiro
Mahiro Appの開発者。サーバーを2台並列にした構成で「系のMTBFは何時間か」と聞かれ、1/Σλ では答えが出ないことに気づいて調べ直したのが、このツールを作った直接のきっかけだ。
運営者情報を見る