[tor-dev] Is Arti expected to have better multi-CPU support than C-tor?

David Fifield david at bamsoftware.com
Wed Mar 8 18:00:56 UTC 2023


On Wed, Mar 08, 2023 at 06:30:42AM -0500, Nick Mathewson wrote:
> On Tue, Mar 7, 2023 at 4:07 PM David Fifield <[1]david at bamsoftware.com> wrote:
> 
>     Linus Nordberg and I are preparing a submission for FOCI about the
>     special way we run tor on the Snowflake bridge. We run many tor
>     processes with the same identity and onion keys, because otherwise tor
>     being limited to one CPU would be the main bottleneck.
> 
>     I'm writing to fact-check a claim about Arti and how we hope the current
>     complicated procedure will not be needed in the future:
> 
>             The first and most important bottleneck to overcome is the
>             single-threaded nature of the Tor implementation.² A single Tor
>             process is limited to one CPU core: once Tor hits 100% CPU, the
>             performance of the bridge is capped, no matter the speed of the
>             network connection or the number of CPU cores
> 
>             ²We expect that Arti, the in-progress reimplementation of Tor,
>             will be natively multi-threaded, and remove this primary
>             complication.
> 
>     Is this correct? Is a relay that uses a future version of Arti expected
>     to be able to use all its CPU resources?
> 
> 
> 
> Yes, that's right.  There is no "main thread" in Arti; it's written in an
> asynchronous task-oriented style, and we use a runtime written in Rust (Tokio
> by default, but we abstract them so you can swap them out) to schedule tasks
> across multiple threads.
> 
> That said, we have spent approximately zero time so far tuning this
> multithreading, and I'd be surprised if it scales perfectly the first time. 
> Our first opportunity to show off here will be when we get onion service
> support later in this year.


Thank you, Nick.


More information about the tor-dev mailing list