Tengo una aplicación que periódicamente (después de cada 1 o 2 segundos) toma los puntos de control al bifurcarse. Por lo tanto, el punto de control es una bifurcación del proceso original que simplemente permanece inactiva hasta que se le pide que comience cuando ocurre algún error en el proceso original.Costo de una página falla trampa
Ahora mi pregunta es qué tan costoso es el mecanismo de copiado de la horquilla. ¿Cuánto es el costo de una captura de fallas de página que ocurrirá cada vez que el proceso original escribe en una página de memoria (la primera vez después de tomar un punto de control), ya que el mecanismo de copia-escritura garantizará que proporcione un proceso original diferente página física que el punto de control.
En mi opinión, la sobrecarga de la falla de página puede ser bastante alta cuando se produce una interrupción, aterrizamos desde la tierra del espacio de usuario hasta la tierra del núcleo y luego desde el kernel al espacio del usuario. ¿Cuántos ciclos de CPU puedo perder de una trampa de fallas de página? Supongamos que la memoria RAM es lo suficientemente grande y que nunca necesitamos cambiar al disco duro.
Bueno, sé que es difícil imaginar un esquema de punto de control más eficiente que esto y por lo tanto podría decir por qué me preocupa la sobrecarga de página, pero solo tengo una idea de cuánto será el costo allí para este esquema.
Depende en gran medida de los patrones de acceso a los datos de su aplicación. Intente comparar tiempos de ejecución con y sin puntos de control para ver cómo los puntos de control afectan el tiempo de ejecución. –
No puedo ver la utilidad de este punto de control. Después del tenedor(), padre e hijo son idénticos. Después del padre exit() s, probablemente el niño esté haciendo referencia exactamente a las mismas páginas físicas, ya que el padre abandonó sus referencias (el estado COW para las páginas puede volverse "adjunto" para el proceso hijo, ya que un estado COW con solo el proceso de referencia no tiene sentido) – wildplasser
wildplasser, la necesidad del punto de control es evitar reiniciar la aplicación. Se puede reanudar desde un estado previamente guardado a.k. un punto de control. – pythonic