if ($answer_counter == 1): ?>
endif; ?>
O IO assíncrono no FreeBSD não é totalmente melhor que no Linux. Eu acho que sua fonte significou que a família de chamadas AIO ( aio_read
, etc.) é implementada diretamente no kernel do FreeBSD, mas converte seus pedidos para IOCPs internamente onde possível (sockets, pipes, flat disk access, etc.) e cria threads de kernel apenas para sistema de arquivos I / O. Ao contrário disso, o Linux usa threads de userland para a família de chamadas AIO, que são mais explícitas, mas expõem seu trabalho e precisam de um contexto de thread maior. Todos os outros aspectos estão relacionados à arquitetura e ao desempenho comuns do kernel, o que depende de muitas funcionalidades, incluindo as habilidades de ajuste do sysadmin.
- Existem abordagens quando os encadeamentos são explicitamente necessários para AIO - o caso principal é quando um arquivo é mapeado e lido como uma região de memória, e a leitura real é tratada como falha de página. Como a falha de página interrompe um determinado fluxo de controle (ou seja, encadeamento), ele requer que uma thread separada seja manipulada independentemente. Parece que isso é muito próximo do seu suposto mecanismo, mas somente se você controlar o uso da RAM corretamente; isso significa pelo menos% em massa
madvise
para especificar quais regiões são necessárias e quais não são. Às vezes, o direct * read () / * write () é mais fácil porque eles não exigem manter segmentos já processados expostos à RAM.
- AIO por si só não se correlaciona com swap de qualquer maneira. Usar qualquer maneira de IO requer entrada e saída na melhor taxa. Mas, a questão é que, se você mantiver enormes quantidades de dados na memória de processo, ela será trocada e encerrada. Se o seu "conjunto de trabalho" (conjunto de páginas que deve estar na RAM para trabalhar sem degradação de desempenho de processo óbvio) for maior que se encaixa na memória RAM (incluindo gastos para os dados do kernel, cache de disco, etc.), você vai cair em troca constante. Nesse caso, os algoritmos devem ser adaptados para manter o conjunto de trabalho pequeno o suficiente, essa é a única solução.
- Particularmente para Linux, por favor, mantenha número 12309 em mente. Ele é relatado como fixo, mas o ticket perde parte importante do histórico e das consequências, portanto, o problema com a limpeza tardia do cache de disco e a troca de massa pode retornar. A diferença importante do FreeBSD é que os sistemas BSD nunca tiveram esse problema.