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
At present, there is a very large overhead per channel: a large, fixed-size, in-memory queue is allocated, even though most of the channels are empty most of the time. It should be possible to find a way to minimise this unused memory.
The text was updated successfully, but these errors were encountered:
One proposal for a system with greatly reduced per-channel overhead would be to use a shared memory pool, rather than one per channel. This could work something like the following:
For each channel, a queue of pointers to records is maintained.
When a record arrives, it is copied into a malloced buffer.
A pointer to the record's buffer is pushed to that channel's queue.
When a record is popped from memory, the buffer is simply freed and the pointer removed from the per-channel queue.
The per-channel queue of pointers has a limited size, both in terms of the number of items it may contain and in terms of the combined size in memory of the pointed-to records. In this way, the overhead per channel is reduced from a chunk of memory to store the actual records to a chunk of memory used to store a list of pointers to records, which could be significantly smaller.
(AKA "Kombischlange".)
At present, there is a very large overhead per channel: a large, fixed-size, in-memory queue is allocated, even though most of the channels are empty most of the time. It should be possible to find a way to minimise this unused memory.
The text was updated successfully, but these errors were encountered: