Automatic NUMA balancing aims to improve performance on systems with Non-Uniform Memory Access (NUMA) by tracking where tasks access memory and placing tasks on nodes where their memory is located. It uses NUMA hinting page faults, page migration, task grouping, and fault statistics to determine optimal task placement. Pseudo-interleaving spreads tasks and memory across nodes to maximize memory bandwidth for workloads spanning multiple nodes. Evaluation shows automatic NUMA balancing can provide performance benefits for many workloads on NUMA systems without manual tuning.