8. Rendimiento de Memoria 8.1 Memoria y Caché El objetivo de la

Anuncio
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
8. Rendimiento de Memoria
8.1 Memoria y Caché
El objetivo de la memoria Caché es re-utilizar
información ya usada anteriormente, almacenándola
en una memoria más veloz que la memoria del
sistema. Esta memoria más rápida es llamada Caché.
El Controlador del Caché mantiene los identificadores
del contenido del Cache (direcciones de memoria) y
los administra siguiendo una estrategia de remplazo
LRU (Last Recently Used).
De esta forma, cuando el contenido de una dirección
de memoria es solicitado por la CPU y no está en el
Caché, éste es recuperado de memoria y almacenado
en el Caché, para que esté disponible para una
posible nueva referencia. Si el Caché estaba lleno al
momento de almacenar el nuevo dato, se elige el dato
más antiguo que no ha sido utilizado para descartarlo.
Es posible contar con dos (o más) niveles de Caché,
siendo los principales el Caché primario (L1) y
secundario (L2).
Las siguientes figuras presentan la estructura genérica
de un Caché de primer nivel no integrado y de un
caché de segundo nivel no integrado con un cache de
primer nivel integrado.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-1
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
R
80386
A
M
Control
Caché
80486
PENTIUM
Caché
CC
L1
SRAM
DATA 64 bits
R
A
M
Control
Caché
L2
SRAM
La efectividad de un Caché de procesador en relación
a su tamaño se presenta en la siguiente tabla:
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-2
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Tamaño
Aciertos
1Kb
41%
8 Kb
73%
16Kb
81%
32Kb
86%
64Kb
88%
128Kb
89%
En esta tabla se observa que el incremento en la
efectividad del Caché no es lineal con un incremento
en su tamaño.
Aciertos en Pool de Buffers
100%
80%
60%
40%
20%
0%
0 Kb
1Kb
8 Kb
16Kb
32Kb
64Kb
128Kb
Tamaño del Buffer
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-3
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Cachés de mayor tamaño producen un incremento
marginal en la tasa de aciertos. En general se opta (en
el diseño del hardware) por separar los Cachés más
grandes en Cachés de Instrucciones y Datos.
8.2 Memoria Principal
La memoria sólo es un problema cuando los procesos,
más el Kernel, requieren en conjunto más memoria de
la disponible.
Los sistemas operativos intentan resolver este
problema simulando más memoria mediante
paginación y swap.
La implementación de la memoria virtual varia entre las
diferentes versiones de Unix, permaneciendo el
esquema de segmentación con paginación invariable.
• Segmentos con 3 regiones
• Texto (compartido)
• Segmentos de datos
•
•
Heap
Stack
• U-área
•
•
•
•
© MARIO DROGUETT C.
Registros
Descriptores de archivos abiertos
Registro de accounting
Stack del kernel (proceso)
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-4
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Los segmentos de texto mantienen la localización del
segmento en memoria secundaria, su localización en
memoria principal (si esta residente) y un contador del
número de procesos que comparten el segmento.
El swap se realiza por segmentos completos (texto,
datos o u-área).
Los segmentos están formados por páginas. Unix
utiliza en general paginación por demanda.
Se asignan direcciones al segmento de texto en
memoria secundaria, al intentar una referencia al
código ocurre un page fault y la página es llevada
a memoria.
El esquema global es el siguiente:
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-5
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
El segmento (texto, data o u-area) tiene páginas
asociadas, a los cuales se les asocia un v-node y un
offset dentro de él.
• Si la página está en memoria es referenciada.
• Si no esta, se puede acceder a ella a través del vnode y el offset.
• Si se debe paginar, se actualiza a través del vnode.
• El o los swap devices tienen asociado un v-node
Con este esquema se pueden tener archivos
mapeados en memoria, la tabla de archivos abiertos
apunta a v-nodes, a los cuales se asocian páginas
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-6
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
(que pertenecen al proceso) que actúan como buffers
del archivo.
Estas páginas de buffers no son “distinguidas” por el
pager, luego pueden ser page-in, page-out, al leer del
archivo, escribir en él abrirlo o cerrarlo.
Para implementar shared memory simplemente se
comparte el page map del segmento compartido.
Ya que todo el I/O es realizado a través del file
mapping descrito, el acceso a disco no ocurre hasta
que ocurre un faullt en un espacio de direcciones que
no esta mapped en ese momento.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-7
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
El algoritmo para resolver el fault es el siguiente:
Getpage (unode, offset) {
Ubicar y asignar los bloques
necesarios
check si la página ya existe
if(existe)
lock and return page
else
Asignar una nueva página
Asignar identidad a la página
I/O hacia la nueva página.
}
Bajo el esquema descrito, el buffer cache es ahora
utilizado para acceder a los meta-datos de los
filesystem. ( i-nodes, superblock, bloques indirectos,
grupos de cilindros, etc.).
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-8
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
8.3 Estrategias generales de paginación y swap.
• En general, los S.O. modernos utilizan paginación y
swap para administrar su memoria.
• Dado que el swap tiene pésima fama en términos
del rendimiento, se distinguen 2 tipos de swap.
− De “limpieza”
− Desesperado
El primero se realiza sobre procesos idle para
prevenir que interfieran con los procesos activos.
El segundo ocurre cuando la escasés de memoria
es extrema. Incluso los procesos activos pueden
ser swapped out. El pagin intentará evitar que
ocurra este swap desesperado.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-9
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
En BDS y SVR4 el paginador opera de manera similar.
El daemon de paginación (pageout o vhand) es
despertado cuando la memoria libre baja de lotsfree,
siguiendo un esquema de reloj de 2 manecillas.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-10
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Si al paginador examina más de desscan páginas o la
memoria disponible pasa de lostsfree el paginador
duerme por (1/4 de segundo en SVR4) VHANDR.
Si con la paginación la memoria baja de DESFREE
(GPGSLO) se inicia el swap de desesperación, el cual
se detiene cuando la memoria sube de DESFREE
(GPGSLO).
* en SVR4 al swapper es sched
8.4 Medición de paginación y swap
Demand Pagin => page-in no es (necesariamente)
un problema de desempeño.
Es importante mantener en mente que si ocurre swapout (“notable”) con una paginación “importante” se
puede estar frente a swap desesperado.
La forma de medir la paginación en Windows NT ya
fue presentada en el capítulo 6, por ejemplo utilizando
Performance Monitor:
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-11
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
En unix BSD se tiene vmstat.
% vwstat 5 20
procs memory
ppage
r b w auw free
pi po ...
En System V tenemos sar
% sar -r
00:10:00 freemen freeswp
...
% sar -w
00:10:00 swpin/s bswin/s swpot/s
bswot/s pswch/s
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-12
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
...
% sar -p
00:10:00 rflt/s pflt/s pgfil/s rclm/s
...
% sar -g
00:10:00 pgout/s ppgout/s pgfree/s
pgscan/s %s5ipf
...
8.5 Ahorro de memoria
Una vez que el sistema llega a una escasés extrema
de memoria (sin problemas graves de configuración) la
solución más simple es comprar más memoria.
En Windows NT es posible ahorrar memoria y
recursos de sistema utilizando bajas resolución y
número de colores para la pantalla:
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-13
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
En general, los problemas, de configuración se
relacionan con las áreas de swap, memoria
compartida y buffers.
Si la escasez de memoria es “relativamente” pequeña.
Podemos tratar de reducir el uso de memoria del
kernel y las aplicaciones. Según el S.O. el uso de
segmentos compartidos, librerías compartidas, sticky
sit, etc.
8.5.1 Segmentos de texto compartidos.
El uso de STC reduce los requerimientos de memoria
de comandos o aplicaciones que se ejecutan
constantemente, al mantener sólo una copia del
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-14
Evaluación y Afinamiento de Sistemas Computacionales
código la cual
aplicaciones.
es
compartida
Apuntes de Clases
por
todas
las
El default del linker de unix (ld) es segmentos
compartidos (-n).
Si existen aplicaciones que utilicen la opción –N que
explicitamente hace que el segmento de texto no sea
compartido, se esta estresando innecesariamente la
memoria del sistema.
8.5.2 Sticky bit
El efecto principal del SB es hacer que el segmento
de texto de una aplicación sea copiado al área de
swap, y permanezca allí, aún cuando la aplicación
termine.
El efecto principal del SB es reducir el tiempo de
partida de las aplicaciones futuras ya que:
• No se copian al swap space nuevamente
• En el SS no estan fragmentadas
El SB se recomienda para programas pequeños (para
no malgastar SS) con una tasa de ejecución alta.
En los sistemas con shared text y demand pagin el SB
es obsoleto... pero:
• Si no hay demand pagin su utilidad es muy alta.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-15
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
• Algunos sistemas con demand pagin de todas
maneras copian el shard text en el SS.
• El SB se define mediante chmod
% chmod 1555 prog.
... y aplicado sobre directorios tiene otro significado.
8.5.3 Librerías compartidas
Las versiones modernas de Unix soportan shared
libraries. Windows NT soporta el mismo concepto a
través de las DLL.
En lugar de incluir el código de la biblioteca en el
ejecutable, se asignan direcciones de las libs en el
espacio de direccionamiento del proceso.
El código de la biblioteca puede ser accedido por
múltiples aplicaciones, se usa menos memoria, los
ejecutables son más pequeños... pero.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-16
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
• En general son más lentas, hasta un 25% al
ejecutar código de la biblioteca.
• Dependiendo de la implementación, el ejecutable
puede ser más grande.
8.5.4 Localidad de referencia en aplicaciones.
Un análisis de la LR en el momento de diseño e
implementación de una aplicación puede permitir.
• Un mejor uso del cache del sistema.
• Una paginación más eficiente.
8.5.5 Uso eficiente de la memoria del proceso.
• El tamaño del proceso y sus segmentos es
asignado en la partida del proceso, luego al
optimizar el uso de memoria y su administración.
• Uso de estructuras de datos fuera de memoria
(con localidad)
• Administración de la memoria del proceso.
OJO: No se libera hasta que termina
• Uso de free lists
• Minimizar los mallocs
• Asignar memoria en bloques
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-17
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
• Tamaño de los segmentos y la memoria necesaria
• El costo de un segmento mayor es muy alto.
8.5.6 Definición de límites
• Hard y Soft
• En BSD y SVR4
• Define limites para los segmentos de stack, datos y
working set de los procesos. Se puede definir en
/etc/cshrc
% limit [-h] stacksize size
//datasize
//memory_use
Algunas versiones permiten controlar
segundos de CPU, tamaño del core-file,etc.
también
El limite de stack envía un “segmentation violation”
SIGSEGV al proceso
El límite de datos no le permite pedir más memoria.
El límite de working set tranforma al proceso en
preferible para el paginador.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-18
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Los procesos pueden intentar subir su límite soft (<
hard).
OJO que un sistema que no puede correr
procesos grandes no es una buena idea... sobre
todo si no realiza su trabajo.
La mayoría de los SABDR soportan definición de
límites para sus procesos internos y de usuarios.
8.5.7 El tamaño de los buffers
La utilidad de los buffers es indiscutible, pero
consumen memoria que podrían usar los procesos.
Versiones anteriores a SVR4 utilizan un área de
buffers estática, las SUNOS 4.0 y de SVR4 es
dinámica, con un límite para los buffers de metadatos.
En sistemas con áreas de buffer estáticas el tamaño
de los buffers afecta el rendimiento de memoria virtual
y el del I/O a disco.
Si el tamaño de los buffers no está definido en los
archivos de configuración de sistema (stune NBUF),
es determinado en la partida del sistema. Su definición
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-19
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
aparece en general en la partida del sistema y en
/var/adm/messages.
El tamaño del buffer cache debe ser ajustado con
conjunto con el I/O pero...
• Si la carga de trabajo es CPU-Bound el BC puede
ser reducido hasta un 5% de la memoria disponible.
• Si usa “X” reduzca el cache al máximo.
• En general, al existir conflicto con I/O favorezca la
memoria desde el punto de los buffers (menos buff)
En Windows NT podemos analizar el caché mediante
Performance Monitor o el Task Manager:
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-20
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Para analizar la efectividad de los buffers en UNIX se
usa:
sar –b,
en BSD ...
El tamaño de los BC se cambia re-construyendo el
kernel.
En BSD hay que cuidar los network buffs (mbuf)
mediante netstat –m
Ojo que estos no son liberados
8.5.8 Las tablas del kernel y la memoria
“Smal is beutifull” ...
siempre que no sea demasiado...
Se puede ganar 4 o 5 kb.
Para chequear se usa:
BSD
%pstat -T
SV
%sar –u
8.5.9 Areas de Swap.
El area (las areas) de swap son utilizadas por el
sistema de memoria virtual para almacenar las
páginas “robadas” a los procesos en ejecución.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-21
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Dado que el S.O. no conoce de antemano los
requerimientos de memoria de las aplicaciones, éste
reserva suficiente cantidad de swap space para
almacenar la imagen entera del proceso. La razón
principal es evitar dead Locks.
En sistemas BSD es poco lo que se puede hacer para
controlar el tamaño del area de swap. Para cada
disco, la partición de swap (si se usa) es la partición b
(particionamiento estándar).
Así, existen dos formas de administrar el área de
swap.
• Comprar más discos y habilitar swap en ellos.
• Habilitar swap en los discos que no lo hacen.
Para habilitar swap en una partición se debe recrear el
kernel (no es necesario un fs en la partición de swap).
El archivo de configuración del Kernel para hacer
swap en /dev/dsk2b es:
Config unix swap on disk 0b and disk 2b
/efc/fstab debe reflejar la nueva organización
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-22
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
/dev/disk2b swap swap rw 00 #
NFS
/etc/rc -> /etc/swapon -a.
En SV existe mayor flexibilidad para particionar discos
e instalar en ellos áreas de swap.
Una vez particionado el disco, se puede iniciar swap
en él mediante el comando swap. Este comando debe
ser incluido en algunos de los archivos de /etc/rc2.d
para activar definitivamente el área de swap.
swap -a
/dev/dsk/1s2 0 <size -512
byte -blocks>
El tamaño de la partición puede ser obtenido del
archivo /etc/partitions.
Algunas versiones de Unix, y en especial SVR4
soportan “filesystem pagin”, lo cual provee una
configuración y administración flexible del área de
swap.
La idea es utilizar archivos regulares para paginación y
swap. Estos archivos pueden ser ubicados en
cualquier lugar del sistema de archivos... y no se
necesita reconfigurar el kernel.
El trade-off esta por el lado de la eficiencia.
− Fragmentación
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-23
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
En sistemas tipo BSD
# mkfile 20m /u/swapfile
# /usr/etc/swapon /u/swapfile
En SV el archivo de swap puede ser creado por
cualquier medio, agregar al archivo, el comando es:
# swap -a filename
El tamaño del área de swap total del sistema se
estima en 3 a 5 veces el tamaño de la memoria fisica.
Para analizar la capacidad disponible:
BSD
% pstat -s
7201k used 140130k free
%/usr/etc/pstat -s
4312k alloc + 2255 res = 6567 used,
230405 av
SV
%/etc/swap -l
Path
© MARIO DROGUETT C.
dev
ESCUELA DE INGENIERÍA
lo blocks
free
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-24
Evaluación y Afinamiento de Sistemas Computacionales
/dev/dsk/0s2 0,2 0
Apuntes de Clases
29984 81712
% /etc/swap -s
0.ok alloc + 15.2m res= 15,2 mused,
86m av.
% sar -r
IRIX apagado 5.3
10:00:00
freemen
freeswap
10:20:00
9979
81712
En general se recomienda que si el área de swap esta
más de un 50% usada regularmente, es necesario
aumentar su tamaño.
Adicionalmente, para un uso óptimo del área de swap
se recomienda su distribución a lo largo del sistema
de archivos.
El S.O. intentará balancear el uso de las diferentes
áreas de swap para maximizar el paralelismo del
sistema de discos.
...Ahora, no olvidar al controlador de disco... no todos
los controladores soportan operaciones simultáneas
sobre diferentes discos, en estos casos es mejor un
área de swap por controlador.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-25
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
• NOTA: En términos del rendimiento, no se
recomienda implementar espacios de swap a
través de NFS o RFS.
Otra consideración importante, al distribuir áreas de
swap, es la utilización de los discos.
Utilizando sar-d, iostat o vmstat podemos analizar que
discos tienen menor utilización, lo cual los hace
candidatos a contener áreas de swap.
Las mismas consideraciones se aplican a Windows
NT, siendo necesario notar que el área de paginación
se define sobre un sistema de archivos y no sobre un
“raw device”.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-26
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Es posible distribuir la paginación sobre los discos del
sistema en Windows NT utilizando el administrador de
configuración de sistema del panel de control.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-27
Evaluación y Afinamiento de Sistemas Computacionales
Apuntes de Clases
Windows NT define el área de paginación como un
archivo en el disco, al cual se asigna un tamaño inicial
el cual puede variar dinámicamente hasta un máximo
definido (y se considera que el espacio esta reservado
para el sistema).
Se recomienda para Windows NT un área de
paginación total mayor a 3 veces la memoria física del
sistema.
© MARIO DROGUETT C.
ESCUELA DE INGENIERÍA
P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE
8-28
Descargar