sistop:main
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
sistop:main [2007/09/15 13:18] – nicolasw | sistop:main [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 180: | Línea 180: | ||
* (flaco) Para hacer threading: [[http:// | * (flaco) Para hacer threading: [[http:// | ||
+ | |||
+ | ===== Propuestas de Proyectos de Investigación ===== | ||
+ | |||
+ | Poner acá abajo las propuestas con buen nivel de detalle asi hacemos copy& | ||
+ | |||
+ | |||
+ | |||
+ | ==== Charly ==== | ||
+ | |||
+ | === Benchmarking === | ||
+ | * ¿Es Linux es tan rápido como se publicita? | ||
+ | * ¿Es Windows tan pesado como se comenta? | ||
+ | * ¿Cuál es el SO más rápido? | ||
+ | * ¿Cuánta performance se pierde si cambiamos el foco del SO a la seguridad? | ||
+ | Este trabajo consiste en tratar de encontrar respuestas a este tipo de preguntas midiendo la performance de aplicaciones de uso común en PCs de escritorio o servidores corriendo Linux 2.6.22/23, FreeBSD 6.1-RELEASE/ | ||
+ | |||
+ | === Filesystems === | ||
+ | Los sistemas de archivos tienen diseños distintos según el uso que se les quiere dar. ¿Cómo afectan estas decisiones a la performance del sistema de archivos? Comparar la performance de filesystems para discos rígidos (ext3/4, reiserfs3/ | ||
+ | |||
+ | ==== Dani ==== | ||
+ | |||
+ | |||
+ | === Desfragmentar el disco... realidad o mito? === | ||
+ | |||
+ | Los usuarios de DOS y Windows (en especial aquellos que no usan NTFS sobre NT, XP o Vista)saben por conocimiento popular que periodicamente hay que correr " | ||
+ | |||
+ | * Armar un programa que lea un sistema de archivos FAT, lo analice, y den una métrica de su fragmentación. | ||
+ | |||
+ | * Construir programas de prueba para llenar de archivos un disco FAT vacío, que obtenga alta y baja fragmentación. | ||
+ | |||
+ | * Realizar un programa de benchmark de performance y correrlo sobre sistemas de archivos muy fragmentados y defragmentados, | ||
+ | |||
+ | |||
+ | |||
+ | === Acelerando el arranque con block prefetching === | ||
+ | |||
+ | Un sistema operativo de escritorio moderno (en este trabajo, GNU/Linux) puede demorar más de un minuto desde que empieza a arrancar hasta que el usuario puede interactuar con las aplicaciones (por ej: la pantalla de login). En este intervalo de tiempo, hay múltiples esperas de disco (se leen cientos/ | ||
+ | Una forma de acelerar este proceso es, al principio del arranque, lanzar un proceso en paralelo que lea del disco los bloques que son necesarios por el proceso de arranque. Esto tiene un costo bajo en CPU, y reduce mucho las esperas de disco de los procesos iniciandose (se paraleliza la lectura a disco con otras tareas no atadas a disco del arranque). | ||
+ | El trabajo incluye: | ||
+ | |||
+ | * Construir un mecanismo para registrar en un arranque normal la lista de bloques requeridos | ||
+ | * Armar un programa que lea esta lista, e instalarlo al inicio del arranque de un sistema Linux | ||
+ | * Medir cuanta mejora produce. | ||
+ | |||
+ | ==== Eduardo ==== | ||
+ | |||
+ | |||
+ | |||
+ | ==== Flaco ==== | ||
+ | |||
+ | * **Virtualización** | ||
+ | * Para qué sirve? | ||
+ | * Comparación entre distintos modelos de virtualización. | ||
+ | * lguest - permite ejecutar varias copias del mismo núcleo de 32-bits. | ||
+ | * xen - monitor de máquina virtual. | ||
+ | * qemu - un emulador y virtualizador de procesador. | ||
+ | * (nicow) Debido a que las implementaciones de cada virtualizador tienen un approach muy diferente, armar programitas de ejemplo donde muestra las fortalezas y debilidades de cada uno en cuanto a performance | ||
+ | |||
+ | * **Programación multihilos usando [[http:// | ||
+ | * Introducción a TBB | ||
+ | * Ejemplos de código con y sin TBB | ||
+ | * Comparación de performance | ||
+ | * **Comunicación con el núcleo** | ||
+ | * Llamadas al sistema | ||
+ | * Señales | ||
+ | * Interrupciones | ||
+ | * Cómo y cuándo se disparan estos mecanismos | ||
+ | * Agregar una llamada al sistema, un ISR :?: y una señal :?: | ||
+ | |||
+ | ==== Julio ==== | ||
+ | **__Boot loading: | ||
+ | |||
+ | * Investigar el proceso de inicialización del Sistema Operativo. | ||
+ | * Implementar un Boot loader básico que ejecute algún programa simple emulando el proceso de inicialización del sistema Operativo. | ||
+ | * Implementar un Boot Loader que permita arrancar Linux | ||
+ | |||
+ | |||
+ | '' | ||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | |||
+ | **__Build your own operating system:__** | ||
+ | |||
+ | Investigar el proceso de desarrollo de un sistema operativo. | ||
+ | |||
+ | //Basar el estudio en MikeOS:// | ||
+ | * Desarrolla una versión Hello World del Sistema operativo. | ||
+ | * Expandir este SO para agregarle alguna funcionalidad. | ||
+ | * Presentarlo corriendo sobre QEmu | ||
+ | |||
+ | '' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | //Basar el estudio en GeekOS// | ||
+ | * Ccompilar y probar GeekOS. | ||
+ | * Carga de archivos ejecutables (parseo de un ELF). | ||
+ | * Agregar procesos de usuario. | ||
+ | |||
+ | '' | ||
+ | | ||
+ | | ||
+ | ==== Laura ==== | ||
+ | |||
+ | |||
+ | ==== Luis ==== | ||
+ | |||
+ | |||
+ | === Filesystem en userspace usando compresión de bloques mediante hashes === | ||
+ | Implementar un sistema de archivos en espacio de usuario, que ahorre espacio mediante el uso de block hashes para | ||
+ | identificar cada bloque y asi poder almacenar una sola vez cada bloque sin importar la cantidad de veces aparece en el sistema de archvos. | ||
+ | |||
+ | * Instalar e investigar la API de fuse | ||
+ | * Implementar un filesystem sencillo usando fuse y block hashes | ||
+ | * Medir la performance y el ahorro de espacio, comparando con un filesystem trivial en memoria. | ||
+ | |||
+ | === Filesystem en userpace encriptando los bloques === | ||
+ | Implementar un sistema de archivos en espacio de usuario, que encripte lo bloques para que solo pueda ser | ||
+ | leído con exito por lo usuarios que posean la clave. | ||
+ | |||
+ | * Instalar e investigar la API de fuse. | ||
+ | * Implementar un filesystem sencillo usando fuse y encriptando los bloques. | ||
+ | * Medir el overhead producido por la encriptación y desencriptación. | ||
+ | |||
+ | == Links == | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Mario ==== | ||
+ | |||
+ | === Completely Fair Scheduler === | ||
+ | |||
+ | * Génesis, relación con Staircase Deterministic (SD) de Con Kolivas. | ||
+ | * Proceso de desarrollo, controversias y discusiones, | ||
+ | * Funcionamiento general, ideas matemáticas y comparación con Really Fair Scheduler (RFS). | ||
+ | * Highlights del código. | ||
+ | * Benchmarking de O(1), SD y CFS en el estado actual (¿Ya mezclado en 2.6.23?). | ||
+ | * Fuentes: [[http:// | ||
+ | |||
+ | === Construcción de un Planificador de IO en Linux === | ||
+ | |||
+ | (Mario, completar la descripción) | ||
+ | |||
+ | ==== Matías ==== | ||
+ | |||
+ | ==== Natalia ==== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Nicolás ==== | ||
+ | |||
+ | === Herramientas de Análisis y Rastreo Dinámico de Kernels === | ||
+ | |||
+ | * Estudiar [[http:// | ||
+ | * Estudiar, instalar y hacer funcionar ejemplos de [[http:// | ||
+ | * Implementar y mostrar como funcionan scripts que ayuden a detectar: | ||
+ | * Fallas de performance en servidores Linux. | ||
+ | * Procesos con programas mal hechos: muchas system calls, mucha I/O corta, demasiado locking, etc. | ||
+ | * Instalar OpenSolaris o Solaris10 y mostrar DTrace funcionando. | ||
+ | * Comparar DTrace con SystemTap. | ||
+ | * Otros links: http:// | ||
+ | |||
+ | |||
+ | === Memory Allocators del Kernel de Linux === | ||
+ | |||
+ | * Buddy, Slab, [[http:// | ||
+ | * Estudio de las implementaciones. | ||
+ | * Como usar '' | ||
+ | * Benchmarking. | ||
+ | * Estado actual del kernel de Linux. | ||
+ | * Links: http:// | ||
+ | |||
+ | |||
+ | === Superpages para mitigar TLB misses === | ||
+ | |||
+ | * Estudiar el tema, ver que arquitecturas soportan superpages (i386 seguro, ia64 más). | ||
+ | * Ver que estado tiene en Linux, FreeBSD, Solaris, WindowsNT/ | ||
+ | * Hacer un benchmark en cualquier par OS/arch que permita conectar y desconectar esta característica. | ||
+ | * Links: [[http:// | ||
+ | |||
+ | === Reduciendo el consumo de energía en Linux === | ||
+ | |||
+ | * Es algo muy necesario para todos los dispositivos que utilizan Linux y se alimentan de una batería: Handhelds, Laptops, [[http:// | ||
+ | * Modificaciones del kernel: tickless kernel, cpufreq governor. | ||
+ | * Links: [[http:// |
sistop/main.1189862334.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)