Get the number of cores in Erlang with Linux

erlang:memory
erlang erl
erlang/otp
erlang init
run erlang from command line
erlang emulator windows
how to start erlang in windows
erlang how to run a file

i am writing a concurrent program and i need to know the number of cores of the system so then the program will know how many processes to open. Is there command to get this inside Erlang code?

Thnx.

You can use

erlang:system_info(logical_processors_available)

to get the number of cores that can be used by the erlang runtime system.

Erlang -- erl, If the Erlang runtime system is able to determine the number of logical processors configured and logical processors available, Schedulers defaults to logical  Core Erlang is less complicated than Erlang, and is therefore more suited than the abstract format for code analyzing tools (such as Dialyzer) and optimizers. To learn more about Core Erlang All details can be found in Core Erlang 1.0.3 language specification .

There is also:

erlang:system_info(schedulers_online)

which tells you how many scheduler threads are actually running.

Erlang -- cpu_sup, It can be noted that there are a small number of "-" flags which now actually are system is able to determine the amount of logical processors configured and logical Binding of schedulers is currently only supported on newer Linux, Solaris,  In this presentation we will focus on Erlang and multi-core. Erlang has many traits that make it nearly ideal for multi-core, at least for a certain class of problems. Erlang was originally designed for telecommunications software, where distributed programming has been the norm ever since the 1980s. Telecoms software also has a great deal of

To get the number of available cores, use the logical_processors flag to erlang:system_info/1:

1> erlang:system_info(logical_processors).
8

There are two companion flags to this one: logical_processors_online shows how many are in use, and logical_processors_available show how many are available (it will return unknown when all logical processors available are online).

To know how to parallelize your code, you should rely on schedulers_online which will return the number of actual Erlang schedulers that are available in your current VM instance:

1> erlang:system_info(schedulers_online).
8

Note however that parallelizing on this value alone might not be enough. Sometimes you have other processes running that need some CPU time and sometimes your algorithm would benefit from even more parallelism (waiting on IO for example). A rule of thumb is to use the value obtained from schedulers_online as a multiplier for parallelism, but always test with different multiples to see what works best for your application.

[erlang-questions] How to setup Erlang to run on physical cores, Another way of measuring system load is to divide the number of busy CPU When run on Linux, cpu_sup assumes that the /proc file system is present and  2 package(s) x 6 core(s) x 2 SMT threads. thanks all of u….. As I understand it, the Intel Core i7 has four physical cores, expanded to eight by hyperthreading. So, readers should be aware that if they want to know the number of *physical* cores (without considering hyperthreading), these commands will not help.

How this information is exposed will be very operating system specific (unless you happen to be writing an operating system of course).

You didn't say what operating system you're working on. In the case of Linux, you can get the data from /proc/cpuinfo, however there are subtleties with the meaning of hyperthreading and the issue of multiple cores on the same die using a shared L2 cache (effectively you've got a NUMA architecture).

Coordination Models and Languages: 11th International Conference, , I have tried as well on a Ubuntu Machine. And the I am planing to watch the CPU untilization via htop (also hwloc-ls) and possibly will let you know. On the Hi everybody, >> >I recently get to experiment an Erlang program. To get the number of available cores, use the logical_processors flag to erlang:system_info/1: 1> erlang:system_info(logical_processors). 8 There are two companion flags to this one: logical_processors_online shows how many are in use, and logical_processors_available show how many are available (it will return unknown when all logical processors available are online).

How to know number of cores of a system in Linux?, These are based on the circulation ofasingletokenwhenonecore oreight cores enabled our runtime are relatively unaffected by the number ofprocessorcores. Wespec- ulate that threads are beinggiven processoraffinity by the Linux scheduler 8-core (ns) CCSP C 73 75 CCSP occam-π 46 39 Erlang 1697 1675 Haskell  to be able to scale to a system with a massive number of processes to communicate using asynchronous messages between processes. These features make it natural for Erlang to use multiple cores of a processor. It also makes it easy to develop a distributed system. You can get started with tutorials on the erlang.org site.

Applied Parallel and Scientific Computing: 10th International , If you multiply these numbers you will get the number of CPUs on your system. The output of nproc corresponds to the CPU count from lscpu . For the desktop  In Linux you can basically check the number of cores of a CPU by displaying the contents of the cpuinfo file which is located under the “/proc” directory of your system. It’s just, the contents is less simple, especially if your CPU consists of more than two cores.

Coordination Models and Languages: 19th IFIP WG 6.1 International , The code for Erlang and Stackless Python was found on the web (see [12]). The same tests were run on a lightly loaded 32-core Linux computer and showed a identifier, which puts a hard upper limit on the number of Erlang processes. This project implements an Erlang application with a C++ port program that gives light-weight Erlang processes fine-grain control over execution of OS processes. The following features are supported: Start/stop OS commands and get their OS process IDs, and termination reason (exit code, signal number, core dump status).

Comments
  • Am I the only one who doesn't understand why you'd need to limit the number of processes to the number of cores? Erlang has a preemptive scheduler, so even if you have 100000 processes on a duel core machine they will all get an equal share of CPU time, more or less.
  • This returns unknown for me (Intel Core 2 Duo MacBook Pro Mid 2009 with OS X 10.9.4)
  • This seems a better way because it respects the +S option given to erl.
  • I am using Linux OS, when erlang start in the shell there is smp 4:4 so i guess that the VM know the number of cores so how can i get this information?