En este trabajo presentamos un algoritmo de balance de carga, que presenta las siguientes características: es dinámico, distribuido, cooperativo, global, de asignación por única vez, subóptimo y heurístico. En nuestra propuesta, cada nodo recibe información de la carga de otros nodos en forma asincrónica, lo que le permite calcular de antemano cuál nodo tiene la menor carga en ese momento. Al arribar un nuevo proceso P a un nodo N, en función de la carga de N y el mínimo previamente calculado, N decide si P se ejecuta localmente o directamente lo transfiere al mejor candidato considerado por N. El algoritmo no requiere información provista por el usuario, ni archivos históricos de ejecución para clasificar los tipos de procesos. Es estable y escalable mediante el ajuste de ciertos parámetros como la cantidad de nodos que puede atravesar durante la migración o transferencia inicial de proceso, y el valor de un umbral, que regula la distancia hacia el nodo receptor e influye también en la confiabilidad de la información de carga que se conoce del resto de los nodos. Al ser distribuido, presenta tolerancia a fallas, ya que no se asigna una responsabilidad diferenciada a solo algunos nodos del sistema.