🐓

CWL の requirements 一巡り: ToolTimeLimit

2020/12/17に公開

この記事は CWL Advent Calendar 2020 の17日目の記事です。

Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]

今回は CWL v1.2 で定義されている ToolTimeLimit について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。

対象読者

Conformance test #216: tests/timelimit3.cwl:

class: CommandLineTool
cwlVersion: v1.2
inputs: []
outputs: []
requirements:
  ToolTimeLimit:
    timelimit: 0
  WorkReuse:
    enableReuse: false
baseCommand: [sleep, "15"]

ToolTimeLimit.timelimit を設定することで、ツールの実行時間の上限を設定できます。timelimit: n (n: 正の整数) の場合は n 秒が実行時間上限になります(コンテナイメージの pull やファイルのステージング処理の時間は含みません)。上の例のように timelimit: 0 の場合は時間制限なしとなります。

この Process requirement はジョブスケジューラーなどへのアノテーションとして使われることを想定したものですが、実際に ToolTimeLimit でツールの実行制御を行ってくれるかどうかは処理系の実装に依存する[2]ため、事前に確認が必要です。

脚注
  1. つまり、Process requiremens を含むワークフローやツール定義は、全ての CWL 準拠のワークフロー実行処理系で動かせるわけではありません。詳細は別記事を参照してください。 ↩︎

  2. ToolTimeLimit の説明には "A CommandLineTool whose execution duration exceeds the time limit may be preemptively terminated and considered failed." とあります("may" が重要)。1.6 節で説明されている通り、仕様書中で "may" と記述があるものは必ずしも実装されているとは限りません。 ↩︎

Discussion