Nós experimentamos algum tempo de execução de comando simples e lento no Linux, possivelmente relacionado à lentidão do procfs.
Como o comando uptime
simples pode demorar alguns segundos para ser executado.
Aqui estão as entradas:
Executamos o docker com cerca de 250 contêineres.
Utilização:
Algumas estatísticas do sistema operacional:
# cat /proc/loadavg
100.45 108.30 109.41 35/254951 544357
# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
110 2 791584 485552640 50354496 687472448 0 0 426 183 1 1 10 8 82 1 0
13 0 791584 485495104 50353940 687477568 0 0 22820 47984 196555 326943 12 12 75 1 0
33 1 791584 485385632 50352428 687473536 0 0 38932 52892 166486 389428 13 14 72 1 0
# ps axu| wc -l
3792
O que exatamente acontece?
O lançamento de comandos simples leva tempo, quando os comandos usam procfs de alguma forma. Como fazer ls
em um diretório com alguns arquivos fica preso no syscall aberto do procfs
# strace -r ls
...
0.000084 open("/proc/filesystems", O_RDONLY) = 3
3.652504 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
...
Ou uptime
:
# strace -r uptime
...
0.000035 open("/proc/filesystems", O_RDONLY) = 3
11.014154 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
...
0.000044 open("/proc/uptime", O_RDONLY) = 3
1.554646 lseek(3, 0, SEEK_SET)
...
Quick Q / A e o que já tentamos:
--ipc=host
e --pid=host
flags. Todas as ideias e sugestões são bem-vindas.
Tags docker linux linux-kernel