Erlang 공식 문서를 찾아보니, Erlang 프로세스 하나를 스폰하는 데는 338워드가 필요하다고 합니다. 그리고 64비트 시스템에서 1워드는 8바이트라고 하니, Erlang 프로세스 하나는 약 2.7KB(338 × 8 = 2,704)의 메모리를 차지하겠군요. Go 언어에서 goroutine 스택 하나 크기가 약 2.0KB라고 하니, Erlang 쪽이 메모리를 더 먹는다고 봐야 할 것 같습니다.

그렇다면 단순 계산으로 1백만 개의 Erlang 프로세스는 2.7GB의 메모리를 차지해야 하는데, 위에서 소개된 Elixir 벤치마크에서는 약 4.0GB의 최대 메모리 사용량이 관찰되었으니 1.3GB의 메모리가 더 사용된 셈입니다. 단순히 계산하면 이 시나리오에서 Erlang 프로세스 하나당 1.3KB의 메모리가 더 쓰였다는 의미인데, 잘은 모르겠지만 Erlang 프로세스 수가 일정 한도 이상으로 늘어나면 런타임에서 뭔가 추가적인 메모리 공간 사용이 필요한 건가 싶기도 합니다.

수퍼비전 트리 맵이나 메세지큐 커패시티를 잡아놓는 것 때문이 아닐까 추측해봅니다.