Ter mais núcleos de CPU é melhor para executar um servidor da web?

4

Eu estava lendo sobre como os encadeamentos do usuário são mapeados para encadeamentos do kernel em Wikipedia . A partir deste artigo eu entendo que o FreeBSD usa o 1: 1 (threading do nível do kernel).

Portanto, cada thread de usuário criado pelo aplicativo é mapeado para um thread de kernel. Se eu assumir que estou construindo um servidor web que irá lidar com cada nova requisição em um thread e eu estou rodando no FreeBSD, o aumento do número de núcleos melhorará o desempenho geral do aplicativo?

Eu li esta questão Núcleos da CPU: quanto mais, melhor? , mas eu quero que o escopo das respostas seja influenciado especificamente pelo mapeamento 1: 1 entre os threads do usuário e do kernel.

    
por Songo 27.01.2014 / 20:59

3 respostas

5

A resposta curta é sim.

A resposta longa é .... ter mais núcleo da CPU significa ter mais poder de processamento. No caso de uma aplicação web PHP / Ruby / Python / etc., significa mais recursos para lidar com conexões simultâneas. Ter mais núcleos realmente faz a diferença no caso de uma aplicação com carga pesada.

Minha opinião pessoal é que, no caso de uma escolha entre mais poder de processamento e mais RAM, eu escolho mais memória RAM na maioria dos casos. Com a RAM, você pode reduzir o gargalo que é a E / S do disco.

Usando sistemas de caches como PHP APC , Varnish e ajuste do MySQL (cache de tabela, cache de consulta, etc ...), você pode melhorar muito o desempenho do seu site sem precisar de mais poder de CPU para gerar conteúdo.

Se o seu site puder ser armazenado em cache, faça essa escolha. Apenas o aumento do número de núcleos da CPU é uma opção perdida a longo prazo.

    
por 27.01.2014 / 21:08
1

Sim.

O software de servidor da web moderno usa um processo ou thread separado para cada computador que se conecta ao servidor. Além disso, softwares de back-end como MySQL ou PHP também são executados em processos ou threads separados para cada usuário que precisa atender, portanto, ter mais núcleos sempre ajuda.

Naturalmente, em ambientes mais intensivos, o desempenho do disco, a memória ou a largura de banda da rede podem acabar se tornando gargalos. Mais memória permite mais cache de leitura, o que reduzirá os acessos ao armazenamento em disco lento. Como sugerido por Biapy, se você está lidando com muitas solicitações por segundo, deve procurar softwares de armazenamento em cache especializados, como o Varnish, o que reduzirá bastante a carga do sistema.

    
por 28.01.2014 / 02:53
1

Como de costume, a resposta será que isso depende.

Por exemplo, o nginx servidor web funciona muito bem , mesmo que não use threads. Ele usa uma arquitetura orientada a eventos. Ele pode e usa vários processos de trabalho, por isso pode fazer uso de vários núcleos.

Como você pode ver nas medições de desempenho vinculadas, o servidor Web Apache rosca gera mais threads e usa mais memória se a quantidade de conexões simultâneas aumenta. A quantidade de memória usada pelo nginx permanece razoavelmente constante. E na quantidade de solicitações atendidas por segundo, o nginx supera o apache por uma margem ampla.

Portanto, os tópicos nem sempre são a melhor solução.

O desempenho também depende de onde seus dados residem. Se ele está estacionado em um disco rígido, o acesso vai ser lento em comparação com quando ele está em RAM, que por sua vez é muito mais lento do que o cache do processador. Se você quiser acelerar o seu servidor web, considere o uso de um accellerator como verniz . Considere a leitura este artigo pelo autor principal de verniz sobre o desempenho na web servir. A mensagem aqui é que você deve use do sistema operacional embutido chaching mecanismos e que você não deve tentar fazer o mesmo trabalho sozinho.

    
por 02.02.2014 / 13:41