Postando o que eu acho que pode ser uma resposta melhor.
My requirement is preventing one user's runaway process(es) from crashing the entire system.
O Linux já tem um recurso para fazer exatamente isso: o assassino da OOM.
O matador de OOM OOM é executado quando o sistema fica sem memória e favorece processos que consomem muita RAM rapidamente. Também é menos provável que ele mate processos de longa execução / sistema (superusuário).
O killer da OOM pode ser ajustado por meio do ajuste do arquivo /proc/<pid>/oom_score_adj
. A configuração é herdada por processos filhos, portanto, você só precisa defini-la no processo raiz de cada usuário. (Veja Documentation / filesystems / proc.txt , seção 3.1)