Je veux ammend les réponses précédentes.
Erlang, ou plutôt l'Erlang système d'exécution (erts), par défaut le nombre de planificateurs (OS threads) et le nombre de runqueues nombre d'éléments de traitement de votre plate-forme. C'est-processeurs ou threads matériels. Vous pouvez modifier ces paramètres lors de l'exécution à l'aide de:
erlang:system_flag(schedulers_online, NP) -> PrevNP
Le processus Erlang n'ont aucune affinité pour toutes les planificateurs encore. La logique d'équilibrage les processus entre les planificateurs suit deux règles. 1) Une affamée planificateur de voler le travail d'un autre programmateur. 2) les voies de la Migration sont le programme d'installation pour pousser processus de planificateurs avec beaucoup de processus de planificateurs avec moins de travail. Ceci est fait pour assurer l'équité dans la réduction count (temps d'exécution) pour chaque processus.
Les planificateurs peuvent cependant être verrouillé à certains éléments de traitement. Ce n'est pas fait par défaut. Laisser erts ne le planificateur->core affinité utilisation:
erlang:system_flag(scheduler_bind_type, default_bind) -> PrevBind
Plusieurs autres lier les types peuvent être trouvés dans la documentation. À l'aide d'affinité peut grandement améliorer les performances de l'lourde charge les situations! En particulier, dans de verrouillage de situations de conflit. Aussi, le noyau linux ne peut pas gérer hyperthreads, pour dire le moins. Si vous avez des hyperthreads sur votre plate-forme, vous devriez vraiment utiliser cette fonctionnalité en erlang.