MultiMachines FFmpeg TCP-VP9 (mmfft9) 2023-09改良
開発::util
序
「この機能は必要ない」と言ったものの、実際のところあったほうが便利という機能の追加。
誰も使っていなくて、誰も注目もしてないかもしれないソフトウェアだけど、私はめちゃくちゃ使っているからいいのだ。
現状ではまだ十分にテストできていないため、devel
ブランチに留まる。
残り時間の推測
mmfft9-info
にestimated_duration
が追加された。
これは単純に総容量 / ワーカーのパワー合計
で求められている。
非常にざっくりとした値ではあるが、もともと推測時間通りに終わるとは限らないので、非常に長い時間がかかるものの進捗状態を確認するのには、あると良い。
human readableなキューサイズの表示の改善
-h
オプションつきだとキューサイズは単位つきで表示されるが、TB
まで行ってしまうと全然変わらなくて参考にならなくなってしまう。
そこで、TBサイズの場合は小数点以下第1位まで、PBサイズの場合は小数点以下第2位まで表示するように変更した。
サイズレートの自動算出
もともとはrequire_relative
を知らない時期に書いたということもあって、パワーとレートの調整は手動でやる形にしていたのだが、思いのほかタイトルごとの時間あたり処理量の差というのが大きいので、自動算出できるようにした。
これは意外と大きな変更で、まずmmfft9-power
がライブラリ化され、mmfft9-q
及びmmfft9-run
でロードされるようになった。
同時に、mmfft9-power
は全体平均の算出、対象タイトルとの比の算出を行うようになった。
mmfft9-q
はグローバルオプションでuse_calc_rate
が有効な場合に対象タイトルとの比からレート算出し、サイズにその比をかけるようになった。
mmfft9-run
はサーバーに申告するpower値の算出に使う。
両者ともstandard
による基準タイトルを参照するが、シングルホストの場合はあまり気にする必要がなくなった。
また、これによりpower
ファイルは使われなくなったが、人が参照するのには便利なので残されている。
パワー記録にタイプを利用
今までpowerはtypeに関係なく一緒くたに記録していたが、明らかに間違った挙動であるため修正された。
これにより、従来title_power
という名称だったdbmファイルはtype-title_power
の形に変更され、リネームしないと引き継がれなくなっている。
mmfft9-hungup.rbの追加
mmfft9-hungup.rb
はホストやワーカーが正しくdie
できなかった場合や、ネットワーク切断などでワーカーからの情報を受け取れなかった場合に、サーバーからワーカーを削除するためのものである。
ワーカーが正しく完走した場合、動作に支障はないが、infoの表示が気になる。
ワーカーが途中でhung upしてしまった場合、処理途中だったファイルをキューに戻さないといけない。
mmfft9-hungup.rb
はまずinfo
コマンドを発行して、サーバーからワーカーのリストを受け取る。
これは、ワーカーの指定に(fnmatchによる)パターンを受け入れるためである。
そして、-b
によるtakebackオプションを有効にした場合はdie
コマンドを、していない場合はbye
コマンドを送信する。
サーバーを死ににくく
ソケットでの通信でエラーを生じた場合など、意図せぬ例外によってサーバーが落ちることがあった。
ちゃんとこのあたりをrescueするようにした。