Estou tentando registrar o tempo de E / S de arquivos em meus discos. Para ter certeza de que toda a E / S está ocorrendo fora dos discos rígidos e não do RAM, antes que eu leia qualquer hora, eu executo um comando de cache de descarte. Especificamente, chamo fprintf
em um programa C para gravar 3 em /proc/sys/vm/drop_caches
. Aqui está a fonte:
FILE *f = fopen("/proc/sys/vm/drop_caches", "w");
if (!f)
{
perror("Opening of /proc/sys/vm/drop_caches failed");
return 1;
}
fprintf(f, "3");
fclose(f);
O código, na verdade, é executado em muitas máquinas em um cluster grande, e a maioria delas tem um problema estranho. Para executar o código acima, às vezes, levará horas. O fluxo de trabalho aqui é Read → Drop Cache → Repeat. Minhas leituras levam apenas cerca de 5 minutos, então não deve haver muito cache novamente nesse pequeno período de tempo.
As máquinas são quase idênticas em software e hardware, mas existe apenas uma máquina entre as aproximadamente 20, que parece nunca ter problemas para descartar seu cache.
Existe alguma razão para isso estar demorando tanto? Em alguns casos, acho que o programa está apenas congelando todos juntos. Alguma dica sobre como solucionar isso?
Editar: ============================================= =============
Eu fiz um pouco de solução de problemas sobre isso e eu só queria catalogar o que eu era capaz de encontrar no caso de alguém ter esse problema no futuro. O que é longo e curto, achamos que tem algo a ver com o Hadoop e o HDFS.
1) Consegui executar meu programa em C manualmente na máquina enquanto outra instância do comando estava desligada e, em alguns casos, ele retornava antes do programa suspenso. Isso quer dizer que a queda real do cache provavelmente não estava demorando tanto, porque a outra instância do programa foi capaz de descartar o cache e retornar
2) A razão pela qual uma das máquinas não estava tendo problemas é que o hadoop ou talvez algum outro programa estava travando naquele nó, fazendo com que ele não fosse usado pelo hadoop. É por isso que achamos que tem algo a ver com o HDFS.