PDF de programación - Funcionamiento del kernel: CPU y memoria

Imágen de pdf Funcionamiento del kernel: CPU y memoria

Funcionamiento del kernel: CPU y memoriagráfica de visualizaciones

Publicado el 14 de Enero del 2017
962 visualizaciones desde el 14 de Enero del 2017
862,3 KB
42 paginas
Creado hace 11a (01/03/2013)
Kernel: CPU y Memoria

Diseño y Evaluación de Configuraciones

Curso 2012-13

Miguel Telleria de Esteban

telleriam AT unican.es

Computadores y Tiempo Real

http://www.ctr.unican.es

Uso de CPU y planificación

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Procesos y Threads

POSIX API: fork(), getpid(), pthread_create()

fork()

GLIBC

Proceso 1
thread 1

pid 1

Proceso 2

pid 2
thread 2
pthread_create()

p

thread 3
pid 3

SYSCALLS: clone, getpid, gettid

KERNEL
SCHEDULER

task 1

pid 1

task 2

pid 2

task 3

pid 3

VMA A

MMU

VMA B

● GNU/Linux soporta procesos y

threads
● Procesos: Espacio de memoria

propio

● Threads: Espacio de memoria

compartido

● Para el kernel procesos y

threads se planifican
indistintamente:
● PID
● Política de planificación
● Prioridad
● Afinidad
● Estadísticas
● Relojes de ejecución

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 3 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Planificador de Linux

Desde el 2.6.23 (2007) CFS: Completely Fair Scheduler

Jerarquia I Real Time:

- Baja latencia (para alta prioridad)
- Bajas prioridades pueden no ejecutar
- SCHED_RR: Timeslice fija para todos
- SCHED_FIFO: Hasta que no termine no para

SCHED_FIFO

SCHED_RR

Jerarquia II: Timeshare

SCHED_OTHER

TASKs
(rbtree)

- Alto throughput “para todos”
- Todas las tareas tiene garantizada la CPU
- SCHED_OTHER: Round-robin con timeslice inversamente proporcional al nice

Multicores: Balanceo de carga periódico segun afinidad

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 4 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Parámetros de planificación de CPU en Linux

● Policy: Política de planificación

● SCHED_OTHER o SCHED_NORMAL: Por defecto, round-robin con timeslice

variable

● SCHED_RR: POSIX Real-Time: Round robin con timeslice fija
● SCHED_FIFO: POSIX Real Time: prioridades fijas
Las políticas SCHED_FIFO y SCHED_RR tienen prioridad sobre
SCHED_OTHER.

● Nice: Avaricia del proceso

● Sólo se usa en SCHED_OTHER, se ignora para real time
● Oscila entre: (-20 valor más prioritario y 19), por defecto 0
rt-priority: Nivel de preempción
● Se usa en SCHED_RR y SCHED_FIFO, ignorada en SCHED_OTHER



● Máscara de afinidad

● Define en que CPU(s) un proceso admite ser ejecutado

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 5 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Nice y nivel de preempcion entremezcladas
● 100 – 139 valor inverso a la prioridad (100 más prioritario)

– Donde: PROCFS: /proc/<pid>/sched (prio).
– NOTA: Cuando se cambia a RT este valor permanece igual (pero es ignorado)

● 0 – 99 creciente en prioridad (sólo en SCHED_FIFO, SCHED_RR)

– Donde

● chrt -p <pid>
● API's de POSIX (set_sched_param)



-20 a 19 (SCHED_OTHER) orden inverso a prioridad
– Donde:

● Htop,
● chrt -p <pid>
● Gnome-system-monitor

● 0 – 39 (SCHED_OTHER) orden inverso a la prioridad

– Donde:
● top

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 6 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Asignación de prioridad y política desde consola
● Comando chrt

● Vemos en que prioridad corre: Usamos -p para el pid

– chrt -p 16951

pid 16951's current scheduling policy: SCHED_OTHER
pid 16951's current scheduling priority: 0

● Pasamos a SCHED_FIFO prioridad alta 80/90 -p para prioridad

– chrt –fifo -p 80 169510
– chrt -p 16951

pid 16951's current scheduling policy: SCHED_FIFO
pid 16951's current scheduling priority: 80

● Vuelta a SCHED_OTHER con nice a 0 (valor por defecto)

– chrt –other -p 0 16951

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 7 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Afinidad

● La afinidad se representa mediante una máscara binaria

● CPU 0: 1 CPU 1: 2 CPU 3: 4 CPU 4: 8
● Valor 3: CPU's 0 y 1

...

● Asignación y obtención desde consola (parecido al chrt)

● Se obtiene con taskset -p <pid>

– Taskset -p 16951

pid 16951's current affinity mask: f

● Se asigna con taskset -p <mascara> <pid>

taskset -p 1 16951

– Taskset -p 16951

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 8 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Estados de un thread en el tiempo

● En un instante dado un thread puede estar:

● R Running
● S Sleep: Suspendido en un wait() o sleep(). Se le puede interrumpir
● D Uninterruptible sleep (tipicamente disk IO). Sólo se le interrumpe con kill -9
● T Traceado en debug
● Z Zombie, difunto:



A la espera de que el padre les espere (o muera y sean esperados por init)

● Además puede tener las siguientes añadidos (ej ps):

● < Valor nice negativo, (avaricioso)
● N Valor nice positivo, (generoso)
● L Mantiene páginas en memoria bloqueadas



Tiene pthreads asociados
Lider de sesión: Proceso que controla el terminal

l
● s
● + Pertenece al foreground-process-group

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 9 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

CPU ocupada sin ningún thread de usuario
● Existen situaciones en el que el kernel tiene la CPU ocupada sin

ejecutar ningún código o servicio de usuario.
● Atendiendo a una interrupción hardware (ej. timer)

– Top half (irq ISR)
– Bottom half (workqueue, tasklet, softirq)

● Atendiendo a una interrupción software (ej page-fault + swap)
● Ejecutando tareas de mantenimiento:

– Actualizando páginas sucias de la page-cache al disco
– Balanceando la carga de los multicores

● Respondiendo a necesidades de emergencia
– Liberando memoria de caches o de procesos
– Usando la swap del disco

● Realizando cambios de contexto
● No realizando nada (idle)

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 10 de 42

Funcionamiento de la memoria

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Paginación en Linux

● Hardware MMU (Memory management unit) provee:

● Manejo en bloques de páginas (típicamente 4k en i386).
● Mapeados de direcciones (i386: tablas PGPT, PMD, PTE)
● Detección de fallos de página (acceso a páginas no mapeadas)
● Permisos de lectura / escritura / ejecución
● TLB: Cache de traducción de páginas

● El S.O. (linux) ha de programar todo ello:

● Maneja un bitmap de todas las páginas de memoria.
● Actualiza las tablas en los cambios de contexto: Espacios de memoria
● Utiliza los fallos de página para

– Detectar accesos prohibidos


Implementar paginación bajo demanda
Implementar cache memoria ↔ disco
Implementar espacio swap





28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 12 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Distribución de la memoria física en Linux

● Páginas para el kernel mismo:

● El fichero vmlinuz se carga permanentemente en memoria
● Los módulos se cargan bajo demanda (y se quedan permanentes mientras no se quite el módulo)
● Losas (slab) estructuras pre-allocated (inodos, descriptores de procesos, página...)

– Cada losa ocupa menos que una página, por lo que el kernel maneja su reuso).
– Parte de estos objetos se cachean (inode cache, dentry cache)

● Páginas para los procesos (de usuario y de kernel)
● Código ejecutable (text) (compartido con otros procesos)
● Datos estáticos (data)
● Stack y thread-level-storage (bss)
● Heap

● Páginas de caché de disco (page_cache)

● Caché: Contenido real de disco
● Buffers: Metadata de los inodos (timestamps, permisos...)

● Pool de páginas libres

● Para satisfacer rápidamente peticiones urgentes

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 13 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Memoria asociada a un proceso

● El kernel define zonas de memoria VMA para los procesos

● Puede estar mapeada a un fichero o ser anónima
● Tiene asociados permisos de ejecución, lectura y/o escritura
● Puede estar compartida o no con otros procesos

pmap 3070

08048000 3152K r-x-- /usr/bin/claws-mail
0835c000 160K rw--- /usr/bin/claws-mail
08384000 80K rw--- [ anon ]
0a372000 42372K rw--- [ anon ]
aad3e000 8620K r---- /usr/share/icons/hicolor/icon-theme.cache
ab5a9000 48536K r---- /usr/share/icons/gnome/icon-theme.cache
ae50f000 4K ----- [ anon ]
afd13000 8192K rw--- [ anon ]
b0513000 112K r--s- /usr/share/mime/mime.cache
b0d9a000 48536K r---- /usr/share/icons/gnome/icon-theme.cache
b3d00000 2048K rw--- [ anon ]
b469b000 8192K rw--- [ anon ]
b4e9b000 484K r-x-- /usr/lib/claws-mail/plugins/vcalendar.so
b4f14000 40K rw--- /usr/lib/claws-mail/plugins/vcalendar.so

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 14 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

Linux intenta usar la máxima memoria

¡¡ Memoria sin usar es memoria desperdiciada !!

28 Feb 2013

Miguel Telleria de Esteban telleriam AT unican.es)

Página 15 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Kernel: CPU y Memoria

¿Cual es entonces la “memoria disponible”?

● Rule of thumb: Libre + page-cache

28 Feb 2013

Mig
  • Links de descarga
http://lwp-l.com/pdf1074

Comentarios de: Funcionamiento del kernel: CPU y memoria (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad