Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Tor Tor
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 824
    • Issues 824
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 30
    • Merge requests 30
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • The Tor Project
  • Core
  • TorTor
  • Issues
  • #25328
Closed
Open
Created Feb 21, 2018 by David Goulet@dgoulet🔆Owner

cmux: Refactor, test and improve performance of the circuitmux subsystem

The cmux subsystem (src/or/circuitmux.c) is part of tor's fast path. It gets called at every cell or at every few cell and every new or dying circuit.

It is currently in our top 5 of CPU hugger (see legacy/trac#25152 (moved)) and also has a certain complexity to it. However, in practice, it should be quite simple. legacy/trac#25268 (moved) helps a lot by removing dead code and helping making the code more readable.

In order to improve that subsystem, there are few steps that need to be taken before we can address something like legacy/trac#25152 (moved). Furthermore, in order to fix some things in the scheduler (legacy/trac#23993 (moved)), this work should be done so we don't add more complexity to that code.

Refactoring this subsystem to something more simple also will help testing it for which right now, it is virtually untested (see src/test/test_circuitmux.c).

I'm taking this ticket because I do have planned out this work already and it might change over time.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking