Após as discussões na Linux Plumbers Conference do ano passado, foi sugerido um driver básico de sincronização do Windows NT para o kernel do Linux. Este driver apresentaria /dev/ntsync como um novo dispositivo de caracteres para implementar algumas das primitivas de sincronização do Windows NT diretamente no kernel do Linux.
Isso, por sua vez, melhoraria o desempenho de alguns jogos/aplicativos do Windows rodando no Linux via Wine e, em alguns casos, resultaria em um desempenho significativamente melhor.
Elizabeth Figura, da CodeWeavers, que postou a “solicitação de comentários” (RFC) em várias listas de discussão do kernel Linux, explicou as razões para este driver básico de sincronização para imitar o comportamento do kernel do Windows NT: "O projeto Wine emula a API do Windows no espaço do usuário. Uma parte específica dessa API, isto é, as primitivas de sincronização do NT, tem sido historicamente implementada via RPC para um processo de “kernel” dedicado. No entanto, aplicativos mais recentes usam essas APIs com mais intensidade, e a sobrecarga do RPC se tornou um gargalo.
As APIs de sincronização do NT são muito complexas para serem implementadas sobre primitivas existentes sem comprometer a precisão. Certas operações, como NtPulseEvent() ou o modo “esperar por todos” de NtWaitForMultipleObjects(), exigem controle direto sobre a fila de espera subjacente e não é possível implementar uma fila de espera suficientemente robusta para o Wine no espaço do usuário. Portanto, este driver proposto implementa as interfaces problemáticas diretamente no kernel do Linux."
A série inicial de patches proposta é um conjunto de 32 patches, enquanto 17 patches são da implementação real. Com esses patches do driver de kernel “NTSYNC”, há benefícios para diferentes jogos do Windows no Wine, de 21% com Metro 2033 a até 678% com DiRT 3! Normalmente, isso ajuda os jogos em mais de 100% + melhor desempenho.
Alguns dos números de desempenho compartilhados pela Figura: Benefícios de desempenho NTSYNC
Este não é um conceito completamente novo, pois os desenvolvedores do Wine têm procurado uma nova API de sincronização do kernel Linux que seja melhor que esync/fsync para atender às necessidades da API do objeto de sincronização do Windows NT há anos.
Será muito interessante ver onde este driver básico de sincronização do NT vai e se/quando ele será finalmente aceito no kernel principal do Linux para melhorar o desempenho da execução de jogos/aplicativos do Windows no Linux. De qualquer forma, como esta série está marcada como “RFC” e há alguns elementos de design abertos para sua implementação, podem ser necessárias algumas revisões antes de se estabelecer algo que possa ser upstreamed.
Confira esta série de patches para o trabalho inicial de RFC. Abaixo está também a apresentação do LPC 2023 sobre o assunto.
Até a próxima !!
Nenhum comentário:
Postar um comentário