Linus Torvalds mudou a lógica do bloqueio de página e a substituiu por enquanto

Alguns meses atrás, Linus Torvalds  reescreveu a lógica wait_on_page_bit_common () no Linux versão 5.9 para resolver a justiça da competição de bloqueio de página.

Antes disso, o titular do bloqueio de página apenas despertaria um processo exclusivo na fila de espera (FIFO, e o processo está executando "lock_page") ao executar "unlock_page ()", mas o processo pode não estar em execução, especialmente Em condições de carregamento, ele só pode ser executado se obtiver tempo de CPU. Ao mesmo tempo, outros processos em execução que não entraram na fila de espera podem obter bloqueios de página diretamente. Embora esse processo ainda use a página de forma eficaz, ele causará injustiça. No caso, o processo de espera despertado descobre que o bloqueio de página não é liberado após a execução, então ele reingressa na fila de espera, e é o último.Em casos extremos, o processo pode repetir o processo para aguardar dezenas de segundos.

Portanto,  Linus Torvalds é  modificado para dar o bloqueio ao processo de espera ao mesmo tempo que ele desperta, independentemente de estar em execução ou não.

No entanto, isso não resolveu completamente o problema. Desde então, BUG_ON () ocorre ocasionalmente, porque o processo de "espera para configurar" mencionado acima não é atômico, então o processo ativado ainda pode ser "intervido por uma terceira parte". Se você quiser modificar o processo "esperar para definir" para uma operação atômica, precisará modificar cerca de 50 funções. Portanto, na semana passada, Linus Torvalds  mudou o if na função wait_on_page_writeback () para while para resolver este problema. E isso é basicamente de volta à situação original, mas acontece com muito menos frequência, então ainda é controlável.

No entanto, de acordo com relatos da imprensa estrangeira , no teste de benchmark desta versão, o desempenho do PostgreSQL caiu de 5% -10%. Nesse  sentido , Linus Torvalds acredita que essa queda não é causada pelo patch e pode estar relacionada ao modelo de teste ou desempenho da máquina. relacionados.

O Linux 5.11-rc3 foi lançado e os alunos interessados ​​podem realizar testes relacionados.

Para obter mais detalhes, consulte o seguinte commit:

Acho que você gosta

Origin www.oschina.net/news/126262/linus-torvalds-change-if-2-while
Recomendado
Clasificación