Análise da Localidade de Programas e
Desenvolvimento de Algoritmos Adaptativos para
Substituição de Páginas
Hugo Henrique Cassettari
Orientador: Edson Toshimi Midorikawa
Trabalho de Mestrado, Janeiro de 2004
Escola Politécnica da Universidade de São Paulo
Departamento de Engenharia de Computação e Sistemas Digitais
Estrutura da Apresentação:
• Algoritmos de substituição de páginas (revisão);
• Localidade de referências;
• Ferramentas desenvolvidas para análise de localidade;
• Algoritmos adaptativos;
• Proposta LRU-WAR;
• Avaliação de desempenho.
Memória Virtual com Paginação:
Página
4 KB
Área de Swap
(Disco)
Memória
Principal
Memória Virtual com Paginação:
Problema da
Substituição:
Qual página
deve ser retirada
da memória?
Políticas de Substituição de Páginas:
• ÓTIMO
• LFU
- FBR
• FIFO
- Clock
• MFU
• LRU
- LRU-K e 2Q
• VMIN
• MRU
• WS
• NRU
• PFF
Working Set:
• Conjunto das páginas requeridas para o
processamento de um programa num certo intervalo
de tempo.
Localidade de Referências:
• Concentração dos acessos realizados à memória em
determinadas regiões do espaço de endereçamento
utilizado pelo programa;
• Temporal e/ou espacial.
Objetivo do Trabalho:
• Buscar novos meios para melhorar o desempenho do
sistema de memória, através de:
- Estudo e caracterização de localidade de referências;
- Pesquisa de algoritmos adaptativos para substituição de
páginas (algoritmos que adaptam o seu comportamento
em uma execução).
Análise da Localidade de Programas:
• Padrões de acesso à memória;
• Localidades de referência temporais e/ou espaciais;
• Distribuição dos acessos no espaço de endereçamento;
• Freqüência de reutilização das páginas;
• Interação entre páginas (acessos entrelaçados);
• Entre outros dados...
Conceitos:
• Recência de Reutilização:
- Corresponde à recência de reutilização de uma
página de memória em relação à reutilização das
demais páginas residentes;
- É determinada empiricamente pelo número de
páginas distintas referenciadas entre dois acessos
consecutivos a uma mesma página (IRR / InterReference Recency).
• Distância (ou IRG / Inter-Reference Gap):
- Indica o número de acessos ocorridos (tempo virtual)
entre duas referências consecutivas a uma mesma
página.
Exemplo:
• Recência:
IRR = 4
IRR = 4
A
B
C
B
D
C
E
C
D
E
C
A
D
E
B
C
A
B
E
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
• Distância (ou IRG / Inter-Reference Gap):
IRG = 10
IRG = 4
A
B
C
B
D
C
E
C
D
E
C
A
D
E
B
C
A
B
E
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Recência no Modelo LRU:
• Exemplo:
IRR = 4
IRR = 4
A
B
C
B
D
C
E
C
D
E
C
A
D
E
B
C
A
B
E
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
• Fila LRU:
C
E
D
B
A
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Ferramentas para Análise de Localidade:
• TelaTrace: Gráficos de acesso bidimensionais.
• Mapa3D: Gráficos de acesso tridimensionais.
• Trace Explorer:
- Gráficos de recência dos acessos;
- Gráficos de variação da recência dos acessos;
- Histogramas de recência dos acessos;
- Gráficos de distância entre acessos;
- Relatórios estatísticos sobre os traces analisados.
TelaTrace – Mapa de Acessos:
Mapa3D – Mapa de Acessos:
Mapa3D – Mapa de Acessos:
TraceExplorer – Recência dos Acessos:
TraceExplorer – Variação da Recência:
TraceExplorer – Distância entre Acessos:
Algoritmos Adaptativos de Substituição:
• Adaptam seu comportamento em uma execução;
• Atuam de acordo com as características de acesso à
memória detectadas;
• Podem:
• Modificar o tamanho da memória utilizada;
• Modificar o critério de substituição de páginas;
• Modificar os parâmetros associados ao critério vigente;
• Modificar as suas próprias regras adaptativas.
Propostas Adaptativas:
• SEQ e EELRU:
- Modelo LRU;
- Identificação de acessos seqüenciais.
• LIRS: Previsão de acesso baseada na última reutilização.
• DEAR, AFC e UBM: Procuram reconhecer padrões.
• LRFU: Considera a recência e a freqüência dos acessos.
• ARC: Versão adaptativa do algoritmo 2Q.
Proposta LRU-WAR (Working Area Restriction):
• Como o SEQ e o EELRU procura detectar padrões
de acesso seqüenciais;
• Utiliza LRU ou MRU-n;
• Princípio: Analisar a proporção de faltas de página
em relação ao número máximo de páginas
referenciadas entre cada falta;
• Verifica a reutilização das páginas carregadas no
modelo LRU e compara com o número de faltas de
página.
Área de Trabalho (Working Area):
• Porção inicial da fila LRU em que todas as páginas
referenciadas entre duas faltas consecutivas se
encontravam no momento do respectivo acesso.
Posições onde páginas foram acessadas desde a última falta de página
Área de Trabalho (Working Area )
Página MRU
Página LRU
...
W
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20
Fila LRU representando a memória principal
Regiões da Fila LRU:
• Parâmetro L=MIN[50,M/2]: delimita a região seqüencial;
• Parâmetro C=5: delimita a região protegida.
Região Protegida
L
Região Seqüencial
Região LRU
C
1
2
3
Fila LRU
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20
M = 20
Tendência Seqüencial:
• Área de trabalho pequena o suficiente para indicar
baixa reutilização de páginas.
Região Protegida
L
Região Seqüencial
Região LRU
C
1
2
3
Fila LRU
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20
M = 20
Operação Seqüencial:
• Área de trabalho pequena o suficiente para indicar
baixa reutilização de páginas;
• Número de faltas de página – desde o início da
tendência – maior que o tamanho da área de trabalho.
Região Protegida
L
Região Seqüencial
Região LRU
C
1
2
3
Fila LRU
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20
M = 20
Estados de Execução Previstos:
Estado de execução
Tendência Original (LRU)
Tendência Seqüencial
Operação Seqüencial
ALGORITMO LRU-WAR
Tamanho da Área de
Critério de
Trabalho
Substituição
LRU
Maior que L
LRU
Menor ou igual a L
MRU-n
Menor ou igual a L e estável
Ponto de Substituição
(Posição na Fila LRU)
M
M
W+1
Região Protegida
L
Região Seqüencial
Região LRU
C
1
2
3
Fila LRU
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20
M = 20
Pontos de Substituição do LRU-WAR:
Exemplo de falta de página
em operação seqüencial
L
Área de Trabalho
Ponto de Substituição
W +1
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20
Fila LRU
M = 20
Exemplo de falta de página
em tendência original (LRU)
L
Área de Trabalho
Ponto de Substituição
W
1
2
3
Fila LRU
4
5
6
7
8
9
LRU
10 11 12 13 14 15 16 17 18 19 20
M = 20
Exemplo de Simulação:
• Identificação e atualização dinâmica da área de
trabalho:
A
U
V
X
Y
Z
B
X
C
E
D
U
E
V
Y
W
A
U
C
E
V
1
2
3
4
5
Fila LRU
W
D
A
B
C
F
G
D
A
U
B
F
G
H
D
A
U
F
G
H
D
A
FI
G
H
D
F
JI
G
K
H
F
JI
G
K
H
L
JI
M
K
H
L
JI
M
N
K
L
JI
M
O
N
K
L
J
M
O
N
K
P
L
M
Q
O
N
P
L
M
Q
O
R
N
P
Q
O
R
N
S
P
Q
O
R
S
P
T
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FALTA 5
1
2
3
4
M = 20
Mecanismo para Detecção de Erros:
• Tempo de carência antes do início de uma operação
seqüencial.
Área de Trabalho
Páginas não substituídas pela
L
Ponto de Substituição
op. seqüencial devido ao
tempo de carência
W +1 +2 +3 +4 +5 +6
1
2
3
Fila LRU
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20
M = 20
Versões do Algoritmo LRU-WAR:
• Offline:
- Completa, mas teórica;
- Atualiza a fila LRU após cada acesso à memória.
• Online:
- Aproximada, mas factível;
- Atualiza a fila LRU somente após uma falta de página.
Metodologia para Avaliação de Desempenho:
Programa
executável
resultados
Gerador
de traces
Simulador
arquivo de traces
• Exemplo simplificado de arquivo de traces:
desempenho
dos algoritmos
Simulações Realizadas:
• 1669 simulações com 26 programas, representados por
traces que compõem 3 pacotes: Etch, Lirs e VMTrace.
Pacote
ETCH
TOTAL
Acroread
CC1
Compress
Go
Netscape
Perl
Photoshp
Powerpnt
Vortex
Winword
Número de
Simulações
628
95
71
78
52
51
81
60
49
42
49
Pacote
LIRS
TOTAL
2_Pools
CPP
CS
GLI
Multi1
Multi2
Multi3
PS
Sprite
Número de
Simulações
514
99
24
28
50
52
56
74
61
70
Pacote
VMTRACE
TOTAL
Espresso
GCC
Gnuplot
Grobner
GS
Lindsay
P2C
Número de
Simulações
527
66
90
77
56
110
103
25
Lirs
Resultados / Pacote Lirs:
ALGORITMO LRU-WAR: Diferença percentual no número de faltas de
página em relação ao algoritmo LRU
Pior Caso
Melhor Caso
Arquivos de
Média
Diferença % (Mem.) Diferença % (Mem.)
Trace
-5,29%
6,95%
-75,57%
Análise Geral
0,00%
(100)
0,03%
(. . .)
0,00%
2_Pools
-2,88%
(750)
0,24%
(50)
-33,89%
CPP
-36,40%
(1400)
0,00%
(1300)
-75,57%
CS
-20,24%
(. . .)
0,00%
(1100)
-46,56%
GLI
-5,25%
(. . .)
0,00%
(1600)
-39,13%
Multi1
-2,28%
(1300)
0,70%
(2300)
-13,41%
Multi2
-1,66%
(4700)
0,57%
(3500)
-8,88%
Multi3
-20,49%
(. . .)
0,00%
(250)
-44,62%
PS
3,31%
(2300)
6,95%
(300)
-2,46%
Sprite
-9,54%
6,95%
-75,57%
Pacote Lirs
Padrão de Acessos à Memória / Postgres:
Gráfico de Desempenho / Postgres:
PS.Lirs
10000
Ótimo
LRU
EELRU
8000
LIRS
LRU-WAR
7000
LRU-WAR Online
6000
5000
4000
10
50
11
50
12
50
13
50
14
50
15
50
16
50
17
50
18
50
19
50
20
50
95
0
85
0
75
0
65
0
55
0
45
0
35
0
25
0
15
0
3000
50
Número de faltas de página
9000
Tamanho da memória
LRU-WAR em Relação ao LRU / Postgres:
Diferenças Percentuais de Desempenho - PS.Lirs
4%
0%
-8%
-12%
-16%
-20%
-24%
-28%
-32%
-36%
-40%
LRU
-44%
LRU-WAR
Tamanho da memória
20
50
18
50
16
50
14
50
12
50
10
50
85
0
65
0
45
0
25
0
-48%
50
Diferença % (faltas de página)
-4%
Etch
Resultados / Pacote Etch:
ALGORITMO LRU-WAR: Diferença percentual no número de faltas de
página em relação ao algoritmo LRU
Melhor Caso
Pior Caso
Arquivos de
Média
Diferença % (Mem.) Diferença % (Mem.)
Trace
Análise Geral
-75,57%
6,95%
-5,29%
Acroread
-0,09%
(180)
0,51%
(400)
0,11%
CC1
-0,76%
(270)
1,83%
(550)
0,28%
Compress
-75,11%
(270)
0,02%
(15)
-10,34%
Go
0,00%
(. . .)
0,02%
(15)
0,00%
Netscape
-0,12%
(140)
0,74%
(300)
0,08%
Perl
-1,57%
(100)
6,29%
(4200)
2,03%
Photoshp
-1,20%
(150)
5,14%
(2600)
3,03%
Powerpnt
-0,01%
(20)
0,14%
(100)
0,01%
Vortex
-4,33%
(3100)
0,49%
(1600)
-0,72%
Winword
-0,01%
(140)
0,25%
(540)
0,04%
Pacote Etch
-75,11%
6,29%
-0,55%
Padrão de Acessos à Memória / Vortex:
Gráfico de Desempenho / Vortex:
VORTEX.Etch
29000
Ótimo
EELRU
24000
LIRS
LRU-WAR
19000
LRU-WAR Online
14000
9000
4000
15
00
16
00
17
00
18
00
19
00
20
00
21
00
22
00
23
00
24
00
25
00
26
00
27
00
28
00
29
00
30
00
31
00
32
00
33
00
34
00
35
00
36
00
37
00
Número de faltas de página
LRU
Tamanho da memória
LRU-WAR em Relação ao LRU / Vortex:
Diferenças Percentuais de Desempenho - VORTEX.Etch
0%
-2%
-4%
LRU
LRU-WAR
Tamanho da memória
35
00
31
00
27
00
23
00
19
00
-6%
15
00
Diferença % (faltas de página)
2%
VMTrace
Resultados / Pacote VMTrace:
ALGORITMO LRU-WAR: Diferença percentual no número de faltas de
página em relação ao algoritmo LRU
Pior Caso
Melhor Caso
Arquivos de
Média
Diferença % (Mem.) Diferença % (Mem.)
Trace
-5,29%
6,95%
-75,57%
Análise Geral
-0,28%
(27)
0,02%
(12)
-7,94%
Espresso
-1,24%
(245)
0,18%
(185)
-9,66%
GCC
-33,38%
(100)
-0,53%
(7700)
-66,22%
Gnuplot
-3,78%
(13)
1,02%
(28)
-11,75%
Grobner
1,34%
(300)
5,09%
(155)
-5,61%
GS
-8,60%
(130)
1,74%
(. . .)
-17,38%
Lindsay
-0,14%
(75)
0,04%
(50)
-0,72%
P2C
-6,58%
5,09%
-66,22%
Pacote VMTrace
Padrão de Acessos à Memória / GhostScript:
Gráfico de Desempenho / GhostScript:
GS.VMTrace
5000
Ótimo
4500
EELRU
4000
LIRS
3500
LRU-WAR
LRU-WAR Online
3000
2500
2000
1500
1000
500
14
5
16
0
17
5
19
0
20
5
22
0
23
5
25
0
26
5
28
0
29
5
31
0
32
5
34
0
35
5
37
0
38
5
40
0
41
5
43
0
44
5
46
0
47
5
49
0
50
5
52
0
Número de faltas de página
LRU
Tamanho da memória
LRU-WAR em Relação ao LRU / GhostScript:
Diferenças Percentuais de Desempenho - GS.VMTrace
3%
0%
-3%
LRU
LRU-WAR
Tamanho da memória
50
5
48
5
46
5
44
5
42
5
40
5
38
5
36
5
34
5
32
5
30
5
28
5
26
5
24
5
22
5
20
5
18
5
16
5
-6%
14
5
Diferença % (faltas de página)
6%
Grau de Otimalidade das Substituições:
Grau
Grau
de de
Otimalidade
Otimalidade
dasdas
Substituições
Substituições
de de
Página
Página
LRU-WAR
LRU
(GROBNER.VMTrace - memória de tamanho 28)
5000
4000
3000
2000
1000
Índice Decrescente de Otim alidade
27
25
23
21
19
17
15
13
11
9
7
5
3
0
1
Qtd. de Páginas Substituídas
6000
Pontos Ótimos de Substituição:
Pontos Ótimos de Substituição:
4000
3500
3000
2500
2000
1500
1000
500
Posição na Fila LRU
27
25
23
21
19
17
15
13
11
9
7
5
3
0
1
Quantidade de Pontos Ótimos
Posição na Fila LRU dos Pontos Ótim os de Substituição
(Sim ulação LRU - GROBNER.VMTrace - m em ória de tam anho 28)
Conclusões:
• É possível reconhecer certos padrões de acesso à
memória dinamicamente, somente observando as
posições na fila LRU das páginas referenciadas;
• O algoritmo LRU-WAR é uma proposta inédita e viável;
• O algoritmo cumpre sua meta: é uma variação do LRU
que alcança excelentes desempenhos quando padrões
de acesso seqüenciais predominam em um programa;
• Por outro lado, o algoritmo se mostra confiável: seu
desempenho não foi significativamente pior que o do
LRU original em nenhum caso analisado.
Principais Contribuições:
• Descrição compilada dos principais algoritmos de
substituição de páginas, estáticos e adaptativos;
• Desenvolvimento de ferramentas para análise de
localidade e caracterização de programas: TelaTrace,
Mapa3D e Trace Explorer;
• Apresentação de um novo algoritmo adaptativo, o LRUWAR, nas versões online e offline;
• Avaliação de desempenho das principais propostas
adaptativas, com a criação de simuladores de sistemas
de memória e análise sobre os resultados obtidos.
Trabalhos Futuros:
• Aperfeiçoamento do algoritmo LRU-WAR, utilizando
técnicas de IA e/ou diretivas inseridas pelo compilador;
• Tentativa de se chegar a um “meta-algoritmo”;
• Gerência do particionamento dinâmico da memória
entre os processos;
• Implementação prática do novo sistema de
gerenciamento de memória em um SO (Linux);
• Estudos complementares (locality surfaces,
experimentação com outros traces, etc.).
Download

defesa - Hugo Henrique Cassettari