You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/releaseNotes.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -451,3 +451,6 @@ This file describes the main feature changes for each readout.exe released versi
451
451
## v2.10.1 - 20/04/2022
452
452
- Updated configuration parameters:
453
453
- equipment-file-*.updateOrbits: when set to zero, RDH orbits are not updated in file loop replay. This is needed for some reconstruction tests. This however creates a stream of data with inconsistent orbit ids and mismatching timeframe information.
454
+
455
+
## v2.10.2 - 04/05/2022
456
+
- Added some buffer monitoring counters. They are logged in console stats and in monitoring (readout.bufferUsage, one per buffer, from 0% to 100%).
Copy file name to clipboardExpand all lines: src/ConsumerFMQchannel.cxx
+4-1Lines changed: 4 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -286,8 +286,11 @@ class ConsumerFMQchannel : public Consumer
286
286
throw"ConsumerFMQ: failed to get memory pool from " + memoryBankName + " for " + std::to_string(memoryPoolNumberOfPages) + " pages x " + std::to_string(memoryPoolPageSize) + " bytes";
Copy file name to clipboardExpand all lines: src/MemoryPagesPool.h
+8-1Lines changed: 8 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,7 @@
18
18
#include<map>
19
19
#include<memory>
20
20
#include<string>
21
+
#include<mutex>
21
22
22
23
#include"CounterStats.h"
23
24
#include"DataBlockContainer.h"
@@ -43,7 +44,8 @@ class MemoryPagesPool
43
44
// - size of memory block in bytes (if zero, assuming it is big enough for page number * page size - not taking into account firstPageOffset is set)
44
45
// - a release callback to be called at destruction time
45
46
// - firstPageOffset is the offset of first page from base address. This is to control alignment. All pages are created contiguous from this point. If non-zero, this may reduce number of pages created compared to request (as to fit in base size)
size_tgetNumberOfPagesAvailable(); // get number of pages currently available
60
62
void* getBaseBlockAddress(); // get the base address of memory pool block
61
63
size_tgetBaseBlockSize(); // get the size of memory pool block. All pages guaranteed to be within &baseBlockAddress[0] and &baseBlockAddress[baseBlockSize]
64
+
intgetId(); // get pool identifier, as set on creation
62
65
63
66
// get an empty data block container from the pool
voidsetBufferStateVariable(std::atomic<double> *bufferStateVar); // the provided variable is updated continuously with the buffer usage ratio (0.0 empty -> 1.0 full)
80
84
81
85
private:
82
86
@@ -87,8 +91,10 @@ class MemoryPagesPool
87
91
enum BufferState {empty, high, full};
88
92
BufferState state = BufferState::empty;
89
93
voidupdateBufferState();
94
+
std::atomic<double> *pBufferState = nullptr; // when set, the pointed variable is updated everytime updateBufferState() is called
90
95
91
96
std::unique_ptr<AliceO2::Common::Fifo<void*>> pagesAvailable; // a buffer to keep track of individual pages
97
+
std::mutex pagesAvailableMutexPush; // a lock to avoid concurrent push-back of free pages to fifo
92
98
93
99
size_t numberOfPages; // number of pages
94
100
size_t pageSize; // size of each page, in bytes
@@ -124,6 +130,7 @@ class MemoryPagesPool
124
130
CounterStats t1, t2, t3, t4;
125
131
126
132
CounterStats poolStats; // keep track of number of free pages in the pool
0 commit comments