Herramientas de usuario

Herramientas del sitio


sistop:main

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
sistop:main [2007/09/15 13:18] nicolaswsistop:main [2018/08/10 03:03] (actual) – editor externo 127.0.0.1
Línea 180: Línea 180:
     * (flaco) Para hacer threading: [[http://www.threadingbuildingblocks.org/|Threading Building Blocks]]     * (flaco) Para hacer threading: [[http://www.threadingbuildingblocks.org/|Threading Building Blocks]]
  
 +
 +===== Propuestas de Proyectos de Investigación =====
 +
 +Poner acá abajo las propuestas con buen nivel de detalle asi hacemos copy&paste.
 +
 +
 +
 +==== 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/7.0-CURRENT, OpenBSD 4.1/4.2, Windows XP/Vista/2003 Server/2008 Server.
 +
 +=== 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/4, NTFS, XFS, JFS, ZFS), medios ópticos (ISO9660, UDF), memoria flash (LogFS, JFFS2, YAFFS) en distintos medios.
 +
 +==== 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 "defrag" para que la computadora ande "más rápido". El proyecto consiste en validar y cuantificar estas nociones. Las tareas para hacer son:
 +
 +  * 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, para obtener resultados comparativos. Correr estos benchmarks en distintos medios de almacenamiento (diskette, disco duro, y pendrive).
 +
 +
 +
 +=== 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/miles de archivos), como también esperas de CPU (se inician muchos procesos, se configura hardware) o de red. 
 +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://www.threadingbuildingblocks.org/|Threading Building Blocks]]**: TBB es una biblioteca que ayuda a aprovechar el rendimiento de procesadores multinúcleo sin necesidad de ser un experto en hilos.
 +    * 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://it.wikipedia.org/wiki/Boot_loader
 +http://www.osdev.org/wiki/Bootloader
 +http://www.viralpatel.net/taj/tutorial/hello_world_bootloader.php
 +http://msdn2.microsoft.com/en-us/library/ms901837.aspx
 +http://linuxdevices.com/articles/AT5085702347.html''
 +
 +**__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
 +
 +'' http://mikeos.sourceforge.net/
 + http://mikeos.sourceforge.net/handbook.html
 + http://mikeos.sourceforge.net/handbook.html#firstos
 + http://nasm.sourceforge.net/
 + http://fabrice.bellard.free.fr/qemu/''
 +
 +//Basar el estudio en  GeekOS//
 +  * Ccompilar y probar GeekOS.
 +  * Carga de archivos ejecutables (parseo de un ELF).
 +  * Agregar procesos de usuario.
 +
 +'' http://geekos.sourceforge.net/
 + http://gcc.gnu.org/
 + http://bochs.sourceforge.net/''
 +==== 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://fuse.sourceforge.net/|Home Fuse]]
 +[[http://en.wikipedia.org/wiki/Cryptographic_hash_function|Función de hash (wikipedia)]]
 +[[http://www.gnu.org/software/libc/manual/html_node/crypt.html#crypt|Módulo criptográfico de GNU]]
 +
 +
 +
 +==== Mario ====
 +
 +=== Completely Fair Scheduler ===
 +
 +  * Génesis, relación con Staircase Deterministic (SD) de Con Kolivas.
 +  * Proceso de desarrollo, controversias y discusiones, estado actual.
 +  * 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://kerneltrap.org/CFS|CFS en KernelTrap]], [[http://people.redhat.com/mingo/cfs-scheduler/|Página de Ingo Molar en RedHat]]
 +
 +=== 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://www.opensolaris.org/os/community/dtrace/|DTrace]] de Solaris.
 +  * Estudiar, instalar y hacer funcionar ejemplos de [[http://sourceware.org/systemtap/|SystemTap]].
 +  * 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://blogs.sun.com/ahl/entry/dtrace_knockoffs, http://prefetch.net/articles/solaris.dtracetopten.html
 +
 +
 +=== Memory Allocators del Kernel de Linux ===
 +
 +  * Buddy, Slab, [[http://lwn.net/Articles/229984/|Slub]].
 +  * Estudio de las implementaciones.
 +  * Como usar ''slabtop'' para mirar el estado de la memoria del kernel y diagnosticar problemas.
 +  * Benchmarking.
 +  * Estado actual del kernel de Linux.
 +  * Links: http://en.wikipedia.org/wiki/Buddy_memory_allocation, http://en.wikipedia.org/wiki/Slab_allocation, http://kernelnewbies.org/Linux_2_6_22#head-b8a3a2eee0cd6ebd97e500bdcd941f08a24e622d
 +
 +
 +=== 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/Vista.
 +  * Hacer un benchmark en cualquier par OS/arch que permita conectar y desconectar esta característica.
 +  * Links: [[http://ivoras.sharanet.org/freebsd/freebsd7.html | What's cooking for FreeBSD 7?]], [[http://www.cs.rice.edu/~ssiyer/r/superpages/osdi02superpages/|Practical, transparent operating system support for superpages]], [[http://portal.acm.org/citation.cfm?id=773365.773374&coll=GUIDE&dl=GUIDE&CFID=15151515&CFTOKEN=6184618|A transparent Linux super page kernel for Alpha, Sparc64 and IA32: reducing TLB misses of applications]].
 +
 +=== 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://en.wikipedia.org/wiki/XO-1_(laptop)|XO-1]], GPS, mediaplayers, etc. .
 +  * Modificaciones del kernel: tickless kernel, cpufreq governor.
 +  * Links: [[http://kerneltrap.org/node/11700|Linux, reducing the power consumption]], [[http://www.linuxpowertop.org/|Powertop]], [[http://www.lesswatts.org/|LessWatts]]
sistop/main.1189862334.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)