Что есть несколько хороших подходов к предсказанию времени завершения длинного процесса?

tl; dr: Я хочу предсказать завершение копирования файла. Каковы хорошие методы с учетом времени начала и текущего прогресса?

Во-первых, я понимаю, что это совсем не простая проблема и что предсказывать будущее сложно. Для контекста я пытаюсь предсказать завершение копирования длинного файла.

Текущий подход:

На данный момент я использую довольно наивную формулу, которую придумал сам: (ETC означает расчетное время завершения)

ETC = currTime + elapsedTime * (totalSize - sizeDone) / sizeDone

Это работает при предположении, что оставшиеся файлы be copy будет делать это со средней скоростью копирования до сих пор, что может быть или не быть реалистичным предположением (здесь речь идет о ленточных архивах).

  • PRO: ETC будет постепенно меняться и становится все более и более точным по мере того, как процесс приближается к завершению.
  • ПРОТИВ: Он плохо реагирует на неожиданные события, такие как застревание копии файла или быстрое ускорение.

Другая идея:

Следующая моя идея заключалась в том, чтобы вести учет прогресса за последние n секунд (или минут, учитывая, что эти архивы должны занимать часы) и просто сделайте что-нибудь вроде:

ETC = currTime + currAvg * (totalSize - sizeDone)

Это своего рода противоположность первому методу:

  • PRO: Если скорость изменяется быстро, ETC будет быстро обновляться, отражая текущее положение дел.
  • ПРОТИВ: ETC может много прыгать, если скорость непостоянна.

Наконец,

мне вспоминаются предметы по технике управления, которые я изучал в универе, цель которых, по сути, состоит в том, чтобы попытаться создать систему, которая быстро реагирует на внезапные изменения, но не является нестабильной и безумной.

С учетом сказанного, я мог бы подумать и о другом варианте - вычислить среднее значение обоих из вышеперечисленных, возможно, с каким-то взвешиванием:

  • Придумайте больший вес для первого метода, если копия имеет довольно последовательную длинную- срок средней скорости, даже если он немного прыгает локально.
  • Придавайте большему весу второму методу, если скорость копирования непредсказуема и, вероятно, приведет к таким вещам, как ускорение / замедление на длительные периоды или вообще остановка на длительные периоды.

Я действительно прошу:

  • Любые альтернативные подходы к тем двум, которые я дал.
  • Если и как вы могли бы объединить несколько разных методов, чтобы получить окончательный прогноз.
15
задан Cam Jackson 6 October 2011 в 07:09
поделиться