thoughtarray
I know beam makes a scheduler per CPU (OS thread); so theoretically I can do something at exactly the same time up to the number of CPUs I have.
What is the best way to kick them all off at the same time? Is my only option to send (via Process.send or Kernel.send) a message to a process running on each scheduler? If I do that, the messages are sent out serially. Any alternative techniques or should that be considered fast enough in this ecosystem?
I posted a similar post, but I think it was too complex to bother with.
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex











Showing Posts 1 to 4- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
benwilson512
The type of question you’re asking I think requires some definitions. There is, at the end of the day, no such thing as truly “at the same time” there is “measured to be within a time bound by an observer”. How tight does the time bound need to be? Why? Who is observing this?
al2o3cr
I think you need to clarify what you mean by “at the same time”, as it’s not well-defined with communicating processes. All it takes is one piece that forces serial behavior to mess things up.
A better approach is to code things to not need guarantees about simultaneity. For instance, in a network-performance situation like your previous post, instead of:
something like:
schneebyte
You could check how others are doing it.
Maybe you could tell your processes to start at a specific point in time
then just have them sleep and check time repeatedly.
/one more thing
I don’t think you can choose the specific scheduler a process is on.
:erlang.system_info(:scheduler_id)I guess if you spawn enough processes under load it should be spread out to all available schedulers.
thoughtarray
Thanks for the replies, all!
@benwilson512, I think the context you might be seeking is in the linked original post. That post didn’t gent any replies; so I made this post much shorter and simpler. By “at the same time”, I mean parallelism. The goal is to squish that time bound as much as possible in BEAM. I know for other languages the solution would be to start a thread per CPU core.
@al2o3cr, yeah, I think my desires are leaving the realm of practical and entering theoretical (at least in BEAM land). I do have a desire for that TCP SYN to drop in on server/listener to be parallel as possible in BEAM land. Insofar as your recommendation, it’s totally the practical way to do it and may end up what I do if I can’t find what I’m looking for.
@schneebyte, I have seen stressgrid, but not the others. Thanks for the links! I had considered a timer-based kick-off, but wasn’t sure the best way to do it in Elixir/Erlang since I was under the impression that time was pretty squishy in BEAM land.
Regarding choosing specific schedulers, I thought PartitionSupervisor would help partition its children across schedulers. Do I have that messed up in my head?