I have access to a research HPC cluster which is configured so that if your job tries to use more memory than the node has available the node crashes and automatically reboots. This appears to be common practice, e.g. see https://www.osc.edu/documentation/knowledge_base/out_of_memory_oom_or_excessive_memory_usage
Why would it be configured like this, rather than being configured to just terminate the process(es) requiring too much memory? In both cases you lose the job, but the latter would seem to be better for the cluster as a whole as the node is re-usable faster. Or is it not possible for the OS to guarantee recovering the memory in that case?