Estimando a probabilidade de erro de hardware


13

Digamos que eu execute uma computação de supercomputador em 100k núcleos por 4 horas em http://www.nersc.gov/users/computational-systems/edison/configuration , trocando cerca de 4 PB de dados pela rede e executando cerca de 4 TB de I / O. O cálculo é todo inteiro, portanto, os resultados estão certos ou errados (sem erros numéricos intermediários).

Supondo que o código esteja correto, gostaria de estimar a probabilidade de que o cálculo esteja errado devido a uma falha de hardware. Qual é uma boa maneira de fazer isso? Existem boas fontes para os números necessários para fazer essa estimativa?


Eu imagino que os resultados da CPU / RAM sejam realmente estáveis ​​em comparação com as considerações de disco e rede.
precisa saber é

Respostas:


5

Você já olhou os vários relatórios exascale que foram publicados? Hoje, as falhas graves não são uma preocupação significativa - com certeza elas acontecem, mas sua frequência não é suficientemente alta para causar sérias preocupações. Porém, estima-se que sejam suficientemente frequentes em sistemas de escala exascânica com ou mais núcleos que os códigos precisam estar preparados para reagir adequadamente. Penso que estas questões foram expostas nos relatórios sobre roteiros para a escala exascal.O(108)

Lembro-me de que, entre os vários modos de falha, inversões de bit único na memória ou nos núcleos do processador não eram as preocupações mais significativas. Em vez disso, eram nós inteiros em queda, por exemplo, devido a falha no disco, falhas no sistema operacional, etc. Os projetos atuais de exascale exigem, portanto, uma verificação periódica dos códigos na RAM flash, transmitindo preferencialmente os dados do ponto de verificação fora do nó. Os códigos precisarão ser capazes de reiniciar em tempo real a partir de um estado salvo anteriormente, se o sistema encontrar que um nó desapareceu, substituindo esse nó por um nó de inicialização a quente em outras partes do sistema.


Parece exatamente o que eu preciso. Você tem exemplos específicos em mente?
Geoffrey Irving

1
Gostaria de ver se há algo entre os vários relatórios do DoE que é do seu interesse. Presumo que você também saiba sobre o exascale.org ? Deve haver muito o que ler lá para você.
precisa saber é o seguinte

1
Geoff, o relatório definitivo de escala exascológica é de Peter Kogge e está disponível online . Veja todas as ocorrências da palavra resiliência. Dito isto, posso apontar algumas pessoas no NERSC que podem ter informações mais específicas sobre essa máquina.
Aron Ahmadia

@AronAhmadia: Obrigado, esse documento está ótimo. Estou aceitando esta resposta, uma vez que deve cobrir mais das classes de erros que eu estou interessado.
Geoffrey Irving

@ Wolfgang: Isso me lembra meus dias de guerra fria, quando os mísseis Minuteman eram programados com pontos de verificação, para que, se ocorresse um flash de nêutron nas proximidades, causando o desligamento instantâneo do processador, ele pudesse reiniciar a partir do ponto de verificação mais recente. Se ele assumisse pontos de verificação nos horários comprovadamente corretos, seria chamado de "protegido contra reinicialização".
precisa saber é o seguinte

9

Eu acho que você começa coletando taxas de erro de componentes, como DRAM, como esta pesquisa do Google sobre erros de DRAM na natureza: um estudo de campo em larga escala Eles encontraram ~ 1% de chance de obter um erro incorrigível por ano.

Não tenho certeza se é isso que você está interessado. Eu estaria mais interessado em erros indetectáveis. Erros tais que os métodos típicos de verificação de erros não seriam detectados. Por exemplo, quando você envia pacotes pela ótica, eles são acompanhados por algum tipo de CRC, o que permite uma pequena chance de erro.

ATUALIZAÇÃO: este artigo Arquiteturas para detecção e recuperação de erros on-line em processadores multicore fala sobre arquitetura multicore confiável, mas também cobre aspectos diferentes de confiabilidade do sistema e possui bibliografia


Ótimo estudo. Confirma muita intuição: velho, quente, usado com frequência, RAM quase cheio é menos confiável. Estou um pouco surpreso por não haver falhas específicas do fornecedor ou arquiteturas geralmente piores.
meawoppl

3

Existem boas fontes para os números necessários para fazer essa estimativa?

Você pode tentar perguntar aos administradores do cluster em que está computando. Imagino que, como parte do processo de validação, eles tenham enfrentado o problema de estimar a probabilidade de erros de hardware.


Obrigado! Óbvio em retrospectiva, mas isso não me ocorreu.
Geoffrey Irving

2

Parece épico. Se ninguém fez esse experimento, considere executar 100k núcleos separados, fazendo algo como repetir uma entrada sha1 repetidamente, ver qual é a taxa de erro. (Desconfortável, desconfio), a partir daí faça o mesmo, mas faça com que eles negociem resultados da cadeia de hash de vez em quando para obter as taxas de erro da sua rede. Imagino que isso também seja muito pequeno, mas suspeito que você possa conseguir pelo menos alguns usando seu superaglomerado por algumas horas :)

Essa abordagem garante que todo cálculo seja correto, pois o hash é extremamente sensível a trocas de bit único, enquanto que mesmo um cálculo inteiro inteiro pode ocultar erros nas ramificações, ou seja, todo o cálculo não seria elíptico em cada estado de memória consecutivo.

Eu tenho trabalhado em uma maneira de garantir que o código tenha sido executado corretamente por um cluster externo cuja motivação é trapacear, enviando resultados falsos. A solução em que convergi é integrar o hash no cálculo com alguma frequência que torna a trapaça menos eficiente do que fazer o trabalho.


2
Infelizmente, é improvável que seu esquema de mineração de bitcoins seja aprovado. :)
Geoffrey Irving

Tee hee hee. É apenas uma prova de trabalho realmente. : P
meawoppl
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.