Skip to content

Configurable limits #610

Description

@gavv

This issue tracks progress of implementing various limits.

option default value description notes
--max-mem 0 (no limit) max memory used by context in total
--max-sessions 0 (no limit) max active sessions
--max-session-mem 0 (no limit) max memory used by one session (including packets and frames)
--max-sockets 0 (no limit) max active sockets
--max-socket-mem 0 (no limit) max memory used by queued and pre-buffered packets belonging to socket and not routed to session yet
--max-packet-size roc-send: deduce from --packet-len, roc-recv: 2K max bytes per packet rename from --packet-limit, rework default value
--max-frame-size roc-send, roc-recv: deduce from --frame-len max bytes per frame rename from --frame-limit, rework default value

Steps:

  • refactor current options
    • rename --packet-length to --packet-len, --packet-limit to --max-packet-size (roc-send)
    • rename --frame-length to --frame-len, --frame-limit to --max-frame-size (roc-send, roc-recv)
    • add parse_size() and used it for --max-packet-size and --max-frame-size
    • --max-packet-size: deduce default from --packet-len in roc-send
    • --max-frame-size: deduce default from --frame-len in roc-recv and roc-send
  • factories
    • PacketFactory, BufferFactory: accept IPool instead of IArena
    • node::Context: instantiate pools instead of factories
    • roc_pipeline: pass pools instead of factories
    • roc_pipeline: SenderSession, ReceiverSession, etc: instantiate factories from pools where they're needed
  • preps
    • rename core::Pool to core::SlabPool
    • core::MemoryLimiter
    • core::LimitedArena
    • core::LimitedPool
    • packet::Packet::transfer_to()
  • session limits (--max-sessions, --max-session-mem)
  • socket limits (--max-sockets, --max-socket-mem)
  • global limit (--max-mem)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions