Asignación estática y trabajo constante: dos trucos para evitar fallos en sistemas de alto rendimiento
Static Allocation, Constant Work
En respuesta a un correo sobre el problema más difícil de la seguridad de memoria, el autor reflexiona sobre los pools de objetos y la confusión de tipos. Propone dos técnicas de TigerStyle para evitar errores: la asignación estática, que fija un límite máximo de objetos al inicio y rechaza el exceso, y el trabajo constante, que mantiene un número fijo de objetos con un estado 'reservado' para simplificar la lógica y garantizar un rendimiento predecible. Estas ideas, aplicadas en TigerBeetle, ofrecen tranquilidad tanto en memoria como en latencia.
Si el número máximo de órdenes está activo, ¿tiene el sistema un rendimiento aceptable? Si no, ¡eso es un bug!
- mrkeen
> TigerStyle: Toda la memoria debe asignarse estáticamente al inicio. No se puede asignar memoria dinámicamente (ni liberarla y reasignarla) después de la inicialización. Esto evita comportamientos impredecibles que pueden afectar significativamente el rendimiento y evita el uso después de liberar.
Quizás mantener un array de órdenes NULL cumple con la letra de la ley de "sin asignación dinámica", pero no estoy convencido de que cumpla con el espíritu.
¿No acabas de escribir un buffer de órdenes NULL, que luego prestas a los llamadores (es decir, "asignar" y "reasignar")?
¿El asignador probado en batalla de otra persona podría ser lento o tener errores, así que escribes el tuyo propio como parte de la implementación de la lógica de negocio?
- markus0
Quiero trabajar más con sistemas que siempre cumplan restricciones y guías de estilo/diseño tan estrictas, pero al mismo tiempo siento que la realidad de construir software a escala es que los equipos terminan trabajando en subsistemas que no consideran el modelo operativo holístico del programa. Así que incluso con mejores prácticas locales, el sistema en su conjunto termina fragmentado e ineficiente, y las restricciones globales estrictas por lo tanto se sienten limitantes.
- pjmlp
Es interesante cómo todos siguen redescubriendo las técnicas de programación de computadoras domésticas de 8 y 16 bits, después de todos estos años, supongo que en su mayoría causado por los lenguajes de script para todo durante las últimas dos décadas.