著者:コーリー・ミニヤード
導入
少し前にMVは、安全性が重要なシステム向けにXenのようなハイパーバイザーを検討していると講演しました。その理論は、ハイパーバイザーはよりシンプルで認証しやすいソフトウェアであり、ハイパーバイザー上で動作する安全性が重要なシステムを構築しつつ、Linuxも同時に利用できるというものでした。これはあくまで検討段階であり、現在はその方向へは進んでいません。
理由はいくつかあります。なぜこれが悪い考えだと思うのか、もう少し詳しく説明しましょう。
数学
基本的に、すべては確率の問題に帰着します。可用性の観点から言えば、当社には年間約5分のダウンタイム、つまり99.9
安全性は全く別の話です。10^-5 では ASIL-A にしか達しませんが、Linux はそれに適しているかもしれません。「かもしれない」という点を強調すべきです。Linux にとって 10^-5 でさえ無理があると思います。これは 10 万時間に 1 回、つまり約 11.5 年に 1 回しか故障しないことを意味します。しかし、ASIL-A を望む人は誰もいないようです。ASIL-B に到達するには、1 時間あたり 10^-6 程度の故障、つまり約 115 年に 1 回しか故障しない必要があります。Linux でこれを実現できるとは、私には自信がありません。
これらの数値には説明が必要です。高可用性システムは、MMTF (平均故障時間) と MTTR (平均修復時間) に基づいて評価されます。したがって、故障率が 10^-4 (MTTF が 5x10^-3) で、MTTR が 5 時間であるシステムがある場合、可用性の数値は次のようになります。A =MTTF/(MTTF + MTTR) =5000/(5000 + 5)=.999、つまり 9 が 3 つです (これらの式では MTBF を使用すべきであることはわかっていますが、これらの計算ではその差は重要ではありません)。これらのシステムを 2 つ組み合わせて冗長システムを構成すると、可用性は基本的に、両方のシステムが同時にダウンする平均時間によって制限され、式 At=1 -1n(1 - A(n)) = 1-(1-.999)(1-.999)=.99998999、つまりほぼ 9 が 6 つになります。しかし、システムがシンプレックス(1つのシステムのみが稼働している状態)の場合のメンテナンス時間なども考慮に入れる必要があるため、実際にはそれよりも少なく、おそらく99.9
安全要件は極端に思えるかもしれませんが、全体像を捉えればそうではありません。AAAによると、米国では平均して年間293.3時間運転しており、2018年の米国の人口は3億2709万6265人でした。つまり、年間960億時間の運転です。故障率が1時間あたり10⁻⁶で、100回の故障のうち1回が死亡事故につながると仮定すると(これはあくまで大まかな推測ですが)、年間約1000人の死亡者が出ることになります。もちろんこれは大まかな数字ですが、問題の規模と、安全上重要なシステムの信頼性がなぜこれほど高い必要があるのかを理解する上で参考になります。年間1000人の死亡者というのは、人間の死亡者数に比べればはるかに少ないです。2018年には米国で3万6560人が交通事故で亡くなっています。しかし、それでも大きな数字であり、死亡には至らなかったものの事故で大きな影響を受けた人は含まれていません。自動車メーカーは、これほどの責任を負うことを望んでいないでしょう。
Linuxに戻る
したがって、現在の技術を使用すれば、Linuxで10^-4、あるいは10^-5の信頼性を達成することは可能だと考えていますが、安全性が重要なシステムに必要な信頼性レベルである10^-6から10^-8を満たすことは不可能です。
レビューをより厳しくしたり、時間を長くしたり、静的解析を行ったりといった問題ではないと思います。Linuxは、平均をはるかに上回る信頼性と優れたシステムおよび手順を備えた素晴らしいソフトウェアです。しかし、マルチスレッドソフトウェアでそのレベルの信頼性を実現するには、根本的な問題があります。私がそう考える理由については、次の記事で説明します。
Please reach out to discuss your particular scenario today.