Sistemas operacionais

Kernel Linux 3.0, o que mudou afinal?

Quais foram as mudanças mais radicais  no Kernel 3?

Além de um novo esquema de numeração de versão, o Linux 3.0 também tem vários recursos novos: Btrfs esfregando dados e desfragmentação automática, XEN suporte Dom0, ICMP_ECHO sem privilégios, wake on WLAN, Berkeley Packet Filter JIT filtragem, um sistema memcached-like para o cache da página , um sendmmsg () syscall que os lotes sendmsg () chama e setns (), uma syscall que permite melhor manuseio de sistemas de virtualização de luz, como contêineres. Suporte a hardware novo foi adicionado: por exemplo, Microsoft Kinect, AMD Llano Fusão APUs, Intel iwlwifi 105 e 135, Intel C600 Serial-Attached SCSI controlador, Ralink RT5370 USB, vários dispositivos Realtek RTL81xx ou o Apple da webcam iSight.

Muitos outros motoristas e pequenas melhorias foram adicionadas.Características proeminentesBtrfs: desfragmentação automática, esfregando, melhorias de desempenhosendmmsg (): lotes de sendmsg () chamaXEN suporte dom0CleanCacheBerkeley Packet Filtro just-in-time de filtragemWake on suporte WLANSem privilégios mensagens ICMP_ECHOsetns () syscall: melhor tratamento de namespaceAlarme-timersMudanças motorista e uma arquitetura específicaVFSProcesso schedulerGerenciamento de memóriaNetworkingSistemas de arquivosCryptoVirtualizaçãoSegurançaRastreamento / profilingVárias mudanças fundamentais

1. Características proeminentes1.1. Btrfs: desfragmentação automática, esfregando, melhorias de desempenhoDesfragmentação automática

COW (copy-on-write) filesystems têm muitas vantagens, mas também têm algumas desvantagens, por exemplo fragmentação. Btrfs expõe os dados em seqüência quando os arquivos são gravados no disco pela primeira vez, mas um projeto COW implica que qualquer alteração posterior ao processo não deve ser escrito em cima dos dados antigos, mas ser colocado em um bloco livre, que irá causar fragmentação (bases de dados RPM são um caso comum deste problema). Adicionalmente, ele sofre os problemas de fragmentação comum a todos os sistemas de arquivos.

Btrfs já oferece alternativas para combater esse problema: Primeiro, ele suporta a desfragmentação online usando o comando “btrfs desfragmentar sistema de arquivos”. Segundo, ele tem uma opção de montagem,-o nodatacow, que desativa COW para dados. Agora btrfs acrescenta uma terceira opção, o-o autodefrag opção de montagem. Este mecanismo aleatório detecta pequenas escreve em arquivos e filas-los para um processo de desfragmentação automática, de modo que o sistema de arquivos irá desfragmentar em si, enquanto ele é usado. Não é adequado para cargas de trabalho de virtualização ou banco de dados grande ainda, mas funciona bem para arquivos menores, como rpm, ou bancos de dados SQLite bdb. Código: (commit)

Esfrega

“Scrubbing” é o processo de verificação da integridade dos dados no sistema de arquivos. Esta implementação inicial de esfregar irá verificar as checksums de todos as extensões no sistema de arquivos. Se ocorrer um erro (checksum ou erro de IO), uma boa cópia é procurado. Se for encontrada, a cópia ruim vai ser reescrita. Código: (commit 1, 2)

Outras melhorias

-File speedup criação / exclusão: O desempenho da criação de arquivos e exclusão no btrfs era muito pobre. A razão é que para cada criação ou exclusão, btrfs deve fazer um monte de b + inserções da árvore, como item de inode, item nome do diretório, o índice nome do diretório e assim por diante.Agora btrfs pode fazer algumas inserções + b atrasada árvore ou supressões, que permite a lote essas modificações. Microbenchmarks de criação do arquivo ter sido acelerar by ~ 15% de eliminação, e arquivo de ~ 20%. Código: (commit)

-Não lave itens csum de dados do arquivo inalterado: acelera fsync. A carga de trabalho sysbench fazendo “gravação aleatória + fsync” passou de 112,75 solicitações / s para 1.216 pedidos / sec. Código: (commit)

-Quasi-round-robin para alocação de espaço em configurações multidispositivo: o alocador pedaço atualmente sempre aloca espaço nos dispositivos na mesma ordem. Isto leva a uma distribuição muito desigual, especialmente com RAID1 ou RAID10 e um número ímpar de dispositivos.Agora Btrfs sempre classifica os dispositivos antes de alocar e aloca as listras nos dispositivos com mais espaço disponível. Código: (commit)

1.2. sendmmsg (): lotes de sendmsg () chamaRecvmsg () e sendmsg () são os syscalls usado para receber / enviar dados para a rede. Em 2.6.33, o Linux adicionou recvmmsg (), uma syscall que permite receber em uma chamada de dados único que precisaria recvmsg múltiplas () chama, melhorando a throughput e latência para um número de cenários. Agora, uma sendmmsg equivalente () syscall foi adicionado. A microbenchmark viu uma melhoria de 20% na taxa de transferência em UDP enviar e 30% no socket raw enviar

Código: (commit)

1.3. XEN suporte dom0Finalmente, o Linux tem suporte Xen dom0

1.4. CleanCacheRecomenda LWN artigo: CleanCache e Frontswap

CleanCache é um recurso opcional que pode, potencialmente, aumenta o desempenho do cache de página. Poderia ser descrito como um sistema memcached-like, mas para páginas de memória cache. Oferece armazenamento de memória não directamente acessíveis ou endereçável pelo kernel, e ele não garante que os dados não vão desaparecer. Ele pode ser usado por software de virtualização para melhorar a manipulação de memória para os clientes, mas também pode ser útil para implementar coisas como um cache comprimido.

Código: (commit), (commit)

1.5. Berkeley Packet Filtro just-in-time de filtragemRecomenda artigo LWN: A JIT para filtros de pacotes

O Packet Berkeley Filtro capacidades de filtragem, usado por ferramentas como libpcap / tcpdump, normalmente são tratados por um intérprete. Esta versão adiciona um JIT simples que gera código nativo quando o filtro é carregado na memória (algo já feito por outros sistemas operacionais, como FreeBSD). Administrador precisa habilitar este recurso escrita “1” para / proc / sys / net / core / bpf_jit_enable

Código: (commit)

1.6. Wake on suporte WLANWake on Wireless é uma funcionalidade para permitir que o sistema entrar em um estado de baixa energia (por exemplo, ACPI S3 suspender), enquanto o NIC wireless permanece ativo e faz coisas diferentes para o hospedeiro, por exemplo, ficar conectado a um AP ou à procura de redes. A pilha de 802,11 adicionou suporte para ele.

Código: (commit 1, 2)

1.7. Sem privilégios mensagens ICMP_ECHORecomenda LWN artigo: sockets ICMP

Este lançamento torna possível enviar mensagens ICMP_ECHO (ping) e receber as mensagens correspondentes ICMP_ECHOREPLY sem nenhum privilégio especial, semelhante ao que é implementado no Mac OS X. Em outras palavras, o patch faz com que seja possível implementar setuid-less e CAP_NET_RAW- menos / bin / ping. Inicialmente, esta funcionalidade foi escrito para Linux 2.4.32, mas infelizmente nunca foi tornada pública. A nova funcionalidade é desabilitada por padrão, e é habilitado na inicialização pelo suporte a distribuições Linux, opcionalmente, com restrição a um grupo ou um intervalo de grupo.

Código: (commit)

1.8. setns () syscall: melhor tratamento de namespaceRecomenda artigo LWN: descritores de arquivos Namespace

Linux suporta namespaces diferente para muitos dos seus recursos de trata, por exemplo, mostram formas leves de virtualização tais como recipientes ou systemd-nspaw aos processos virtualizados um PID virtuais diferente do PID real. A mesma coisa pode ser feita com a estrutura de diretórios do sistema de arquivos, recursos de rede, IPC, etc A única maneira de definir configurações diferentes namespace estava usando bandeiras diferentes no clone () syscall, mas que o sistema não fazer coisas como permitir a um processos de acesso ao namespace outro processo “. O setns () syscall resolve esse problema-

Código: (commit 1, 2, 3, 4, 5, 6)

1.9. Alarme-timersRecomenda artigo LWN: Waking sistemas de suspensão

Alarme de temporizadores são um temporizador estilo híbrido, semelhante ao de alta resolução timers, mas quando o sistema for suspenso, o dispositivo RTC é definido ao fogo e ativar o sistema mais rápido para quando o alarme do temporizador expirar. O conceito de Alarme-timers foi inspirado pelo motorista Alarme Android, e uma interface para userland usa o relógio e interface POSIX timers, usando dois novos clockids: CLOCK_REALTIME_ALARM e CLOCK_BOOTTIME_ALARM.

Código: (commit 1, 2)

2. Mudanças motorista e uma arquitetura específicaTudo que o motorista e uma arquitetura específica mudanças podem ser encontrados na página Linux_3.0_DriverArch

3. VFSCache queda de segurança xattr verificar a escrever: benchmarking na btrfs mostrou que um gargalo grande escala em grandes sistemas de btrfs é atualmente a pesquisa xattr a cada gravação, o que provoca uma caminhada árvore adicionais, acertando alguns bloqueios por arquivo do sistema e escalabilidade muito ruim. Este é também um problema em ext4, onde ela atinge o bloqueio mbcache global. Cache esta verificação resolve o problema (commit)

4. Processo schedulerAumentar a resolução SCHED_LOAD_SCALE: Com esta resolução extra, o programador pode lidar com hiearchies cgroup mais profundo e fazer uma melhor distribuição ações e balanceamento de carga em sistemas maiores (especialmente para grupos de tarefas de baixo peso) (commit), (commit)

Mova o segundo semestre de ttwu () para o CPU remoto: evita ter que tomar rq-> lock e fazer o enqueue tarefa remotamente, poupando muito em transferências cacheline. A referência semáforo vai de 647.278 queimaduras trabalhador por segundo para 816.715 (commit)

Dica de amigos próximos sobre o sono e antecipar caminho: um marco do pior caso que consiste em dois processos do cliente tbench com 2 threads cada um rodando em uma única CPU passou de 105,84 MB / s para 112,42 MB / seg (commit)

5. Gerenciamento de memóriaFaça mmu_gather preempemtible (commit)

Lote activate_page () chama para reduzir zona de> contenção lru_lock (commit)

tmpfs: implementar o suporte xattr genérico (commit)

Memória cgroup controlador:

Adicionar memory.numastat API para as estatísticas NUMA (commit)

Adicionar a contagem pagefault em memcg stats (commit)

Recuperar a memória de nós em round-robin ordem (commit)

Remova o parâmetro de kernel obsoleto noswapaccount (commit)

6. NetworkingPermitir configurar a rede pelo namespace fd (commit)

Sem fio

Adicionar a capacidade para fazer propaganda de combinações possíveis de interface (commit)

Adicionar suporte para verificações agendadas (commit)

Adicionar o sinalizador de autenticação userspace a malha de configuração (commit)

Nova notificação para descobrir candidatos pares de malha. (Commit)

Permitir ethtool para definir interface em modo de loopback. (Commit)

Não permitir o cache-cópia de usuário em transmitir (commit)

ipset: SCTP, suporte UDPLite adicionado (commit)

sctp: implementar SCTP_GET_ASSOC_ID_LIST tomada de opção (confirmação), implementar evento de notificação SCTP_SENDER_DRY_EVENT (commit)

bridge: permitir a criação de dispositivos de ponte com netlink (commit), permitem criar / excluir entradas fdb via netlink (commit)

batman-adv: apoio de multi vlan para a ponte de detecção de loop (commit)

pkt_sched: QFQ – quick justo fila scheduler (commit)

RDMA: Adicionar netlink infra-estrutura que permite o registo de clientes RDMA (commit)

7. Sistemas de arquivosCAMADA DE BLOCO

Enviar descartar bio em lotes em blkdev_issue_discard () – faz descarte de dados mais rápida (commit)

EXT4

Enable “furos” funcionalidade (recomendado LWN artigo) (commit), (commit)

Adicionar suporte para múltiplos mount proteção (commit)

CIFS

Adicionar suporte para a montagem de compartilhamentos DFS Windows 2008 (commit)

Converter cifs_writepages usar async escreve (commit), (commit)

Adicionar opção de montagem rwpidforward que permite que um modo quando CIFS frente pid de um processo que abriu um arquivo para qualquer operação de leitura e escrita (commit)

OCFS2

SSD apoio corte (commit), (commit)

Suporte para extensões em movimento (commit), (commit)

NILFS2

Implementar redimensionar ioctl (commit)

XFS

Adicionar suporte descartar online (commit)

8. CryptoCAAM – Adicionar suporte para o SEC4/CAAM Freescale (commit)

cadeado – Adicionar SHA-1/256 módulo para VIA Nano (commit)

s390: adicionar suporte a hardware do sistema z de modo CTR (commit), adicione Sistema de suporte de hardware para z ghâsh (commit), adicionar suporte a hardware do sistema z de modo XTS (commit)

s5p-sss – S5PV210 adicionar suporte avançado motor de criptografia (commit)

9. VirtualizaçãoModo de usuário Linux: apoio earlyprintk add (commit), adicione ucast de transporte Ethernet (commit)

xen: apoio blkback add (commit)

10. SegurançaPermitir a aplicação de limites capacidade de ajudantes usermode (commit)

SELinux

adicionar / sys / fs / selinux ponto de montagem para colocar selinuxfs (commit)

Fazer cache do SELinux VFS RCU anda seguro (melhora o desempenho VFS) (commit)

11. Rastreamento / profilingperf stat: Add-d-d e-d-d-d opções para mostrar os eventos mais CPU (commit), (commit)

perf stat: Adicionar opção –sync/-S (commit)

12. Várias mudanças fundamentaisrcu: prioridade para impulsionar TREE_PREEMPT_RCU (commit)

ulimit: ulimit raise padrão rígido sobre o número de arquivos para 4096 (commit)

cgroups

remover o subsistema cgroup Namespace. Foi substituído por «clone_children” um sinalizador de compatibilidade, onde um cgroup recém-criado irá copiar os valores cgroup pai. O userspace tem que criar manualmente um cgroup e adicionar uma tarefa para o arquivo ‘tarefas’ (commit)

Faça arquivo ‘procs “gravável (commit)

kbuild: implementar vários níveis de W = (commit)

PM / Hibernate: Adicionar botão sysfs para controlar o tamanho da memória para os motoristas (commit)

posix-timers: RCU conversão (commit)

coredump: adicionar suporte para exe_file em nome de núcleo (commit)

Fonte

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!