Ordenação Externa. Profa. Graça Nunes

Documentos relacionados
Operações Coseqüenciais. Processamento Coseqüencial. Modelo para implementação de processos coseqüenciais

Processamento Coseqüencial

Processamento Cosequencial*

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

Processamento Cosequencial: Ordenação Interna e Externa. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A.

Ordenação Externa (Merge Sort)

Memória secundária. Memória secundária

Algoritmos e Estruturas de Dados II. Ordenação Externa II. Ordenação Externa. Ordenação Externa. Ordenação Externa

Ordenação e Busca em Arquivos

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa

Aula 21 Ordenação externa

DISCO MAGNÉTICO Cabeçote Trilha

Algoritmos e Estruturas de Dados II. Ordenação Externa II. Ordenação Externa. Ordenação Externa. Ordenação Externa.

ARMAZENAMENTO SECUNDÁRIO, PARTE 2

Disco como gargalo. Armazenamento Secundário. Técnicas p/ minimizar o problema. Técnicas p/ minimizar o problema

Algoritmo MergeSort. Estrutura de Dados II Prof Jairo Francisco de Souza

INF70 Gerenciamento de Banco de Dados 2 Ordenação Externa. Ilmério Reis da Silva UFU/FACOM/BCC

Análise e Complexidade de Algoritmos

Classificação Externa: Geração de Partições Classificadas

Métodos de Ordenação Parte I

Introdução. Introdução

Dois parâmetros essenciais t T tempo de transferência de um bloco. assume-se igual para operações de leitura e escrita

ALGORITMOS DE ORDENAÇÃO

Árvores-B (Parte Ia) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

UFU/FACOM/BCC Gerenciamento de Bancos de Dados 2019/1-1 a Lista de Exercícios Prof. Ilmério Reis da Silva

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

Classificação Externa: Geração de Partições Classificadas

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Capítulo 11 Sistemas de Arquivos

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

Fundamentos de Arquivos e Armazenamento Secundário

HDs. Armazenamento Secundário. HDs. Capacidade do Disco. Organização de Informação em Disco. Organização de Informação em Disco

Classificação Externa: Intercalação de Partições Classificadas

Sistemas de Arquivos. (Aula 23)

Implementação de Diretórios (1)

Pesquisa em Memória Secundária. Prof. Jonas Potros

Métodos de Classificação

Terceiro Trabalho Prático. Este trabalho tem como objetivo ordenar um arquivo de dados e implementar as operações cosequenciais de merging e matching.

Métodos de Ordenação Parte 2

Memória Cache. Memória Cache. Localidade Espacial. Conceito de Localidade. Diferença de velocidade entre Processador/MP

Hierarquia. Hierarquia

Subsistemas de E/S Device Driver Controlador de E/S Dispositivos de E/S Discos Magnéticos Desempenho, redundância, proteção de dados

slide Pearson Prentice Hall. Todos os direitos reservados.

Classificação Externa: Intercalação de Partições Classificadas

BCC202 - Estrutura de Dados I

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

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

slide Pearson Prentice Hall. Todos os direitos reservados.

Algoritmos de Ordenação

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

Introdução à Informática. Alexandre Meslin

Classificação por Intercalação

void subdivide (LISTA_ENC *pl, LISTA_ENC *pl1, LISTA_ENC *pl2) { int cont, k=1; for (cont=tam(*pl)/2;cont;cont--) {

Árvore-B* Profa. Dra. Cristina Dutra de Aguiar Ciferri

Armazenamento Secundário

Trabalho Prático. Descrição do arquivo de dados

Sistemas Operacionais. Sistema de Arquivos. Edeyson Andrade Gomes.

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

Sistemas Operacionais Aula 15: Sistemas de I/O. Ezequiel R. Zorzal

Arquitetura e Organização de Computadores

- Busca e Ordenação em memória Secundária. Estrutura de Dados II

ORDENAÇÃO DE ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Aula 03 - Concorrência. por Sediane Carmem Lunardi Hernandes

ARQUITETURA DE COMPUTADORES UNIDADES DE MEMÓRIA. Prof: Leandro Coelho

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1

Árvores-B (Parte I) SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Árvores-B + SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Arquitetura de Computadores

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Algoritmos de Ordenação: Tempo Linear

Gerência de Memória. Gerência de Memória Introdução e Particionamento. Novo capítulo. Aulas anteriores. Plano da aula. Memória lógica & física

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

Armazenamento Secundário. Endereços no disco. Organização da informação no disco. Organização da informação no disco

Organização de Computadores

Árvores B Parte IV. Revisão de Inserção. Organização. Variantes. Leandro C. Cintra Maria Cristina F. de Oliveira

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006

ARMAZENAMENTO SECUNDÁRIO, PARTE 1 Professora Rosane Minghim

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

ARQUITETURA DE COMPUTADORES

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache

Lista - RAID. c) Redundância d) Capacidade

Memória Cache. Aula 24

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

Intercalação de vários arquivos. Estrutura de Dados II Prof Jairo Francisco de Souza

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Barramento. Prof. Leonardo Barreto Campos 1

ACH2025. Laboratório de Bases de Dados Aula 7. Armazenamento Físico. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

SSC0611 Arquitetura de Computadores

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

Organização e Arquitetura de Computadores I

Algoritmos de ordenação em forma paralela.

Arquitetura e Organização de Computadores


Transcrição:

Ordenação Externa Profa. Graça Nunes

Ordenação Externa Ordenar arquivos de tamanho maior que a memória interna disponível Algoritmos devem diminuir o número de acessos às unidades de memória externa Custo relacionado à transferência de dados Dados armazenados como um arquivo sequencial Métodos dependentes do estado atual da tecnologia Tipos de memória externa torna os métodos dependentes de vários parâmetros 2

Métodos Gerais Ordenação por Intercalação Intercalar significa combinar dois ou mais blocos ordenados em um único bloco, maior, ordenado. 3

Exemplo: intercalar (merge) 2 listas Lista1 Adams Carter Chin Davis Foster Garwich Rosewald Turner Lista2 Adams Anderson Andrews Bech Rosewald Schmidt Thayer Walker Willis 4

Algoritmo de intercalação (merge) Entrada: 2 listas ordenadas Lê um nome de cada lista e compara-os Se ambos são iguais, copia o nome para a saída e avança para os próximos nomes das 2 listas Se o nome da Lista1 é menor, ele é copiado para a saída e avança-se na Lista1 Se o nome da Lista1 é maior, copia o nome da Lista2 para a saída e avança-se na Lista2 5

PROGRAM: merge call initialize() call input() to get NAME_1 from LIST_1 and NAME_2 from LIST_2 while(more_names_exist) if (NAME_1 < NAME_2) write NAME_1 to OUT_FILE call input() to get NAME_1 from LIST_1 else if (NAME_1 > NAME_2) write NAME_2 to OUT_FILE call input() to get NAME_2 from LIST_2 else /* match names are the same */ write NAME_1 to OUT_FILE call input to get NAME_1 from LIST_1 call input to get NAME_2 from LIST_2 finish_up() 6

Operações Cosequenciais Merging é exemplo de uma operação cosequencial Envolve o processamento coordenado (simultâneo) de duas ou mais listas de entrada sequenciais, de modo a produzir uma única lista como saída Matching (achar valores comuns entre as duas listas) é outro exemplo de operação cosequencial Como funcionaria o matching? 7

Ordenação Externa Estratégia geral dos métodos de ordenação externa: 1. Quebre o arquivo em blocos que caibam na memória disponível 2. Ordene cada bloco na RAM 3. Intercale os blocos ordenados, gerando o arquivo ordenado. 8

Desempenho Os algoritmos para ordenação externa devem reduzir o número de passadas sobre o arquivo (por que?) Uma boa medida de complexidade é o número de vezes que um item é lido ou escrito da/na memória externa Bons métodos geralmente envolvem, no total, menos do que 10 passadas sobre o arquivo 9

Intercalação como base da ordenação externa Multiway Merging Geração de uma lista ordenada a partir de outras, menores, ordenadas, por intercalação K-way Merge (intercalação em k vias): intercalar k blocos ordenados Solução para ordenar arquivos muito grandes Ordenam-se partes menores do arquivo Intercalam-se as partes ordenadas 10

Ordenação por Intercalação de Arquivos em Disco k-way Mergesort Ao invés de considerar os registros individualmente, podemos considerar blocos de registros ordenados (corridas, ou runs) Para minimizar os seeks Método envolve 2 fases: geração das corridas (runs, blocos ordenados de dados), e intercalação 11

Esquema Geral do K-way Mergesort Arquivo (in) com N registros não ordenados K ordenações na RAM K corridas com N/k registros ordenados K-Merge Arquivo (out) com N registros ordenados 12

Intercalação em k-vias Esta solução Pode ordenar arquivos realmente grandes Geração das corridas envolve apenas acesso sequencial aos arquivos A leitura das corridas e a escrita final também são sequenciais Aplicável também a arquivos mantidos em fita, já que E/S é sequencial 13

k-way Mergesort Fase 1: Geração das Corridas Segmentos do arquivo (corridas) são ordenados em memória RAM, usando algum método eficiente de ordenação interna (p.ex., quicksort ou heapsort), e gravados em disco* Corridas vão sendo gravadas a medida em que são geradas * Veja na literatura como fazer ordenação e gravação das corridas em paralelo, usando heapsort 14

k-way Mergesort Fase 2: Intercalação As k corridas geradas na fase anterior são intercaladas (k-way), formando o arquivo ordenado, que vai sendo gravado no disco Envolvem buffers de entrada k chaves das corridas E buffer(s) de saída gravados no disco assim que completados 1 buffer ou 2 buffers de saída o que é melhor? 15

Suponha: Arquivo com N registros; Memória disponível: M registros; M<N Arquivo (in) com N registros não ordenados Fase 1: ordenação in in loco; Criação das k = N/M corridas R1 M M R2 M M K= N/M ordenações na RAM... K corridas (tam. M) gravadas em arquivo... M M M R3 R4 Rk 1a. Passada (leit.) 2a. Passada (grav.) Fase 2: k- Intercalação K buffers de entrada de tamanho M/K 3a. Passada (leit.) RAM = M registros 4a. Passada (grav.) Arquivo (out) ordenado de tamanho N 16

Complexidade do K-way Mergesort Fase 1: Criação das Corridas: 1 leitura sequencial do arquivo (N registros) K=N/M gravações sequenciais de M registros Fase 2: Intercalação: Toda a RAM é usada para buffers de entrada: abrigando K blocos de registros No total, K*K seeks para ler todos os registros para a intercalação Gravação dos N registros conforme ocorre a k- intercalação. 17

Exemplo: cálculo do tempo gasto na ordenação Apenas para ter um benchmark; não levar os números a sério! Supondo Arquivo com 80 MB, com 800.000 registros de 100 bytes, e cada corrida com 1 MB 1MB = 10.000 registros Arquivo armazenado em áreas contíguas do disco (extents), extents alocados em mais de uma trilha, de tal modo que um único rotational delay é necessário para cada acesso Características do disco tempo médio para seek: 18 ms atraso rotacional: 8.3 ms taxa de transferência: 1229 bytes/ms tamanho da trilha: 20.000 bytes 18

Exemplo Quatro passos a serem considerados Fase 1: Criação corridas Leitura dos registros, do disco para a memória, para criar as corridas Escrita das corridas ordenadas para o disco Fase 2: Intercala ção Leitura das corridas para intercalação Escrita do arquivo final em disco 19

Leitura dos registros e criação das corridas Lê-se 1MB de cada vez, para produzir corridas de 1 MB Serão 80 leituras, para formar as 80 corridas iniciais 80-way Merge O tempo de leitura de cada corrida inclui o tempo de acesso a cada bloco (seek + rotational delay) somado ao tempo necessário para transferir cada bloco 20

Leitura dos registros e criação das corridas seek = 18ms, rot. delay = 8.3ms, total 26.3ms Tempo total para a fase de ordenação: 80*(tempo de acesso a uma corrida) + tempo de transferência de 80MB Acesso: 80*(seek+rot.delay= 26.3ms) = 2s Transferência: 80 MB a 1.229 bytes/ms = 65s Total: 67s 21

Escrita das corridas ordenadas no disco Idem à leitura! Serão necessários outros 67s 22

Leitura das corridas do disco para a memória (para intercalação) 1MB de MEMÓRIA para armazenar 80 buffers de entrada portanto, cada buffer armazena 1/80 de uma corrida (12.500 bytes) à cada corrida deve ser acessada 80 vezes para ser lida por completo 80 acessos para cada corrida X 80 corridas 6.400 seeks considerando acesso = seek + rot. delay 26.3ms X 6.400 = 168s Tempo para transferir 80 MB = 65s 23

Efeito da buferização sobre o número de seeks quando a RAM é usada totalmente como buffer de entrada 1a. Corrida = dividida em 80 buffers (80 seeks)... 2a. Corrida = dividida em 80 buffers (80 seeks)... 3a. Corrida = dividida em 80 buffers (80 seeks)...... 80a. Corrida = dividida em 80 buffers (80 seeks)... 800.000 registros ordenados 24

Escrita do arquivo final em disco Precisamos saber o tamanho dos buffers de saída Nos passos 1 e 2, a MEMÓRIA funcionou como buffer de entrada, mas agora a MEMÓRIA está armazenando os dados a serem intercalados Para simplificar, assumimos que seja possível alocar 2 buffers de saída de 20.000 bytes, para escrita dois para permitir double buffering (enquanto um é gravado no disco, o outro é preenchido com novos registros ordenados); 20.000 porque é o tamanho da trilha no nosso disco hipotético 25

Escrita do arquivo final em disco Com buffers de 20.000 bytes, precisaremos de 80.000.000 bytes / 20.000 bytes = 4.000 seeks Como tempo de seek+rot.delay = 23.6ms por seek, 4.000 seeks usam 4.000 X 26.3, e o total de 105s. Tempo de transferência é 65s 26

Tempo total leitura dos registros para a memória para a criação de corridas: 67s escrita das corridas ordenadas para o disco: 67s leitura das corridas para intercalação: 168 + 65 = 233 s escrita do arquivo final em disco: 105 + 65 = 170 s tempo total do Mergesort = 537 s (~9 minutos) Tempo dominado pelo acesso ao disco, e não pelo tempo de intercalação na RAM 27

Comparação Quanto tempo levaria um método que não usa intercalação (como o keysort, p.ex.)? Se for necessário um seek separado para cada registro, i.e, 800.000 seeks a 26.3ms cada, o resultado seria um tempo total (só para seek) = 21.040s = 5 horas e 40s! 28

Quando usar Mergesort Quando a ordenação deve ser feita só raramente Quando o arquivo não for grande demais Quando o Mergesort passa a ser problemático? 29

Ordenação de um arquivo com 8.000.000 de registros Análise - arquivo de 800 MB O arquivo aumenta, mas a memória não! Em vez de 80 corridas iniciais, teremos 800 Portanto, seria necessária uma intercalação em 800-vias (k=800) no mesmo 1 MB de memória, o que implica em que a memória seja dividida em 800 buffers na fase de intercalação 30

Ordenação de um arquivo com 8.000.000 de registros Cada buffer comporta 1/800 de uma corrida, e cada corrida é acessada 800 vezes 800 corridas X 800 seeks/corrida = 640.000 seeks no total O tempo total agora é superior a 5 horas e 19 minutos, aproximadamente 36 vezes maior do que o arquivo de 80 MB (que é apenas 10 vezes menor do que este) 31

Ordenação de um arquivo com 8.000.000 de registros Definitivamente: necessário diminuir o tempo gasto obtendo dados na fase de intercalação 32

O custo de aumentar o tamanho do arquivo A grande diferença de tempo na intercalação dos dois arquivos (de 80 e 800 MB) é consequência da diferença nos tempos de acesso às corridas (seek e rotational delay) para intercalá-las Em geral, para uma intercalação em K-vias de K corridas, em que cada corrida é do tamanho da MEMÓRIA disponível, o tamanho do buffer para cada uma das corridas é de: (1/K) x tamanho da MEMÓRIA = (1/K) x tamanho de cada corrida (M/K) 33

Complexidade do Mergesort Como temos K corridas gastando K seeks cada uma, a operação de intercalação requer K 2 seeks Medido em termos de seeks, o Mergesort é O(K 2 ) Como K é diretamente proporcional à N (K=N/ M), o Mergesort é O(N 2 ), em termos de seeks 34

Maneiras de reduzir esse tempo 1. usar mais hardware (disk drives, MEMÓRIA, canais de I/O) 2. realizar a intercalação em mais de uma etapa, o que reduz a ordem de cada intercalação, aumentando o tamanho do buffer para cada corrida, portanto, transferindo mais registros com um único seek. 3. aumentar o tamanho das corridas iniciais (veja na bibliografia Replacement Selection) 4. realizar I/O simultâneo à intercalação 35

Redução do número de seeks: Intercalação em Múltiplos Passos (Multistep Merging) ao invés de intercalar todas as corridas simultaneamente, o grupo original é dividido em subgrupos menores (K= x*y) Arquivo (in) com N registros não ordenados Ordenar x*y corridas 1. Intercalar y corridas (x vezes) x conjuntos de y corridas (N/M= x*y).................. 2. Intercalar x corridas maiores X-merge Arquivo (out) com N registros ordenados 36

Redução do número de seeks: Intercalação em Múltiplos Passos (Multistep Merging) intercalação é feita para cada sub-grupo para cada sub-grupo, um espaço maior é alocado para cada corrida, portanto um número menor de seeks é necessário uma vez completadas todas as intercalações pequenas, o segundo passo completa a intercalação de todas as corridas 37

Intercalação em Múltiplos Passos No exemplo do arquivo com N=800 MB tinhamos 800 corridas com 10.000 registros cada (M=1MB). Para esse arquivo, a intercalação múltipla poderia ser realizada em dois passos: primeiro, a intercalação de x=25 conjuntos de y=32 corridas cada (x*y=800) depois, uma intercalação em 25-vias 38

Intercalação em Múltiplos Passos Passo único visto anteriormente exige 640.000 seeks Para a intercalação em 2 passos, temos, no passo 1: Cada intercalação em 32-vias aloca buffers que podem conter 1/32 de uma corrida. Então, serão realizados 32 X 32 = 1024 seeks Então, 25 vezes a intercalação em 32-vias exige 25 X 1024 = 25.600 seeks Cada corrida resultante tem 32 X 10.000 = 320.000 registros = 32 MB 39

Intercalação em Múltiplos Passos No passo 2, cada uma das 25 corridas de 32 MB pode alocar 1/25 do buffer portanto, cada buffer aloca 400 registros, ou seja, 1/800 corrida. Então, esse passo exige 800 seeks por corrida, num total de 25 X 800 = 20.000 seeks Total de seeks nos dois passos: 25.600 + 20.000 = 45.600 (contra 640.000 anteriores) 40

E o tempo total de intercalação? Nesse caso, cada registro é transmitido 4 vezes, em vez de duas. Portanto, gastamos mais 651s em tempo de transmissão Ainda, cada registro é escrito duas vezes: mais 40.000 seeks (assumindo 2 buffers de 20.000 bytes cada) Somando tudo isso, o tempo total de intercalação = 5.907s ~ 1hora 38 min A intercalação em 800 vias consumia ~5 horas 41