Encontramos a causa raiz.
Nós corremos
/usr/share/bcc/tools/funcslower -m 250 -T proc_pid_readdir
para obter processos que estavam causando chamadas longas para proc_pid_readdir
Quando fizemos isso, conseguimos alguns processos:
zabbix_agent
atop
byobu
Todos estes estavam fazendo chamadas muito longas.
TIME COMM PID LAT(ms) RVAL FUNC
20:01:35 zabbix_agentd 921144 1258.01 0 proc_pid_readdir
20:01:38 zabbix_agentd 921144 2692.71 0 proc_pid_readdir
20:01:39 zabbix_agentd 921145 1276.88 0 proc_pid_readdir
Quando paramos TODOS estes - vimos uma grande melhoria.
Então parece que misturar muitos processos e threads + chamar proc_pid_readdir
com muita freqüência causa lentidão no procfs.
Vamos testar hoje o kernel 4.14 e ver se melhora.
ATUALIZAÇÃO:
O Kernel 4.14 resolveu nosso problema também. Mutex simples para cada inode é substituído agora por rwsem
.