-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES
103 lines (93 loc) · 5.79 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
101
102
103
Changes from the previous version:
Version 2.3
- fix major bug in ER in which use of ByteBuffer backing events is released for
reuse BEFORE all events written to file, resulting in corrupted data.
- make EB multithreaded
- add ability to flush events through emu every 2 seconds if data rate is low
- add fake Trigger Supervisor to handle fake ROCs
- add flag to scripts forcing use of IPv4
- add emu config option to set preferred ET communication subnet
- make ET event handling more efficient
Version 2.4
- simplify setting (error) state of emu.
Eliminate internal polling of channels, transports, and modules for errors to determine
state. Have them report an error when it occurs. Eliminate unnecessary locks when
finding state and reporting errors/stats.
Have reset shut down ability for chan, trans, mods to change state.
- add RESETTING state
- add cmsgpassword to cMsg client UDLs in emu's communication with platform cMsg server
- fix bug in quitting EB's build threads
- get emu domain working with new protocol and preferred subnet
Version 2.5
- Compatible with et-16.0
- ER input channels do not parse beyond first bank header
- Channels handle user events coming right after prestart
- Remove code handling more than one type of ring item.
Use compact evio structures only instead of that and EvioEvent objects.
- correctly handle an event designated as the "first event" to be identified
by the output file channel and passed to the EventWriter so it can be
written as the first event in each file split.
- Now ET output channel sets its endian to same as module -
just like emu domain output channel.
Version 2.6
- ByteBufferSupply class no longer requires use of synchronized code if
user specifies option to release ByteBufferItems in same order as acquired.
- Emu input channel now uses ByteBufferSupply without synchronization and
EB now ensures those buffers are released in order.
- fake ROC can operate without output channel
- EB now has a resource-freeing thread which cleans up after build threads.
Build thread optimized if only 1.
- Emu domain server no longer kills off other domain servers at the same
EXPID and port. Each server can ignore multicasts from components of the
wrong name. Thus multiple sessions can coexist with domain servers of the
same port & EXPID if they serve different components.
This requires emu domain UDL to contain component name and there's a
communication protocol change - hence the new version number.
- fix bug in which user event processing can change the endian order of the
whole backing buffer (and therefore the events to be built). Happens when
input data in opposite endian as module output.
- fix bug in which EB releases user event buffer more than once.
- emu domain sends prestart through emu with change in cMsg-5.0 2/23/16
- in emu output channel, fix bug in which all events following a "first event"
are tagged as first events
- in cmsg output channel:
1) write thread count = 2 by default (15x better performance than 1)
2) use internal buffer supply for efficiency
- 3/21/16
- statistics are now being kept for EB and ER modules' input and output channels'
occupancy levels (0=empty, 100=full). This is for finding bottlenecks.
- in statistics message there are four new payload items:
1) array of ints with input channels' ring occupancy levels (0 - 100)
2) array of ints with output channels' ring occupancy levels (0 - 100)
3) array of Strings with input channel names (corresponding to array #1)
4) array of Strings with output channel names (corresponding to array #2)
- undo previous change in which output channels move all user events from before
to after prestart. They now pass everything in order received.
- the ER now throws away all events arriving prior to prestart with the exception
that "first events" arriving then will be saved and written after the prestart
event.
- fix bugs in calculating output channel fill level (4/22-5/3/2016)
- make ER single threaded & fix bug recently introduced when rewritten to handle user
and first events.
- fix bug in DataChannelAdapter setting the # of ring items in each ring
(must be power of 2)
- fix bug writing END event in EB with multiple build threads
- make the single post-build thread into one thread for each input channel which
increased performance up to 20% in case of 3 build threads
- fix bug in which ER has null pointer exception if end or reset call multiple
time in succession
- rewrite ET output channel code so it's 20% faster with peaks up to 50% faster.
Uses one less thread too. Does away with old limitation that at most 1/2 the number
of EB build buffers can be written into any one ET event (ring buffer circulation
problem).
- make EB build thread simpler and fix bug in which "end" which immediately follows
"go" will hang EB if build thread index != 0
Version 2.7
- Major improvements in performance. Made makeTriggerBankFromRocRaw() much more efficient
and generate much less garbage. Also made makeTriggerBankFromPhysics() more efficient.
The EB spends a large percentage of its time in these methods.
Much of the improvements are from using evio-5.2. In particular, CompactEventBuilder
was modified to generate much less garbage. EvioNode now has getIntData(), getLongData(),
and getShortData() methods which are faster than handling ByteBuffers. EvioCompactReaderUnsync
& EvioWriterUnsync replaces EvioCompactReader & EvioWriter with identical but unsynchronized
methods.