Planificación de Discos en Linux

download Planificación de Discos en Linux

If you can't read please download the document

description

Presentación sobre Planificación de discos en Linux de la cátedra Sistemas Operativos - UTN, FRCU.

Transcript of Planificación de Discos en Linux

  • 1. Tema del da: Planificacin de Discos en el Kernel Linux

2. Objetivos

  • En esta clase trataremos de:
    • Ver cmo se superan las limitaciones de los algoritmos de de planificacin de libro.
    • Ver cmo un sistema operativo real trata con los problemas de la planificacin de discos.
    • Evaluar las ventajas y desventajas de cada algoritmo de planificacin, as como sus aplicaciones.

3. Repaso... Usuario Archivo Registros Cach de Bloques Cach de Controladora Control de Acceso Mtodo de Acceso Planif. dedisco. Adm. de espacio libre. Buffers 4. Repaso...

  • Cmo trabaja un disco?
  • Un disco es un conjunto de bloques de datos.
  • Un disco tiene cabezas.
  • Los datos slo pueden ser ledos cuando la cabeza est sobre ellos.
  • Mover los cabezales es MUY LENTO!
  • Una vez que el cabezal est posicionado el tiempo de la transferencia es muy pequeo.

5. Repaso... 6. Planificacin de Discos

  • En caso de tener muchas solicitudes para el mismo disco, en qu orden las atendemos?
  • Qu objetivos persigue?
    • Maximizar el throughput.
      • Operaciones/seg., bytes/seg.
    • Lograr ecuanimidad.
    • Evitar la inanicin.
    • Cuestiones de Tiempo Real.
      • Garantizar un determinado tiempo mximo de espera.

7. Planificacin de Discos

  • Qu Falta?
  • Los sistemas operativos dan prioridades a varios recursos:
    • Procesador.
    • Memoria.
    • Acceso a Red.
  • Pocos a los accesos a disco...

8. Planificacin de Discos

  • A tener en cuenta:
  • Las controladoras modernas poseen su propio sistema de colas y planificacin.
  • Hay controladoras que pueden encolar hasta 512 solicitudes (una controladora SATA puede encolar entre 16 y 32 solicitudes).
  • Si hay colas en la controladora (TCQ, NCQ, etc.) los objetivos del planificador del S.O. pueden verse seriamente afectados...

9. Planificacin en Linux

  • Historia
  • Kernels 1.x
    • Planificacin??? Para qu???
  • Kernels 2.0 2.2 2.4
    • C-SCAN (con algunas variantes)
  • Kernels 2.6.X
    • Tres planificadores en tres aos...
      • Noop, Anticipatory, Deadline, CFQ.
    • Es posible cambiarlos por cada dispositivo de bloques, e inclusive en tiempo de ejecucin...

10. Planificacin en Linux

  • En la actualidad...
  • No-op
  • Deadline
  • Anticipatory (default 2.6.0 - 2.6.18)
  • Complete Fair Queuing (default >= 2.6.18)

# cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq] 11. Planificacin en Linux

  • No-Op
  • Atiende las solicitudes a medida que llegan.
  • A pesar de ello, si llega otra solicitud adyacente, la une con la anterior.
  • Muy simple.
  • til para disp. sin tiempo de bsqueda.

12. Planificacin en Linux

  • Deadline
  • Es un C-SCAN con algunos agregados.
  • Cada solicitud tiene un deadline.
  • Si se vence el deadline de alguna solicitud la atiende inmediatamente.
  • Trata la lecturas y escrituras por separado (atiende el doble de lecturas que escrituras)

13. Planificacin en Linux

  • Deadline
  • Tiene varios parmetros:
    • fifo_batch(nmero de solicitudes en un batch)
    • read_expire ,write_expire(en ms)
    • writes_starved(cuntas lecturas por escritura)
    • front_merges(si funde solicitudes al llegar)
  • Buena para aplicaciones de Tiempo Real.

14. Planificacin en Linux

  • Anticipatory Scheduling (AS)
  • Todas las caractersticas de Deadline, pero agrega anticipacin.
  • Antes de atender una solicitud, la demora unos milisegundos, en espera de que llegue otra cercana.
  • El valor de la demora depende de lo rpido que sea el disco... Antes que tener el disco desocupado, podemos usar ese tiempo en la bsqueda... ;)

15. Planificacin en Linux

  • Anticipatory Scheduling (AS)
  • Tiene otras diferencias con Deadline:
  • La solicitudes en un lote se atienden con SCAN y no deben ser contiguas.
  • Se permiten bsquedas hacia atrs (de hasta 1Mbit) pero con el doble del costo.
  • No trata las lecturas y escrituras por separado, pero si las operaciones sncronas y asncronas.

16. Planificacin en Linux

  • Anticipatory Scheduling (AS)
  • Tiene varios parmetros:
    • antic_expire(tiempo de espera)
    • read_expire , (deadline sncrono)
    • write_expire(deadline asncrono)
    • est_time(estadsticas)
  • Mejora el tiempo de respuesta medio.

17. Planificacin en Linux

  • Completely Fair Queuing (CFQ)
  • Trata de ser ecunime. Adems soporta anticipacin ydeadliness.
  • Se da a cada proceso un tiempo (rodaja) en el cual puede hacer peticiones sncronas.
  • Todos los procesos comparten 17 colas para solicitudes de E/S asncrona (una por cada prioridad). Tambin tienen rodajas de tiempo, pero adems un mximo de solicitudes.

18. Planificacin en Linux

  • Completely Fair Queuing (CFQ)
  • Cada cola de solicitudes obtiene una rodaja de tiempo de acuerdo a su prioridad. Las rodajas se asignan usando una cola circular.
  • Dentro de cada rodaja las solicitudes se pueden fundir y son planificadas usando SCAN (con una penalizacin por volver).
  • Adems demorar las prximas solicitudes en espera de ms E/S de ese proceso (AS)

19. Planificacin en Linux

    • Completely Fair Queuing (CFQ)

Disco AS + C-SCAN Round-R + Deadline Planif. Q1 Q2 Q3 Qn T-R 20. Planificacin en Linux

  • Completely Fair Queuing (CFQ)
  • Complejo!
  • Da soporte a tiempo real.
  • Ecunime y combate a los abusadores.
  • No admite inanicin.
    • Sin contar a los procesos T-R.
  • Permite prioridades.
    • Aunque an no est claro como asignarlas...

21. Planificacin en Linux

  • Completely Fair Queuing (CFQ)
  • Tiene varios parmetros:
    • fifo_expire_(a)syncdeadline (a)sncrono
    • slice_(a)syncrodaja de tiempo (a)sncrona
    • slice_async_rqmximo de peticio nes asinc.
    • quantumcantidad de peticiones por lote

22. Bibliografa

  • Esta clase puede ser ampliada viendo:
    • Linux Block IO: present and future
      • Jens Axboe - July, 2004 Ottawa, Ontario Canada
      • Proceedings of the Linux Symposium
    • Wikipedia :)
      • http://en.wikipedia.org/wiki/Noop_scheduler
      • http://en.wikipedia.org/wiki/Deadline_scheduler
      • http://en.wikipedia.org/wiki/Anticipatory
      • http://en.wikipedia.org/wiki/CFQ
    • Jens Axboe presentando CFQ: http://lca2007.linux.org.au/talk/123.html

23. Gracias ! Ing. Gabriel E. Arellano [email_address] http://www.gabriel-arellano.com.ar/so/ (2008) Gabriel E. Arellano Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. The GNU Free Documentation License as applicable to this document can be found at:http://www.gnu.org/copyleft/fdl.html