Nicholas Piggin, que liderou este código Power qspinlock, comentou na série de patches anterior sobre ele:
Desde a série RFC, eu testei isso em um sistema POWER10 de 1920 threads de 16 soquetes com alguns microbenchmarks, e isso mostrou problemas significativos com a série anterior. A alta quantidade de rotação no bloqueio inicial (roubo de bloqueio) para o modo SPLPAR (paravirt) realmente prejudica a escalabilidade quando o convidado não está supercomprometido. No entanto, em sistemas KVM menores com overcommit significativo (por exemplo, 5-10%), essa rotação é muito importante para evitar problemas de desempenho devido ao problema de enfileiramento. Portanto, em vez de definir STEAL_SPINS e HEAD_SPINS com base em SPLPAR no momento da inicialização, reduzi-os e fiz mais para lidar dinamicamente com a preempção de vCPU. Portanto, o comportamento do modo LPAR dedicado e compartilhado agora é o mesmo até que seja detectada preempção de vCPU. Isso parece estar levando a melhores resultados em geral, mas algumas latências de pior caso aumentaram significativamente com o teste de bloqueio (a latência ainda é melhor do que spinlocks enfileirados genéricos, mas não tão boa quanto antes ou tão boa quanto simples). A imparcialidade estatística ainda é significativamente melhor.
Esta implementação Power qspinlock para melhor escalabilidade do sistema está sendo mesclada para Linux 6.2 como parte desta solicitação pull . Para aqueles que usam o antigo PowerPC Book3S, esta solicitação pull para Linux 6.2 agora também está zerando os registros de uso geral na entrada da rotina de interrupção. Essa alteração está sendo feita para reduzir a influência sobre os registros do usuário na especulação dentro dos manipuladores de chamadas do sistema do kernel. Isso pode diminuir o desempenho do Book3S em cerca de 1% com essa limpeza de registros na entrada da rotina de interrupção, mas sendo feita em nome da segurança.
Até a próxima !!
Nenhum comentário:
Postar um comentário