Skip to content

Commit 7f65f1f

Browse files
committed
info about memory buffers
1 parent 639809b commit 7f65f1f

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

doc/memory.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Here is a typical buffer organisation for a production FLP:
2+
- there is one buffer per CRU end point or CRORC channel, providing empty data pages (superpages) to the hardware for DMA transfer from the readout card to the computer memory.
3+
- there is one buffer for the FMQ channel to Data Distribution, to copy data which overlap data pages to a single block of memory. Data Distribution requires that data from a HeartBeatFrame (HBF) is shipped in a single FMQ message.
4+
5+
All buffers and data transfer operations are independant one from the other. If a single buffer gets full, the whole FLP system can be affected: CRU packets dropped, incomplete timeframes, data synchronization or consistency issues.
6+
7+
Buffers are circular, pages are used in the order they are put in the buffer. On startup, the pages are in the order of their memory address.
8+
Buffer and pages size should be adapted to the throughput and data pattern at runtime.
9+
10+
11+
In case of some "buffer low" issues, there are 3 log messages for each episode:
12+
13+
1) "buffer usage is high", when reaching 90% usage.
14+
2) "buffer full" at 100% usage.
15+
3) "buffer back to reasonable" when down to below 80% usage.
16+
17+
When one of the buffer is full, other messages will start to appear, depending on the context (no page left, packets dropped, etc).
18+

0 commit comments

Comments
 (0)