Red de conocimiento informático - Aprendizaje de programación - La diferencia entre programas multiproceso de Linux y programas multiproceso

La diferencia entre programas multiproceso de Linux y programas multiproceso

Un chico de IBM hizo una prueba y descubrió que Windows era más del doble de rápido que Linux al cambiar de contexto de subproceso. El bloqueo de entrada y salida más rápido (la sección crítica de Windows2k y pthread_mutex de Linux), Windows es aproximadamente cinco veces más rápido que Linux. Por supuesto, esto no quiere decir que Linux sea malo, y después de la programación real, creo que Linux es generalmente más adecuado para servidores de alto rendimiento, pero en el área específica de subprocesos múltiples, Linux sigue siendo ligeramente inferior a Windows. . Esto debería tener sentido, después de todo, la familia Unix proviene de subprocesos múltiples y Windows ha sido subprocesos múltiples desde el principio.

Si estás en un entorno UNIX/linux, no es necesario el uso de subprocesos múltiples.

¿Es mejor el multiproceso que el multiprocesamiento? ¡Engañoso!

Cabe decir que el multihilo es más barato que el multiprocesamiento, pero el rendimiento es menor.

En el entorno UNIX, la sobrecarga de la programación multiproceso no es significativamente diferente de la sobrecarga de la programación multiproceso, es decir, la eficiencia de la programación de procesos UNIX es muy alta. En términos de consumo de memoria, la única diferencia entre los dos es el área de datos global. Ahora la memoria es muy barata y la memoria del servidor puede alcanzar fácilmente varios G, lo cual no es un problema.

El multiproceso es un sistema de transporte tridimensional. Aunque es costoso y consume mucho combustible en subidas y bajadas, no provocará atascos.

Multi-threading es un sistema de transporte plano y de bajo coste, pero hay demasiados semáforos y atascos constantes.

Ahora todos conducimos coches deportivos, que consumen mucho combustible (frecuencia principal). No tenemos miedo de subir o bajar pendientes, pero sí de los atascos.

El middleware de servidor de transacciones de alto rendimiento (como TUXEDO) promueve múltiples procesos. Las pruebas reales muestran que el rendimiento y la eficiencia de concurrencia de TUXEDO son muy altos. TUXEDO es un producto de Bell Labs. Proviene de la misma escuela que UNIX. Debe tener el conocimiento más profundo de UNIX y sus puntos de vista deben ser de gran importancia como referencia.

Ventajas de subprocesos múltiples:

No es necesario cruzar los límites del proceso;

Lógica y control del programa simple;

Todos los subprocesos pueden directamente **** Disfruta de memoria, variables, etc.

El total de recursos consumidos por el método de subproceso es mejor que el método de proceso;

Desventajas del subproceso múltiple:

Cada subproceso**** utiliza el espacio de direcciones del programa principal, limitado a 2 GB de espacio de direcciones;

La sincronización y el control de bloqueo entre subprocesos son problemáticos;

La falla de un subproceso puede afectar la estabilidad de todo el programa;

Después de que el número de subprocesos alcanza un cierto nivel, ni siquiera aumentar la CPU puede mejorar el rendimiento. Por ejemplo, el número de subprocesos en Windows Server 2003 es aproximadamente 1500. Este es el límite (la pila de subprocesos está establecida). a 1M), si la pila de subprocesos se establece en 2M, no se puede alcanzar el número total de subprocesos;

La mejora del rendimiento total de los subprocesos es limitada y la programación de los subprocesos en sí es un asunto problemático , lo que requiere más consumo de CPU.

Ventajas del multiproceso:

Cada proceso es independiente entre sí.

Cada proceso es independiente entre sí y no afectará la estabilidad del programa principal. No importa si el proceso secundario falla.

Es fácil ampliar el rendimiento. aumentando la CPU

El impacto del bloqueo/desbloqueo de subprocesos se puede minimizar, mejorando así en gran medida el rendimiento, incluso si el algoritmo del módulo ejecutado por el subproceso es ineficiente;

Cada uno; El proceso secundario tiene un espacio de direcciones de 2 GB y recursos relacionados, lo que impone un límite de rendimiento muy grande al rendimiento general.

El límite superior de rendimiento general es muy grande

Desventajas de subprocesos múltiples:

El control lógico es complejo y requiere interacción con el programa principal;

Necesita para cruzar los límites del proceso, si hay una gran cantidad de datos Transmisión, el efecto no es bueno, adecuado para situaciones con un pequeño volumen de transmisión de datos y cálculo intensivo

La sobrecarga de programación de múltiples procesos es relativamente grande;

Es mejor combinar multiproceso y multiproceso, es decir, según las necesidades reales, cada CPU abre un subproceso, y este subproceso abre múltiples subprocesos para procesar múltiples datos del mismo tipo. Por supuesto, también puede utilizar el sondeo de múltiples CPU y subprocesos para resolver el problema...

Hay muchos métodos y medios. La clave es ver si es conveniente implementarlo usted mismo. los requisitos y si el costo es apropiado.