[firebase-br] Super Server e dois núcleos

Douglas Tosi douglasht em gmail.com
Seg Out 27 15:32:18 -03 2008


2008/10/27 Eduardo Bahiense <eduardo em icontroller.com.br>:
>> Se me lembro bem, a configuração de affinity foi incluída na
>> configuração do FB para windows para facilitar. Muita gente estava
>> usando ferramentas externas para isto, porque o esquema usado pelo
>> kernel do windows para distribuir a carga entre as cpus não favorecia
>> o firebird SS. Mas você não é *obrigado* a colocar um affinity para o
>> SS.
>> Talvez por isto a configuração nem exista no linux.
>
> Oi Douglas, não entendi. Partindo da idéia original, trabalhar com duas
> instancias do SuperServer, uma em cada porta, como posso garantir que uma
> usará um núcleo e a outra o segundo, sem forçar um cpuaffinity?

Você não precisa forçar o cpu affinity para isso acontecer. O sistema
operacional faz isso.

O affinity só server para garantir que o SS, que na prática funciona
como se só tivesse um thread de execução, não fique pulando de uma cpu
para outra durante a execução. Esse pula-pula causa trocas de contexto
(context switches) desnecessários e atrapalha a performance (pelo
menos em teoria, porque eu nunca vi um benchmark com affinity e sem
affinity dar diferente).
Já o kernel do linux (novamente, se me lembro bem) não causa esse
pula-pula, por isso não precisa do affinity.

Resumo da ópera: Linux não precisa de affinity. No windows ele é
recomendado, mas não é obrigatório (tanto que IB6 e anteriores não
vinham com ele de fábrica).
Se você vai rodar linux, pode colocar dois SS e esqueça do affinity.
Eles vão usar suas duas CPUs sim (exceto se tiver algum affinity
escondido, aí por favor os gurus em linux pulem aqui e me corrijam).

melhorou? ou acabei de piorar? :)
-- 
Douglas Tosi
www.sinatica.com




Mais detalhes sobre a lista de discussão lista