続 x264の--threads

この前のx264の--threadsの続き。

この前は、Aviutlのフィルタはなし、という条件で、ほとんどx264しか動いていないような状況だった。

これが、Aviutl側でばんばんフィルタを使ったりする、つまりAviutlとx264がCPUを奪い合うような状況だとどうなるのかな、ということを試してみた。

まあ、あんま変わらないとは思うのだけど、一応…。


CPU使用率やスレッド表示はProcessHackerを使用。眺めてると面白いです。…わたしだけか。




まず、この前のCPU使用率。
threads_test_01s
こんな感じでAviutlが5~10%、残りがx264で、ほとんどx264ばかりが動いている状況。

スレッドとかの状況。
threads_test_01n
クリックで拡大

でも、自動フィールドシフトとか、その他いろいろな重いフィルタを使用すると、Aviutlのほうの処理が重くなるので、もっとAviutl側が動くようになり、x264の使用出来るCPU時間が減っていく。

ちょっと条件を変えて、
・自動フィールドシフト(スレッド=16)
・透過性ロゴ
・クリップ&クロップ
・リサイズフィルタ
・エッジレベル調整MT
・バンディング低減MT
(NL-Means Light GPUは省略)
あたりのフィルタを入れてみると
threads_test_02s
Aviutlが40%前後、x264が60%前後…

こういうAviutlとx264がCPUを奪いあうような状況では、x264の--threadsの値がエンコード速度にどう関係するのか…、デフォルトのままでいいのか…。



環境
Intel Core i7 3770K (4C/8T, 3.9GHz @ 1.05V)
メモリ DDR3-1600 9-9-9-24 16GB

Win7 x64
Aviutl 0.99m
x264 r2208 x64 8bit
x264guiEx 1.57

素材
犬日々ED部分 1920x1080i 29.97fps 1分35秒

Aviutl フィルタ
・自動フィールドシフト(スレッド=16)
・透過性ロゴ
・クリップ&クロップ
・リサイズフィルタ
・エッジレベル調整MT
・バンディング低減MT
(NL-Means Light GPUは省略)

x264 オプション
--preset slow --crf 20 --qcomp 0.7 --aq-strength 0.4 --psy-rd 1:0.2 --min-keyint 4 --subme 9 --trellis 2



(参考)各スレッドの状況
threads_test_02n
クリックで拡大

Aviutlのスレッドの状況の拡大
threads_test_02t
クリックでもっと拡大

こんなかんじで、大量のスレッドがAviutlの方でも動き、さらにx264のスレッドもたくさん動く、というカオスな状況になっている。



結果
x264_afs_threads_fps
今回は、--threads 15~21あたりが最速。とはいえ、自動設定の--threads 12と差はごく僅か。あと、やはりスレッド数を増やしすぎると、少し遅くなるようだ。(--threads 22~24はやはりやや遅い)

--threads 10がなんか妙に遅いのは割り込みが入った(なんか裏で動いた)のかもしれない…寝ている間にやらせているのでよくわからないけど。

--threads 1の時に対する倍率に直すとこんな感じ。
x264_afs_threads_mul
AviutlのほうもCPUを食うので、高速化率は前回(最大×4.16倍)には当然及ばず、×3.2倍ほどだった。



これが当然の結果なのかはよくわからないけれど、Aviutlとx264がCPUを奪い合うような状況でも、前回(ほとんどx264のみが動く)時と同じ傾向のグラフになった。僅かな差はあるものの、基本的には--threadsの指定はデフォルトでいい模様(※1)。

つまり、特にいじらなくてもちゃんと速度が出るよ、という確認ができたのかな、と。

(※1)
まあ、今回の最速は--threads 15~21だったように、こんな感じで測定すれば最速となるところはわかるのだろうけど、ほんの少しの差だし、環境や設定によっても少しづつ変わるだろうし、この測定も結構面倒なので、もう自動でいいんじゃないか、とそういうこと。


続きます。(こちら>>)
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

rkmppenc
- Rockchip系SoCのhwエンコーダ

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR