Caching. Caches do Sistema de Ficheiros

Documentos relacionados
Sistema de Ficheiros

LEIC/LERC 2008/09. Segundo Teste de Sistemas Operativos. Grupo I [3 valores]

Algoritmos de Gestão de Memória

Memoria. UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

Sistema de Ficheiros. Sistema de Ficheiros

Sistemas Operacionais. BC Sistemas Operacionais

Sistemas de Ficheiros

AULA Nº 11 SISTEMAS OPERACIONAIS. Técnicas de Memória Virtual

Gestão de Memória. Algoritmos de Gestão de Memória

Gestão de Memória. Algoritmos de Gestão de Memória

Sistemas Operativos I/O. Rui Maranhão

Departamento de Engenharia Informática. Gestão de Memória. Parte II Algoritmos

Gestor de Sistemas de Ficheiros

Algoritmos de Gestão de Memória

Arquitectura de Computadores (ACom)

Espaço de Endereçamento

Gestão de Memória. Espaço de Endereçamento

Arquitectura de Computadores (ACom)

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8th Edition

Microprocessadores. Memórias

Arquitectura de Computadores

Gestão de Memória. Espaço de Endereçamento

Capítulo 9: Memória Virtual. Operating System Concepts 8 th Edition

Fundamentos de Sistemas Operacionais

Gestão de memória - Memory Management Unit (MMU)

Sistemas Operacionais

Gestor de Sistemas de Ficheiros

Sistemas Operacionais

Gerência de Memória. Endereçamento Virtual (1) Paginação. Endereçamento Virtual (2) Endereçamento Virtual (3)

Arquitetura de Sistemas Operativos

Divisão da lacuna em espaços na base 2: Eficiente quanto à velocidade e Ineficiente quanto à fragmentação.

Sistemas de Ficheiros Distribuídos. Pedro Ferreira DI - FCUL

Gerência de Memória. Paginação

ELECTRÓNICA DE COMPUTADORES. Sumário

LEIC/LERC 2008/09. Primeiro Exame de Sistemas Operativos. 20 de Janeiro de Duração: 2h30m. Grupo I [3 valores]

Sistemas Operacionais

Sistemas Operativos 8ª parte - Gestão de Ficheiros. Prof. José Rogado Prof. Pedro Gama Universidade Lusófona

Introdução aos Sistemas Operacionais. Subsistema de Arquivos

Espaço de Endereçamento

Gerenciamento de memória

Sistemas Operacionais II. Windows: Gerenciamento de Memória

Gestão de memória - Memory Management Unit (MMU)

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

Hierarquia de Memória

Sistemas de Memória III

Arquitectura de Computadores

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios Parte 2

Memória Virtual. Paulo Sérgio Almeida. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

Arquitectura de Computadores

Sistemas Operacionais. Prof. MSc. André Yoshimi Kusumoto

Sistemas Operacionais

Gestão de Memória algoritmos e políticas

Implementação de Diretórios (1)

Sistemas Operacionais

Capítulo 6 Sistema de ficheiros

Sistemas de Arquivos. (Aula 23)

5 de Maio de Aula 15

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Primária. 29/04/2014 Prof. Valeria M. Bastos

Sistema de Ficheiros. Sistemas Operativos 1

Prof. José Rogado Universidade Lusófona

Memória virtual. Sistemas de Computação

SSC0611 Arquitetura de Computadores

Cache. Cache. Direct Mapping Cache. Direct Mapping Cache. Internet. Bus CPU Cache Memória. Cache. Endereço Byte offset

Capítulo 11 Sistemas de Arquivos

LEIC/LERC 2011/12-1º Exame de Sistemas Operativos 16/Janeiro/2012

SSC0640 Sistemas Operacionais I

Arquitetura de Sistemas Operacionais

Algoritmos de Substituição de Páginas. Igor Gustavo Hoelscher Renan Arend Rogério Corrêa Medeiros

Instituto de Matemática e Estatística - USP MAC Organização de Computadores EP1. Experimentos com o cache. Tiago Andrade Togores

Fundamentos de Sistemas Operacionais

Sumário. Ficheiros. Ficheiros

SSC0112 Organização de Computadores Digitais I

Introdução à Arquitetura de Computadores

Segurança em Sistemas Operativos

Sistemas operacionais P A G I N A Ç Ã O D E M E M Ó R I A

Arquitectura de Computadores (ACom)

Memória partilhada em Unix SysV

Sistemas Operacionais

Sistemas de Arquivos. Diretórios Gerenciamento de Espaço em Disco

implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Fernando Ramos, Nuno Neves, Sistemas Operativos,

Sistemas Operacionais. Sistema de entrada e Saída

CURSO TÉCNICO EM INFORMÁTICA SISTEMAS OPERACIONAIS II MEMÓRIA VIRTUAL

Sistemas Operativos. Luís Paulo Reis. Sistemas Operativos. Sumário

Arquitectura de Computadores

Gestão de Memória. mecanismos de gestão de memória protecção da memória algoritmos de gestão de memória. P. Ferreira/J. A. Marques - INESC/IST 01/02 1

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Organização de Computadores

Modelação de algoritmos de substituição de páginas Anomalia Belady

Sistemas Operacionais. Prof. André Y. Kusumoto

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS CURSO DE ENGENHARIA ELECTROTÉCNICA

Processos. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

Gerenciamento de Memória

Gestor de Sistemas de Ficheiros. Sistema de Ficheiros

Sistemas Operacionais

Memória partilhada em Unix SysV

Memória Virtual. Prof. M.Sc. Bruno R. Silva CEFET-MG Campus VII

Transcrição:

Caching Caches do Sistema de Ficheiros Acessos aos dispositivos de memória de massa: 4 a 5 ordens de grandeza mais lentos que os acessos a memória, Como usar caches para reduzir peso das escritas e leituras em disco? Atraso da escrita dos blocos em disco Atraso na libertação de blocos O desempenho global do sistema de armazenamento é fortemente influenciado pela eficiência das suas caches: cache com uma taxa de sucesso (hit-rate) de 90% / 95% incrementa o desempenho do sistema de armazenamento em cerca de 10 / 50 vezes 1

Caches do Sistema de Ficheiros Existem três tipos de caches no sistema de ficheiros do Linux: Cache de directórios (nomes) Cache de i-nodes Cache de blocos de disco (dados) Caches do Sistema de Ficheiros Processo Utili. Núcleo stdio programa FILE* Iobuf flush de descritores do processo Núcleo partilhado de Ficheiros Abertos de descritores de sistemas de ficheiros Cache de Nomes Cache de inodes Cache de Dados Código de manipulação das estruturas Código de manipulação das estruturas Código específico de cada sistema de ficheiros 2

Cache de Nomes Cache de directórios (nomes): associa um nome a um inode. também é chamada de cache de directórios é preenchida aquando da abertura de um ficheiro, com uma entrada para cada componente do pathname que identifica o ficheiro. Cada entrada da cache de nomes (dentry) tem: o nome desse componente do pathname, um apontador para a cache de inodes onde está o inode desse ficheiro, e um apontador para a entrada da cache de nomes que tem o componente que o precede, i.e. o directório acima. No caso dos directórios raiz estes apontam para si próprios. A cache de nomes é particularmente importante para optimizar as aberturas de ficheiros elimina a necessidade de ler do disco os ficheiros directórios durante o processo de resolução de nomes. Cache de nomes de Hash Hashed pelo device e pelo nome do directório Nível I Nível II LRU Least Recent Used com dois níveis. 1.Cada nova entrada é inserida no final da lista de nível um. 2.Quando 1 entrada é acedida segunda vez é colocada no final da lista de nível dois. 3.De cada vez que se coloca um elemento no final de cada uma das listas e não existem mais blocos para reservar é removido o elemento que está no topo dessa lista. Cada entrada contém um componente do pathname, o device onde esse ficheiro está e o inode. 3

Cache de inodes (ou vnodes) Conjunto de estruturas em memória: denominadas vnodes (virtual nodes), indexadas por uma função de dispersão que mantém os inodes dos ficheiros abertos. Contém: inodes dos ficheiros abertos inodes de ficheiros que estão fechados mas que estiveram abertos recentemente e podem voltar a ser abertos em breve Cache de i-nodes de inodes Os i-nodes candidatos à substituição são os que têm o contador de utilizações a zero. de Hash Hashed pelo número do dispositivo e pelo i-node I-nodes. Contêm um contador de utilizações. Cada i-node pode estar a ser usado por mais do que um descritor de ficheiro. 4

Cache de Blocos O núcleo poderia ler e escrever directamente para o disco em todos os acesso a ficheiros: implicaria elevados tempos de resposta do sistema devido aos tempos de acesso ao disco Para melhorar o desempenho: minimizar os acessos ao disco através de uma cache que contém os blocos que foram recentemente acedidos as rotinas de leitura e escrita analisam os blocos na cache antes de acederem ao disco Dois níveis de cache: biblioteca de I/O que adapta as operações de leitura/escrita ao tamanho dos blocos em disco zona de memória entre os processos e os gestores dos discos Escrita atrasada: Escrita atrasada Escritas não são refletidas de imediato em disco Objetivo: Minimizar escritas ao disco e agrupá-las em blocos contíguos Quando escrever os blocos modificados em cache para disco? quando o número de blocos modificados sobe acima de um determinado nível, quando existem blocos modificados há relativamente muito tempo (e.g. 30 segundos) quando há pedido explícito (e.g. fflush) 5

3 estados de um bloco na cache de dados três estados diferentes da entrada da cache: Se o conteúdo da entrada é igual ao conteúdo do bloco existente em disco, então diz-se que a entrada está Limpa (Clean). Se a entrada contém dados que foram escritos pelo sistema mas que ainda não foram actualizados no disco, diz-se que a entrada está Modificada (Dirty). Se a entrada estiver actualmente a ser alvo de uma transferência de/para o disco então diz-se que a entrada está Reservada (Locked) Cache de blocos (Unix tradicional) Hashed pelo device e pelo nº do bloco Listas com os blocos utilizados por ordem de utilização e pelo estado do bloco. Listas de blocos livres organizadas por dimensão do bloco. Note-se que a cache é para ser utilizada por vários discos com diferentes dimensões de bloco de Hash Dirty Listas LRU Locked Clean Listas de blocos livres 0.5K 1K 2K 4K 8K Estrutura com o endereço e dimensão do buffer com o bloco de disco 6

Cache de blocos (actualmente) As caches dos sistemas operativos actuais são caches que: para além de usarem o endereço lógico da informação a aceder (i.e. identificador do ficheiro e deslocamento dentro do ficheiro), estão integradas com o espaço de memória virtual de modo a optimizarem a utilização total da memória disponível. O espaço disponível para manter blocos de ficheiros em memória é toda a memória disponível: a política de substituição é efectuada pelos algoritmos de substituição de páginas tal como se de outra página de memória virtual se tratasse, com a diferença que a zona de paginação é diferente, i.e. são paginadas para o ficheiro em disco ACESSO A FICHEIROS MAPEADOS EM MEMÓRIA MapearFicheiro (Fd, posição, endereço, dimensão) DesmapearFicheiro (endereço, dimensão) A primitiva MapearFicheiro permite aceder ao conteúdo de um ficheiro da mesma forma que se acede a uma qualquer outra estrutura em memória. O conteúdo do ficheiro indicado por Fd é: mapeado a partir da posição indicada pelo parâmetro posição, no endereço de memória a indicado pelo parâmetro endereço, numa extensão indicada pelo parâmetro dimensão. A partir deste momento é possível aceder directamente ao ficheiro acedendo directamente às posições de memória indicadas. 7

Caches de Blocos e de Páginas - Evolução da Cache em Linux para Suporte a ficheiros mapeados em memória No Unix SVR4 e na versão 2.2 do Linux: a cache de páginas é uma estrutura completamente distinta e separada da cache de blocos dupla cache é um factor de degradação do desempenho e de complexidade do sistema de ficheiros É necessário: efectuar cópias entre as caches criar um sistema de manutenção da sua coerência (se um ficheiro for mapeado em memória e for simultaneamente acedido pelas chamadas sistema de leitura e escrita, quer a cache de páginas quer a de blocos podem ficar desactualizadas uma em relação à outra.) Processos Processos mmap read/write mmap read/write Cache de páginas Cache de páginas Cache de blocos Disco Cache de blocos Disco Versão 2.2 Versão 2.4 Cache de Páginas e de Blocos Vantagens: resolve problema da coerência entre os dois tipos de caches Reduz o número de cópias necessário para escrever uma página em disco, Na versão 2.4 do Linux, o acesso a estas caches foi uniformizado e o espaço físico utilizado é partilhado A uniformização do acesso foi conseguido: modificando as primitivas de leitura e escrita (ex. acesso sequencial, ficheiros mapeados em memória, regiões de memória partilhada, páginas enviadas para a área de swap), de modo a que todas elas se façam para a cache de páginas as escritas em disco são efectuadas utilizando a cache de blocos, que partilha o mesmo espaço físico que a cache de páginas, o que evita as cópias entre ambas. 8

Cache de Páginas e de Blocos de Hash de páginas Descritor de página Descritor de bloco Cache de Páginas e de Blocos os descritores de página contêm um apontador para uma lista circular dos descritores dos blocos que estão mapeados nessa página os descritores de bloco contêm um apontador para o descritor da página onde estão mapeados de Hash de páginas cada inode possui um apontador para o descritor da região de memória que tem as páginas do respectivo ficheiro. os descritores de páginas estão inseridos numa tabela de dispersão global indexada pelo endereço dos descritores das regiões de memória a que pertencem e pelo índice da página dentro da região é relativamente fácil localizar a página de memória onde se quer efectuar a leitura ou a escrita, através do inode do ficheiro. Descritor de página Descritor de bloco 9

É trivial escrever uma página em disco pois os descritores de bloco contêm toda a informação necessária para escrever no dispositivo. O acesso aos directórios, ficheiros normais e dispositivos de memória de massa é normalmente efectuado através do seu inode. Nas versões anteriores à versão 2.4 do Linux estas operações realizavam-se sobre a cache de blocos. A partir da versão 2.4 essas operações realizam-se directamente na cache de páginas. Cache de Páginas e de Blocos de Hash de páginas Descritor de página Descritor de bloco 10