hilos de qué sistema operativo se acostumbran en la máquina abstracta de Erlang, BEAM?

StackOverflow https://stackoverflow.com/questions/3663823

  •  01-10-2019
  •  | 
  •  

Pregunta

he comenzado a estudiar Erlang y encontrar el entorno de ejecución BEAM fascinante. Se afirma comúnmente que en Erlang, procesos pertenecen a la lengua en lugar del sistema operativo (es decir, el tiempo de ejecución, lo que significa BEAM en este caso). Estos son los ligeros, “verdes” que los procesos de Erlang es ser famoso para. Se señaló además (en la página 5 de este documento ) que utiliza BEAM un hilo (1) OS por núcleo de CPU para la programación y otro hilo OS para i / o. Por eso me pregunto:? De lo que el hilo no los ciclos de CPU necesario para ejecutar realmente el código Erlang provenir de

Además, si estoy corriendo en una máquina de doble núcleo que se puede esperar - basado en lo que he leído hasta ahora - para ver tres (3) hilos de ejecución en el marco del proceso de haz: dos planificadores (uno para cada núcleo) y una i / o hilo. Pero veo 10. 11. A veces A veces empieza a los 13 años y, como amplificadores de alta calidad, va a 11.

Estoy confundido. Se apreciará Cualquier penetración.

¿Fue útil?

Solución

Siguiendo el consejo de @ user425720, me preguntó mi pregunta sobre el LISTSERV Erlang preguntas. También está disponible como una Google Grupo . Kresten Krab Thorup de Trifork me respondió casi de inmediato. Mi agradecimiento a salir a Kreston. He aquí su respuesta. (Parentéticos y el énfasis son la mía.)

  

A continuación, puede que yo sepa, el escenario básico:

     

Código de Erlang se llevará a cabo en el mayor número   "hilos verdes", ya que hay   procesos; el límite de proceso es   controlado por la bandera + P (línea de comandos).

     

Los hilos verdes se asignan a S   hilos, donde S es el número de   núcleos / CPUs. El hecho de que éstos   hilos también se llaman programadores   puede parecer un tanto   confuso, pero desde el punto de máquinas virtuales   ver que son. A partir de la década de los desarrolladores   punto de vista, que son los hilos   que ejecute el código Erlang . los   número S se puede controlar con   la opción + S para la línea de comandos ERL.

     

Además presente, hay una serie   de los llamados "hilos" asíncronas. Eso es   un grupo de subprocesos que se utiliza por I / O   procesos llamados vinculados en los conductores, para   reaccionar a seleccionar / sondeo, etc. El   número de hilos Asynch es dinámica,   pero limitado por la bandera + A.

     

Por lo tanto, los 11 hilos que se ve en una   De doble núcleo puede ser de 2 programadores, y 9   hilos asíncrona. Por ejemplo.

     

Más información acerca de las banderas aquí .

Otros consejos

procesos Erlang no son 'verde' como hilos son de color verde en Java. procesos Erlang son estructuras, que no lo hacen de memoria compartida y que son mantenidos por Erlang VM.

Puede sonar extraño, pero este trabajo podría ser 'viejo' (a pesar de que la bio a partir de 2007). Todo cambió en torno a la liberación R13 cuando llegamos nuevo manejo de colas de tiempo de ejecución (con equilibrio dinámico cosas y otras golosinas). Aquí hay alguna presentación de Ulf Wiger al respecto http: //ulf.wiger.net/weblog/2009/01/23/erlang-programming-for-multicore/

En resumen, los procesos son completamente transparentes y es posible ajustar el número de colas de tiempo de ejecución y programadores, pero la realización del sistema operativo no está intacto. No quiero especular por qué hay como 11 de hilos ..

EDIT: Estoy equivocado acerca un poco OS:

  

+S Schedulers:SchedulerOnline

     

Establece la cantidad de hilos de programador para crear e hilos planificador para establecer en línea cuando el soporte SMP ha sido habilitada.

     

El rango válido para ambos valores son 1-1024. Si el sistema de ejecución de Erlang es capaz de determinar la cantidad de procesadores lógicos configurado y procesadores lógicos disponibles, programadores tomaría el valor procesadores lógicos configurado y SchedulersOnline tomaría el valor procesadores lógicos disponibles; de lo contrario, los valores por defecto será 1. Los programadores pueden omitirse si no es :SchedulerOnline y viceversa. La cantidad de programadores en línea se puede cambiar en tiempo de ejecución a través de erlang:system_flag(schedulers_online, SchedulersOnline) .

     

...

     

Esta bandera será ignorado si el emulador no tiene soporte para SMP habilitado (ver la -smp bandera).

desde aquí: http://www.erlang.org/doc/man/ erl.html

Edit2: Interesante debate en Erlang-pregunta lista de correo en pros y contras de muchas máquinas virtuales frente a muchos programadores. Por desgracia, también es de 2008 y no puede ser válida con enormes mejoras en las nuevas versiones OTP. http://www.erlang.org/ cgi-bin / ezmlm-cgi 4:? mss: 38165: 200 809: nbihpkepgjcfnffkoobf

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top