ABCDEFGHIJKLMNOPQRSTUVWXYZAA
1
inputTaskCount
min_output_tasks
max_threadsscatter?scatterCountoutputTaskCount
inputThreadCount
outputThreadCount有効Inputスレッド有効Outputスレッドメモ
2
114FALSE#N/A14411
max_threads = 4 にしたところで、タスク数がそもそも1なので、並列度は1にしかならない
3
124TRUE222212
inputThreadCountが2になっているが、inputTask数が1なので、inputの並列度は1にしかならない
Scatter されて output タスク数は2になり、output スレッド数も調整されて、並列度が期待通り2にあがる
4
144TRUE441414
Scatter されて output の並列度が4になった
5
184TRUE881418
BUG: max_threads=4 なのに、OutputThreadが8つになってしまった
6
214FALSE#N/A24422
7
224FALSE#N/A24422
8
244TRUE242424
9
284TRUE481414
Inputの並列数を減らしてScatterしようとするので良くない
1つのスレッドで2つのOutputTaskが動くパターン
10
414FALSE#N/A44444
11
424FALSE#N/A44444
12
444FALSE#N/A44444
13
484TRUE282424
Inputの並列数を減らしてScatterしようとするので良くない
14
15
16
17
緑背景: コア数2とした時のデフォルト min_output_tasks と max_threads
18
19
inputTaskCount = FileInputプラグインの場合ファイル数、Inputプラグインの場合1
20
scatter? = inputTaskCount < min_output_tasks
21
ScatterExecutor の場合
22
scatterCount = (min_output_tasks + inputTaskCount - 1) / inputTaskCount
23
outputTaskCount = inputTaskCount * scatterCount
24
inputThreadCount = max(max_threads / scatterCount, 1)
25
outputThreadCount = min(max_threads, outputTaskCount) *変数として定義されているわけではない
26
DirectExecutor の場合
27
outputTaskCount = inputTaskCount
28
inputThreadCount = max_threads
29
outputThreadCount = max_threads *正確には input と output で同じスレッドを利用する
30
31
32
33
Q. DirectExecutor の場合に、newFixedThreadPool で maxThreads 分スレッドを作っているが、min(inputTaskCount, maxThreads) 作れば十分なのでは?
34
Q. FileOutput で試すと ScatterExecutor で「有効Outputスレッド数」よりも少ない並列度になるのだが、なぜ? embulk-output-bigquery なら問題なかった
35
例えば、入力ファイル2、-X min_output_tasks=4 =X max_threads=4 で、FileOutputPlugin で ThreadID をログに出したところ、4 ではなく 2個のスレッドしか使われていなかった
36
https://github.com/sonots/embulk/tree/thread_log
37
./gradlew cli
38
pkg/embulk-0.8.6.jar run -l trace -X page_size=64 -X min_output_tasks=4 -X max_threads=4 example/two_files.yml
39
Q. InputTaskCount=1, min_output_tasks=8, max_threads=4 で、実験してみると OutputThread が 8 になってしまった
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100