我正在部署一个使用 rebar3 构建的在 erlang 上编写的应用程序。当我运行它时,它使用的是 CPU 的单核。我应该怎么做才能让它使用所有的核心?谢谢
问问题
76 次
2 回答
2
- 因为所有的工作都在一个过程中?
- 因为进程中的工作是互锁的,所以每次只有一个进程可以工作?
- 因为配置不当?
您没有提供任何有意义和相关的信息来回答。
于 2018-05-22T05:50:56.503 回答
1
根据这个问题的答案和Erlang 参考手册,启动运行时-smp enabled
会导致运行时创建多个 OS 调度程序来将任务分派到不同的 CPU。您可以在运行erl
运行时验证这一点并查看[smp:8:8]
(这意味着我正在运行 8 个调度程序)。
但是,通常 Erlang 通过为您机器上的每个内核创建一个操作系统线程(调度程序)来为您管理这个,这些任务可以被均匀地分配给。
您可能还需要研究的另一件事是,您的代码是否以并发方式编写或主要按顺序运行,在这种情况下,无论如何只需要一个内核。
于 2018-05-21T20:30:03.150 回答