Chienomi

MultiMachines FFmpeg TCP-VP9 (mmfft9) 2023-09改良

開発::util

「この機能は必要ない」と言ったものの、実際のところあったほうが便利という機能の追加。

誰も使っていなくて、誰も注目もしてないかもしれないソフトウェアだけど、私はめちゃくちゃ使っているからいいのだ。

現状ではまだ十分にテストできていないため、develブランチに留まる。

残り時間の推測

mmfft9-infoestimated_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するようにした。