セージ の メモ書き

メモこそ命の恩人だ

C# - MTBF/MTTF/稼働率

MTBF/MTTF

名称 意味 算出方法
MTBF (Mean Time Between Failure) 平均故障間隔 稼働時間の合計 / 稼働回数
MTTR (Mean Time To Repair) 平均復旧時間 復旧時間の合計 / 故障回数
  • 信頼性を示す指標の一つ。
  • 算出方法は、該当時間の平均値を求めるだけ。

以下の状況を考える。

区間 稼働時間 復旧時間
1 400時間 24時間
2 600時間 36時間
3 500時間 48時間
public record OperationTime(float OperatedTime, float RepairedTime);
var timeList = new List<OperationTime>() 
{
    new OperationTime(400, 24),
    new OperationTime(600, 36),
    new OperationTime(500, 48),
};

var mtbf = timeList.Average(x => x.OperatedTime);
Debug.WriteLine($"MTBF : {mtbf} 時間");
// MTBF : 500 時間

var mttr = timeList.Average(x => x.RepairedTime);
Debug.WriteLine($"MTTR : {mttr} 時間");
// MTTR : 36 時間

稼働率

  • 可用性を示す指標の一つ。
  • 算出方法は二通り。
    • 1.稼働時間 / 総運用時間
    • 2.MTBF / (MTBF + MTTR)
  • 2を分解して考えると、1になる。結局同じこと。

前述の運用時間で計算してみる。

var operatedTimeSum = timeList.Sum(x => x.OperatedTime);
var repairedTimeSum = timeList.Sum(x => x.RepairedTime);
var operationRate1 = operatedTimeSum / (operatedTimeSum + repairedTimeSum);
Debug.WriteLine($"稼働率 : {operationRate1}");
// 稼働率 : 0.9328358

var operationRate2 = mtbf / (mtbf + mttr);
Debug.WriteLine($"稼働率 : {operationRate2}");
// 稼働率 : 0.9328358

稼働率と復旧時間

稼働率と感じても、基準を変えると、意外と復旧時間が長いと感じる。
基準×稼働率ごとの復旧時間は以下の通り。

基準 99.0% 99.5% 99.9% 99.95% 99.995%

(365日)
3日と
15時間36分0秒
1日と
19時間48分0秒
8時間45分36秒 4時間22分48秒 26分17秒

(31日)
7時間26分24秒 3時間43分12秒 44分38秒 22分19秒 2分14秒

(7日)
1時間40分48秒 50分24秒 10分5秒 5分2秒 30秒
TimeSpan GetRepairedTime(int days, double operationRate) 
{
    var repairedRate = 1 - (operationRate / 100);
    return new TimeSpan(days, hours: 0, minutes: 0, seconds: 0) * repairedRate;
}



以上