Thirty Thousand Sends

In Discord's Elixir backend, each server (a "guild") is one process, and every connected client is a session process. Publishing an event means the guild process calls send/2 once per subscribed session. Discord measured a single send/2 at 30 to 70 microseconds, dominated by the sending process being de-scheduled.

A large public guild has 30,000 concurrent sessions on one process. Roughly how long does that guild process take to publish one event to all of them?

A

Under a millisecond, since the runtime batches sends to the same node

B

0.9 to 2.1 seconds

C

0.9 to 2.1 milliseconds

D

30 to 70 milliseconds