8. rendimiento de memoria 8.1 memoria y cachécgutierr/iic3542_c8.pdf8. rendimiento de memoria 8.1...

28
Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases © MARIO DROGUETT C. ESCUELA DE I NGENIERÍA P ONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-1 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.

Upload: others

Post on 26-Jan-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-1

    8. Rendimiento de Memoria

    8.1 Memoria y Caché

    El objetivo de la memoria Caché es re-utilizarinformación ya usada anteriormente, almacenándolaen una memoria más veloz que la memoria delsistema. Esta memoria más rápida es llamada Caché.

    El Controlador del Caché mantiene los identificadoresdel contenido del Cache (direcciones de memoria) ylos administra siguiendo una estrategia de remplazoLRU (Last Recently Used).

    De esta forma, cuando el contenido de una direcciónde memoria es solicitado por la CPU y no está en elCaché, éste es recuperado de memoria y almacenadoen el Caché, para que esté disponible para unaposible nueva referencia. Si el Caché estaba lleno almomento de almacenar el nuevo dato, se elige el datomá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) ysecundario (L2).

    Las siguientes figuras presentan la estructura genéricade un Caché de primer nivel no integrado y de uncaché de segundo nivel no integrado con un cache deprimer nivel integrado.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-2

    80386

    ControlCaché

    SRAM

    R

    A

    M

    80486PENTIUM

    ControlCaché L2

    SRAM

    R

    A

    M

    CCCaché

    L1 DATA 64 bits

    La efectividad de un Caché de procesador en relacióna su tamaño se presenta en la siguiente tabla:

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-3

    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 laefectividad del Caché no es lineal con un incrementoen su tamaño.

    Aciertos en Pool de Buffers

    0%

    20%

    40%

    60%

    80%

    100%

    0 Kb 1Kb 8 Kb 16Kb 32Kb 64Kb 128Kb

    Tamaño del Buffer

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-4

    Cachés de mayor tamaño producen un incrementomarginal en la tasa de aciertos. En general se opta (enel diseño del hardware) por separar los Cachés másgrandes 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 dela disponible.

    Los sistemas operativos intentan resolver esteproblema simulando más memoria mediantepaginación y swap.

    La implementación de la memoria virtual varia entre lasdiferentes versiones de Unix, permaneciendo elesquema de segmentación con paginación invariable.

    • Segmentos con 3 regiones

    • Texto (compartido)

    • Segmentos de datos• Heap• Stack

    • U-área• Registros• Descriptores de archivos abiertos• Registro de accounting• Stack del kernel (proceso)

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-5

    Los segmentos de texto mantienen la localización delsegmento en memoria secundaria, su localización enmemoria principal (si esta residente) y un contador delnú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. Unixutiliza en general paginación por demanda.

    Se asignan direcciones al segmento de texto enmemoria secundaria, al intentar una referencia alcódigo ocurre un page fault y la página es llevadaa memoria.

    El esquema global es el siguiente:

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-6

    El segmento (texto, data o u-area) tiene páginasasociadas, a los cuales se les asocia un v-node y unoffset dentro de él.

    • Si la página está en memoria es referenciada.

    • Si no esta, se puede acceder a ella a través del v-node y el offset.

    • Si se debe paginar, se actualiza a través del v-node.

    • El o los swap devices tienen asociado un v-node

    Con este esquema se pueden tener archivosmapeados en memoria, la tabla de archivos abiertosapunta a v-nodes, a los cuales se asocian páginas

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-7

    (que pertenecen al proceso) que actúan como buffersdel archivo.

    Estas páginas de buffers no son “distinguidas” por elpager, luego pueden ser page-in, page-out, al leer delarchivo, escribir en él abrirlo o cerrarlo.

    Para implementar shared memory simplemente secomparte el page map del segmento compartido.

    Ya que todo el I/O es realizado a través del filemapping descrito, el acceso a disco no ocurre hastaque ocurre un faullt en un espacio de direcciones queno esta mapped en ese momento.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-8

    El algoritmo para resolver el fault es el siguiente:

    Getpage (unode, offset) {

    Ubicar y asignar los bloquesnecesarios

    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 ahorautilizado para acceder a los meta-datos de losfilesystem. ( i-nodes, superblock, bloques indirectos,grupos de cilindros, etc.).

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-9

    8.3 Estrategias generales de paginación y swap.

    • En general, los S.O. modernos utilizan paginación yswap para administrar su memoria.

    • Dado que el swap tiene pésima fama en términosdel rendimiento, se distinguen 2 tipos de swap.

    − De “limpieza”

    − Desesperado

    El primero se realiza sobre procesos idle paraprevenir que interfieran con los procesos activos.

    El segundo ocurre cuando la escasés de memoriaes extrema. Incluso los procesos activos puedenser swapped out. El pagin intentará evitar queocurra este swap desesperado.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-10

    En BDS y SVR4 el paginador opera de manera similar.

    El daemon de paginación (pageout o vhand) esdespertado cuando la memoria libre baja de lotsfree,siguiendo un esquema de reloj de 2 manecillas.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-11

    Si al paginador examina más de desscan páginas o lamemoria disponible pasa de lostsfree el paginadorduerme 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 cualse 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 swap-out (“notable”) con una paginación “importante” sepuede estar frente a swap desesperado.

    La forma de medir la paginación en Windows NT yafue presentada en el capítulo 6, por ejemplo utilizandoPerformance Monitor:

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-12

    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/sbswot/s pswch/s

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-13

    ...

    % sar -p

    00:10:00 rflt/s pflt/s pgfil/s rclm/s

    ...

    % sar -g

    00:10:00 pgout/s ppgout/s pgfree/spgscan/s %s5ipf

    ...

    8.5 Ahorro de memoria

    Una vez que el sistema llega a una escasés extremade memoria (sin problemas graves de configuración) lasolución más simple es comprar más memoria.

    En Windows NT es posible ahorrar memoria yrecursos de sistema utilizando bajas resolución ynúmero de colores para la pantalla:

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-14

    En general, los problemas, de configuración serelacionan con las áreas de swap, memoriacompartida y buffers.

    Si la escasez de memoria es “relativamente” pequeña.Podemos tratar de reducir el uso de memoria delkernel y las aplicaciones. Según el S.O. el uso desegmentos compartidos, librerías compartidas, stickysit, etc.

    8.5.1 Segmentos de texto compartidos.

    El uso de STC reduce los requerimientos de memoriade comandos o aplicaciones que se ejecutanconstantemente, al mantener sólo una copia del

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-15

    código la cual es compartida por todas lasaplicaciones.

    El default del linker de unix (ld) es segmentoscompartidos (-n).

    Si existen aplicaciones que utilicen la opción –N queexplicitamente hace que el segmento de texto no seacompartido, se esta estresando innecesariamente lamemoria del sistema.

    8.5.2 Sticky bit

    El efecto principal del SB es hacer que el segmentode texto de una aplicación sea copiado al área deswap, y permanezca allí, aún cuando la aplicacióntermine.

    El efecto principal del SB es reducir el tiempo departida 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 (parano malgastar SS) con una tasa de ejecución alta.

    En los sistemas con shared text y demand pagin el SBes obsoleto... pero:

    • Si no hay demand pagin su utilidad es muy alta.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-16

    • Algunos sistemas con demand pagin de todasmaneras 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 sharedlibraries. Windows NT soporta el mismo concepto através de las DLL.

    En lugar de incluir el código de la biblioteca en elejecutable, se asignan direcciones de las libs en elespacio de direccionamiento del proceso.

    El código de la biblioteca puede ser accedido pormúltiples aplicaciones, se usa menos memoria, losejecutables son más pequeños... pero.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-17

    • En general son más lentas, hasta un 25% alejecutar código de la biblioteca.

    • Dependiendo de la implementación, el ejecutablepuede ser más grande.

    8.5.4 Localidad de referencia en aplicaciones.

    Un análisis de la LR en el momento de diseño eimplementació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 esasignado en la partida del proceso, luego aloptimizar 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

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-18

    • 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 yworking set de los procesos. Se puede definir en/etc/cshrc

    % limit [-h] stacksize size

    //datasize

    //memory_use

    Algunas versiones permiten controlar tambiénsegundos de CPU, tamaño del core-file,etc.

    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 enpreferible para el paginador.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-19

    Los procesos pueden intentar subir su límite soft (<hard).

    OJO que un sistema que no puede correrprocesos grandes no es una buena idea... sobretodo si no realiza su trabajo.

    La mayoría de los SABDR soportan definición delímites para sus procesos internos y de usuarios.

    8.5.7 El tamaño de los buffers

    La utilidad de los buffers es indiscutible, peroconsumen memoria que podrían usar los procesos.

    Versiones anteriores a SVR4 utilizan un área debuffers estática, las SUNOS 4.0 y de SVR4 esdinámica, con un límite para los buffers de meta-datos.

    En sistemas con áreas de buffer estáticas el tamañode los buffers afecta el rendimiento de memoria virtualy el del I/O a disco.

    Si el tamaño de los buffers no está definido en losarchivos de configuración de sistema (stune NBUF),es determinado en la partida del sistema. Su definición

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-20

    aparece en general en la partida del sistema y en/var/adm/messages.

    El tamaño del buffer cache debe ser ajustado conconjunto con el I/O pero...

    • Si la carga de trabajo es CPU-Bound el BC puedeser 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 lamemoria desde el punto de los buffers (menos buff)

    En Windows NT podemos analizar el caché mediantePerformance Monitor o el Task Manager:

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-21

    Para analizar la efectividad de los buffers en UNIX seusa:

    sar –b,

    en BSD ...

    El tamaño de los BC se cambia re-construyendo elkernel.

    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 elsistema de memoria virtual para almacenar laspáginas “robadas” a los procesos en ejecución.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-22

    Dado que el S.O. no conoce de antemano losrequerimientos de memoria de las aplicaciones, éstereserva suficiente cantidad de swap space paraalmacenar la imagen entera del proceso. La razónprincipal es evitar dead Locks.

    En sistemas BSD es poco lo que se puede hacer paracontrolar el tamaño del area de swap. Para cadadisco, la partición de swap (si se usa) es la partición b(particionamiento estándar).

    Así, existen dos formas de administrar el área deswap.

    • 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 elkernel (no es necesario un fs en la partición de swap).

    El archivo de configuración del Kernel para hacerswap en /dev/dsk2b es:

    Config unix swap on disk 0b and disk 2b

    /efc/fstab debe reflejar la nueva organización

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-23

    /dev/disk2b swap swap rw 00 #NFS

    /etc/rc -> /etc/swapon -a.

    En SV existe mayor flexibilidad para particionar discose instalar en ellos áreas de swap.

    Una vez particionado el disco, se puede iniciar swapen él mediante el comando swap. Este comando debeser incluido en algunos de los archivos de /etc/rc2.dpara activar definitivamente el área de swap.

    swap -a /dev/dsk/1s2 0

    El tamaño de la partición puede ser obtenido delarchivo /etc/partitions.

    Algunas versiones de Unix, y en especial SVR4soportan “filesystem pagin”, lo cual provee unaconfiguración y administración flexible del área deswap.

    La idea es utilizar archivos regulares para paginación yswap. Estos archivos pueden ser ubicados encualquier lugar del sistema de archivos... y no senecesita reconfigurar el kernel.

    El trade-off esta por el lado de la eficiencia.

    − Fragmentación

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-24

    En sistemas tipo BSD

    # mkfile 20m /u/swapfile

    # /usr/etc/swapon /u/swapfile

    En SV el archivo de swap puede ser creado porcualquier medio, agregar al archivo, el comando es:

    # swap -a filename

    El tamaño del área de swap total del sistema seestima 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 dev lo blocks free

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-25

    /dev/dsk/0s2 0,2 0 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 estamás de un 50% usada regularmente, es necesarioaumentar su tamaño.

    Adicionalmente, para un uso óptimo del área de swapse recomienda su distribución a lo largo del sistemade archivos.

    El S.O. intentará balancear el uso de las diferentesáreas de swap para maximizar el paralelismo delsistema de discos.

    ...Ahora, no olvidar al controlador de disco... no todoslos controladores soportan operaciones simultáneassobre diferentes discos, en estos casos es mejor unárea de swap por controlador.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-26

    • NOTA: En términos del rendimiento, no serecomienda implementar espacios de swap através de NFS o RFS.

    Otra consideración importante, al distribuir áreas deswap, es la utilización de los discos.

    Utilizando sar-d, iostat o vmstat podemos analizar quediscos tienen menor utilización, lo cual los hacecandidatos a contener áreas de swap.

    Las mismas consideraciones se aplican a WindowsNT, siendo necesario notar que el área de paginaciónse define sobre un sistema de archivos y no sobre un“raw device”.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-27

    Es posible distribuir la paginación sobre los discos delsistema en Windows NT utilizando el administrador deconfiguración de sistema del panel de control.

  • Evaluación y Afinamiento de Sistemas Computacionales Apuntes de Clases

    © MARIO DROGUETT C. ESCUELA DE INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 8-28

    Windows NT define el área de paginación como unarchivo en el disco, al cual se asigna un tamaño inicialel cual puede variar dinámicamente hasta un máximodefinido (y se considera que el espacio esta reservadopara el sistema).

    Se recomienda para Windows NT un área depaginación total mayor a 3 veces la memoria física delsistema.