[FUG-BR] [OT] Oracle - FreeBSD (Experiências)

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Sexta Setembro 18 14:54:00 BRT 2009


Luiz Gustavo S. Costa escreveu:
> mas o binario não é emulado e sim as bibliotecas linux para rodar um
> binario compilado usando bibliotecas linux...
> 
> é diferente de um vware ou vbox da vida
> 
> 2009/9/18 Ederson de Moura <ederbsd em gmail.com>:
>> Oi Luiz,
>>
>> Um binário "emulado" nunca será mais rápido que um binário nativo!
>>
>> Cordialmente, edm.

Como o Luiz Gustavo disse, não existe qualquer emulação. Existe
compatibilidade binária. A call execve(2) vai avaliar o formato do
binário ELF, e com base no tipo (brand elf) vai decidir em que ambiente
e bibliotecas isola o processo, se / ou /compat/linux; se o elf for tipo
Linux passa a fornecer interfaces de chamadas de sistemas plenamente
compatível com o kernel do linux na versão da compat. De fato a
interface não é apenas compatível, é a mesma. O código é portado do
kernel Linux (por isso options LINUX nunca está no GENERIC, é licença GPL).

Logico que é só a interface de compatibilidade. Internalmente quando a
call é feita, o FreeBSD faz as coisas de sua forma. Por exemplo, o
malloc, fork, exec, free, pthread_create, pthread_detach. A chamada é
plenamente compatível mas ao alocar a memória, é a VM do FreeBSD quem
gerencia a memória do jeito dele (hello, Riek Van Riel). Ao escalonar um
processo, é o escalonador do FreeBSD (ULE, 4BSD) e não do Linux (CFS,
etc). Ao criar uma thread, é do jeito FreeBSD de ser MT.

Ou seja não tem nada de emulação. É compatibilidade.

E as diferenças de performance, quando existe, são técnicamente
justificáveis. Pois um binário de Linux no FreeBSD, ainda que não saiba
(e não precisa mesmo saber, não faz diferença, não é algo que diz
respeito a aplicação e sim ao kernel), é o ULE quem o escalona, é a VM
do McKusick que gerencia sua memoria, é a jemalloc quem aloca, enfim,
não tem nada a ve com Linux. No entanto a aplicação não sabe (nem
precisa) justificando qualquer diferença de performance.

-- 
Patrick Tracanelli

FreeBSD Brasil LTDA.
Tel.: (31) 3516-0800
316601 em sip.freebsdbrasil.com.br
http://www.freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"



Mais detalhes sobre a lista de discussão freebsd