Foi publicado no kerneltrap.org em http://kerneltrap.org/node/7637 uma entrevista com Jens Axboe.
Jens Axboe é funcionário contratado pela Oracle para trabalhar em tempo integral no kernel do linux. Ele implementou e mantém os novos algoritmos da camada dos dispositivos blocos. Nesta entrevista ele explica questões técnicas, por exemplo, o funcionamento do algoritmo CFQ (Complete Fair Queuing), que é o algoritmo utilizado para dispositivos de block no kernel do Linux.
Outra questão interessante é um projeto em que ele está trabalhando, que adicionará a chamada do sistema sys_splice. O funcionamento é semelhante o conhecido pipe (” | “), a sys_tee.
Porém o pipe copia os dados do kernel space para o user space, enquanto o objetivo do splice é mover estes dados dentro do kernel.
Axboe disse:
Splice describes a way to allow applications to move data around inside the kernel, without copying it back and forth between the kernel and user space.
Podendo traduzir como: Splice descreve uma maneira para permitir os aplicativos para mover dados dentro do kernel, sem copiar isto de volta entre o kernel e user space.
Axoboe citou como exemplo o uso de uma placa de captura de TV:
splice-in /dev/tvcapture | splice-tee out.mpg | splice-out /dev/tvout
Usando apenas os pipes, os dados devem ser copiados 2 vezes entre o kernel e user space, mas utilizando os splices, não é necessário efetuar as cópias.
Axoboe exemplifica:
he first step will open /dev/tvcapture and splice that file descriptor to STDOUT. The second will duplicate the page references from the STDIN pipe, splicing the first to the output file and splicing the second to STDOUT. Finally, the last step will splice STDIN to a file descriptor for /dev/tvout. [...] The data never needs to be copied around, we simply move page references around inside the kernel. It’s like building with Lego blocks :-)
Resumindo, quando utiliza-se splice, ao invés de copiar as informações, é copiado a referência da página para as das entradas para as saídas. Ele ainda informa que não existem aplicações para os usuários. Sem dúvida, esta é uma funcionalidade que tende a melhorar as aplicações multimídia do Linux e também servidores, onde as pacotes de rede são movidos entre diversos aplicativos. Apenas gostaria de saber [não tenho acesso ao fonte do kernel agora] se o splice já está na árvore do kernel ou em alguma árvore de testes.
O entrevistador perguntou sobre o processo de desenvolvimento do kernel e a adição de novas funcionalidades, dizendo que foi diminuiu o ritmo e Axboe respondeu que ele não vê a diminuição da velocidade, mas o oposto, ele tem certeza que continuarão inovando para os próximos 5 anos.
Foi perguntado sobre a possibilidade de existir as versões 2.7 ou 3.0 do kernel do Linux.
Axboe respondeu dizendo que não é provável e o Linus disse que a versão 2.7 não acontecerá amenos que obtenham o controle do kernel de suas mãos. E ele complementa dizendo, que na sua opinião, o novo modelo de desenvolvimento funciona realmente bem. Que estão obtendo coisas prontas muito mais rápido que anteriormente.
Ele ainda comenta que prefere a licensa GNU a BSD, pois pode-se obter, estudar e compartilhas fontes sob a licensa GNU não acha justo alguem obter
Só um detalhe, não é kernel do Linux. É kernel Linux. É que Linux é o nome do Kernel, ou seja, é o kernel.
Por: semente em 2 Fevereiro, 2007
às 2:47 pm
Eu considero Linux como sendo todo o sistema. Aquilo que tu pega o cd de uma distribuição e instala.
Por: Felipe Albrecht em 2 Fevereiro, 2007
às 3:39 pm
[...] Nota-se que as cópias ocorrem porque o espaço do kernel e do usuário não são compartilhados. Por causa disto, uma chamada do sistema, por exemplo a “write”, copia todas as informações do espaço usuário para o espaço do kernel para então escrever no descritor de arquivos. Outro exemplo, é a chamada do sistema pipe ou o “|” nos shells, conforme descrevi brevemente neste post. [...]
Por: Zero Copy - O que é? « Pih is All em 21 Fevereiro, 2007
às 9:15 pm