Skip to content
Snippets Groups Projects
Closed (moved) sched: scheduler_compare_channels() function will never pick a channel with no active circuits.
  • View options
  • sched: scheduler_compare_channels() function will never pick a channel with no active circuits.

  • View options
  • Closed (moved) Issue created by David Goulet

    In the schedulers, scheduler_compare_channels() is used to decide which channel is 'best' to write data from. It delegates to circuitmux_compare_muxes(), which delegates to ewma_cmp_cmux().

    But ewma_cmp_cmux() will never prefer a cmux with no active circuits on it! So a channel without active circuits will never be picked by the scheduler to flush from a circuit, which is what triggers flushing from its destroy queue. So the channel will stay around forever, never flushing.

    To fix this one, we probably have to fix ewma_cmp_cmux() to look at destroy cells too (somehow). And we still need to make sure that the scheduler's position in the heap changes when the data considered by scheduler_compare_channels() changes [*].

    [*] I'm not convinced that we're even doing this right with the current scheduler_compare_channels() code. :(

    Linked items ... 0

  • Activity

    • All activity
    • Comments only
    • History only
    • Newest first
    • Oldest first
    Loading Loading Loading Loading Loading Loading Loading Loading Loading Loading