As CPUs duplas fornecem tolerância a falhas?

16

Digamos que comprei dois Intel Xeon e os instalei no hardware da classe de servidor ... Se uma CPU falhasse, a outra ainda funcionaria e pegaria a folga, fornecendo tolerância a falhas?

Isso não parece muito provável, mas pensei em perguntar em vez de fazer suposições.

Soviero
fonte

Respostas:

29

Em um sistema normal de soquete duplo, não, embora haja servidores que permitam a troca a quente de processadores e RAM. Então, essas coisas fazem existir, mas eles estão no high-end muito, muito do mercado.

Não é realmente grande coisa - de tudo no seu servidor que pode falhar, o processador está no final da lista, ao lado daqueles pequenos tirantes de latão que mantêm a placa-mãe fora do chassi.

Mark Henderson
fonte
1
Pasta térmica mal instalada pode causar superaquecimento de uma CPU durante o pico de carga. Tenho certeza de que há muito mais casos do que falha espontânea no riser de latão.
Oddthinking
8
Acho que você levou isso muito a sério.
Peter Peter
5
Mesmo com CPUs hot swap, o sistema ainda não tolera uma falha abrupta de uma delas. Suponha que o kernel do sistema operacional esteja atualmente em execução na CPU que morre, e não pode simplesmente retomar a execução na outra CPU. Para CPUs com troca a quente, o kernel deve desligar normalmente essa CPU.
25412 Patrick
4
@ Patik: sim, certo. Você sabe - ERRADO;) esse é um comportamento padrão para CPUs de ponta - concedido, este é o mainframe em que a CPU custa mais de 5.000 dólares. Ainda assim, eles usam memória transacional e a transação seria reiniciada em outra CPU.
TomTom
5
@ TomTom: É claro que estamos falando de coisas como o venerável TANDEM (e seus sucessores modernos), não uma arquitetura van86 x86-64.
Piskvor
9

Falando sobre hardware básico x86, se um sistema estiver em execução e uma CPU falhar, as coisas irão parar normalmente. No entanto, o sistema funcionará bem após uma reinicialização, embora um pouco mais lento.

Muitas CPUs estão lá para ter processamento paralelo, não para tolerância a falhas. Mas é bom ter um sistema que ainda seja inicializado caso uma CPU (ou mais) falhe.

Eu diria que é um pouco mais provável que sua CPU falhe do que Mark Henderson sugere, mas ainda é muito improvável. Na minha experiência, ocorre principalmente quando o sistema superaquece e se desliga (isso é bastante fácil em uma sala de servidores de escritório com ar condicionado). As CPUs não costumam gostar muito disso.

Obviamente, se você tivesse um bom mainframe IBM ou similar, a troca a quente de uma CPU (placa) é "fácil" o suficiente.

aseq
fonte
Hmmm, mas mesmo no caso de reinicialização forçada: IIRC se a CPU # 0 falhar, você ainda está ferrado - sem POST, o que significa que não é necessário iniciar mais, pois apenas a primeira CPU é usada para o processo inicial de inicialização.
Piskvor
Não sei se seria esse o caso. Eu deveria testá-lo em um servidor. Eu pensei que não importaria e, desde que haja 1 CPU presente, o sistema inicializará bem.
aseq
5

Se uma CPU falhar - o que é extremamente improvável, de acordo com as outras respostas - não há basicamente nada que o sistema possa fazer para se recuperar. Dependendo do modo como falha, isso pode acabar corrompendo a memória de maneiras estranhas, destruindo a tabela de processos ou quem sabe mais o quê. Se você tivesse algum tipo de sistema de monitoramento ativo que mantém controle da CPU para garantir que esteja funcionando bem (e capaz de, por exemplo, reverter quaisquer alterações feitas pela CPU durante seus problemas), esse também seria outro sistema isso pode falhar e determinar a falha de software programaticamente é bastante difícil (basicamente a única maneira de você praticamente fazer isso é fazendo com que outra CPU faça exatamente as mesmas coisas ao mesmo tempo e compare os resultados - o que acabará atrasando as coisas para baixo de tal maneira que

Dito isso, por mais raro que seja uma falha da CPU, aumentar a contagem de CPU em um sistema aumentará sua taxa de falhas, pois agora você tem o dobro de coisas que podem falhar. Você também tem outros subsistemas que também podem falhar, como aqueles que mantêm os caches das CPUs sincronizados, e o aumento no consumo de energia e na saída térmica também contribuem para os fatores por trás da falha geral do sistema (e, é claro, os ventiladores de refrigeração ativos são outro ponto de falha).

fofo
fonte
1
+1 por apontar que a duplicação de CPUs aumenta o potencial de falha da máquina. Mais "partes móveis" significa mais oportunidades para a falha.
Evan Anderson
4

Você precisará definir exatamente com que tipo de falhas deseja lidar. Se considerarmos uma coleção de núcleos / CPUs / computadores trabalhando juntos como uma rede, um tipo de falha é que um nó simplesmente para de responder. Uma falha muito mais grave ocorre quando um nó começa a corromper dados e envia informações com defeito para os outros. Isso é chamado de falha bizantina e, na pior das hipóteses, está atrapalhando ativamente a operação da rede por meio de "mentiras" estratégicas. É relativamente fácil mostrar que nenhum sistema pode lidar com um terço ou mais de seus nós que se tornam bizantinos.

O que você precisa fazer é decidir exatamente que tipo de falhas você espera e projetar seu sistema com isso em mente e aceitar o fato de que o problema de lidar com um número arbitrário de nós maliciosos é insolúvel. No seu caso, você precisa de pelo menos quatro CPUs, se uma delas estiver com defeito.

Em uma nota lateral: na física quântica não há impossibilidades, mas se tivermos que esperar mais do que a idade do universo para estatisticamente ter a chance de observar um determinado comportamento, não precisamos dizer que isso é possível. Lembre-se disso ao projetar seu sistema. ;)

Anders Sjöqvist
fonte
2

Falha na CPU é rara. Uma falha provavelmente resultaria em outros problemas no nível do sistema operacional. Eu não pensaria nisso como qualquer forma de tolerância a falhas.

ewwhite
fonte
1

Como as outras respostas, é muito raro que uma CPU falhe, e nos servidores médios você não pode fazer uma troca a quente, o que você provavelmente pode fazer é deixar o servidor com uma CPU até que a falha seja substituída, é claro, isso O procedimento é totalmente offline e você precisa fazer uma parada no servidor

Testemunho
fonte
1
Bem, eu não chamaria isso de super raro. Apenas ocorreu em um dos meus servidores. Atualmente no processo de solução de problemas. O servidor com CPU dupla acabou de perder uma das CPUs devido a falha do ventilador.