O NFS não armazena caudas de arquivos quando o programa trava

3

O programa está sendo executado em paralelo em vários processadores e está gravando registros em um host central via NFS sob RH7.3 ou SUSE 11.3. Se o programa trava ou trava, então caudas de arquivos de log são perdidas e nos falta informação sobre a localização e o motivo da falha.

A sincronização da shell não tem efeito. O modo de montagem é async por uma razão strong: no caso do modo de sincronização, os tempos de carregamento dos dados iniciais e dos resultados de descarga aumentam em 10, de minutos para horas. Às vezes flush() inserido no programa pode ajudar, mas é difícil fazer quando o local não é conhecido com certeza.

Então, é possível forçar um cliente NFS a liberar seus buffers incondicionalmente quando o processo termina, não importa como?

    
por vladimir 07.06.2013 / 19:57

1 resposta

2

Uma vez que a saída entra no buffer do cliente NFS, ele deve chegar ao servidor - eu estou com medo que você esteja perdendo os dados nos buffers de stream usuais. Tente modificar as propriedades de buffer com setvbuf() .

Você provavelmente também deseja habilitar coredumps para o aplicativo com falha, para que você tenha algo para depurar - consulte link e prctl(PR_SET_DUMPABLE, ...)

    
por 07.06.2013 / 21:00

Tags