Tema 3 - Solución de problemas en un sistema informático

Ejercicio de autoevaluación 3.1 -

Busca en Internet o en el manual de tu sistema operativo cómo puedes alterar los parámetros siguientes de tu sistema operativo:


  1. Mediante el archivo /etc/security/limits.conf
core -- tamaño del archivo del núcleo (KB); usually set to 0 for most users to prevent core dumps.
data -- Maximum data size (KB).
fsize -- Maximum file size (KB).
memlock -- Maximum locked-in-memory address space (KB).
nofile -- Maximum number of open files.
rss -- Maximum resident set size (KB).
stack -- Maximum stack size (KB).
cpu -- Maximum CPU time (MIN).
nproc -- Maximum number of processes.
as -- Address space limit.
maxlogins -- Maximum number of logins for this user or group.
priority -- The priority to run user process with.

2. Mediante comandos en shell bash: umilit

  -S      use the `soft' resource limit

-H use the `hard' resource limit
-a all current limits are reported
-c the maximum size of core files created
-d the maximum size of a process's data segment
-f the maximum size of files created by the shell
-l the maximum size a process may lock into memory
-m
the maximum resident set size
-n the maximum number of open file descriptors
-p the pipe buffer size
-s the maximum stack size
-t the maximum amount of cpu time in seconds
-u the maximum number of user processes
-v the size of virtual memory
  • tamaño de la rodaja temporal: editar archivo limits.conf y cambiar parámetro cpu
  • índice de supervivencia de página:
  • número máximo de usuarios:
  • número máximo de procesos: ulimit -u 50 (limitamos el nº máximo de procesos = 50, al reiniciar el sistema esta configuración se pierde). Editamos el fichero /etc/security/limits.conf y añadimos una línea %hard nproc 50 . Al guardar y reiniciar el sistema, lo podemos comprobar tecleando ulimit -a y observaremos que la línea max user processes (-u) 50.

Anexo: seguridad
Existen funciones denominadas fork bombs que consumen toda la memoria del sistema produciendo tal colapso que se produce un DoS (denegación de servicio).
Existen fork bombs para todas las plataformas, en concreto, esta para bash:

:(){ :|:& };:

que se puede interpretar como esto:

forkbomb(){
forkbomb | forkbomb &
}
forkbomb

Es decir, esta es la definición de una función recursivaforkbomb” que se llama a sí misma otras dos veces-puede aumentarse- (forkbomb | forkbomb &) consumiendo toda la memoria del sistema siendo necesario reiniciar el equipo.

Para evitar que esto dañe seriamente al sistema y lo deje inutilizado es necesario limitar el número máximo de procesos que un usuario puede ejecutar.

Para acabar, comentar una variante del Fork Bomb anterior:

echo "\$0&\$0">_;chmod +x _;./_

Como $0 almacena el valor del proceso actual, el script ejecutará:

./_ &
./_

contínuamente, con el agravante de que en este caso, lo que se intenta ejecutar no es una simple función de la memoria del bash, sino un nuevo proceso del disco que requiere cargar un nuevo bash en memoria.

La versión Windows de ese mismo fork bomb es un “.bat” con este contenido:

:s
start %0
goto s



Mirando las pantallas de configuración de tu ordenador, di qué parámetros del hardware se pueden cambiar:


  • reloj del sistema: La llamada al sistema adjtimex lee y opcionalmente prepara parámetros de ajuste. Si deseamos sincronizar ar el reloj sw: hwclock -w o hwclock --systohc.
    Ambos comandos obtienen la fecha y hora desde el reloj de hardware y modifican el reloj de software.
    Si en cambio desea sincronizar de manera inversa (modificar el reloj de hardware con la fecha y hora del
    reloj de software) entonces puede utilizar el comando hwclock -s o el comando hwclock --hctosys.

  • frecuencia del bus del sistema: no he encontrado un comando específico. Todo parece indicar que hay que tocar la BIOS del sistema. Pero en Gentoo existe un paquete lfsb que parece que permite modificar la frecuencia del FSB y la memoria del sistema.

http://sourceforge.net/project/showfiles.php?group_id=150613&package_id=166539



Buscar en Internet algún contrato de prestación de servicios que incluya condiciones sobre las prestaciones de un sistema que va a contratar; presentar el enlace.

http://www.azamedia.com/garantiaSLA.php



Ejercicio de autoevaluación 3.2 - Tomar varios programas de una misma categoría, tales como navegadores, programas de correo, editores; realizar en todos ellos la misma tarea, y evaluar el consumo de recursos de los mismos, especialmente memoria consumida y porcentaje de CPU. Indicar en un entorno donde los recursos no sean excesivos, cuál se usaría.

Linux - Escritorio KDE: KDE es un sistema sobrecargado de opciones y botones, con montones de efectos gráficos como transparencias, y totalmente configurable.
  • Navegadores
    • Mozilla Firefox: 3'6% memoria usada, 3% CPU
    • Konqueror: 1'5% memoria usada, 2 CPU
  • Editores texto
    • Open Office: memoria 3'8%, CPU 51%
    • KDevelop: memoria 2%, CPU 1%
    • Kwrite: memoria 1'3% , CPU 1%
    • Vi: memoria 0'2%, CPU 2%
  • Lectores correo / noticias
    • KMail: memoria 1'4%, CPU 2%
  • Mensajería instantánea
    • Kopete: memoria 1'3%, CPU 2%
Linux - Escritorio Gnome: en general el escritorio Gnome parece que es más rápido y consume menos recursos que KDE, porque sigue la filosofía "it just works - simplemente funciona", es decir, está diseñado para ser fácil de usar, y con el mínimo número de aplicaciones instaladas para trabajar.

Windows: en entornos Windows no hay muchas alternativas a las aplicaciones integradas en el S.O, debido al marketing agresivo de Microsoft.

Conclusión - en un entorno con recursos limitados:
  • trabajar si es posible sin entorno gráfico
  • si no es posible lo anterior, usar gestores de ventanas minimalistas (Window Maker)
  • escritorios (por orden de menor a mayor consumo): Xfce, Gnome, KDE
  • usar navegadores alternativos a Mozilla o Explorer (Konqueror, Opera, Netscape)
  • en vez de los paquetes ofimáticos, utilizar aplicaciones más sencillas (NotePad, Kwrite, Vi)

Ejercicio de autoevaluación 3.3 -


Comparar dos programas que hagan la misma labor (por ejemplo, dos procesadores de textos), ejecutando simultáneamente un monitor, y calcular a ojo de buen cubero los recursos de CPU y memoria que consumen. ¿Si hay varias copias del programa, cómo evoluciona el consumo de recursos?


OpenOffice:
- Memoria
: 46MB aprox.
- Hay un proceso padre "soffice", y un proceso "soffice.bin" por cada instancia del programa lanzada.
  • Monitorizar la CPU y memoria de un ordenador recién encendido; eliminar servicios innecesarios del arranque, y volver a hacer la monitorización. ¿Ha mejorado algo?
Para ver los servicios activos: ls -l /etc/init.d
Y los puertos abiertos: netsat -npl (root) -
En esta dirección se puede ver una extensa lista con todos los puertos y servicios:
http://www.iana.org/assignments/port-numbers
He eliminado algunos servicios como:
  • Modificar algún parámetro del sistema operativo, tal como la rodaja temporal; monitorizar el sistema antes y después de la modificación. ¿Se nota alguna diferencia?

Ejercicio de autoevaluación 3.4 - Contar una experiencia de overclocking propia o encontrada en algún sitio de internet.


AtiTool es una herramienta que permite hacer overclocking en tarjetas gráficas de la marca ATI o nVidia. Tiene las siguientes características:
  • No hay límite de frecuencia para el overclocking
  • Ajusta el voltaje de la tarjeta gráfica y la memoria (siempre que estos componentes lo permitan)
  • Encuentra la frecuencia máxima a la que se puede sobreacelerar el núcleo y la memoria realizando un renderizado en Direct3D y escaneando la salida.
  • Controla la temperatura y la velocidad del ventilador (en las tarjetas que lo admitan)
  • Permite cargar un perfil predefinido del para la frecuencia del reloj al arrancar Windows o alguna otra aplicación
  • Se pueden hacer copias de seguridad de los ajustes de la BIOS para restablecer los valores de la tarjeta gráfica
  • Detección del motor 3D (Direct3D 8, Direct3D 9, OpenGL)
  • Control Gamma
Para más información, la página web se encuentra en esta dirección: http://www.techpowerup.com/atitool/


Ejercicio de autoevaluación 3.5 -

Examinar un sistema que tengamos a mano, y en el cual tengamos privilegio de administrador, cambiar alguno de los parámetros relativos a la memoria, y ver como influye en las prestaciones del sistema; para evaluarlo, usar un monitor antes y después del cambio.




Consultar en internet o en los manuales del sistema operativo cuáles son los parámetros relativos a la memoria modificables por el usuario y administrador, y decir qué posible impacto pueden tener en las prestaciones del sistema.

  1. Windows
    • En Windows el tamaño del archivo de intercambio (swap) no tiene un tamaño fijo, sino que está recalculándose constantemente. Esto es una pérdida considerable de tiempo y mas aun si tenemos el disco duro fragmentado. Para solucionar este problema vamos a: Inicio -> Panel Control -> Sistema -> Rendimiento -> Memoria virtual. Marcamos la casilla "permitir especificar la configuración de memoria virtual" y ponemos como mínimo 2'5 veces el tamaño de memoria RAM que tenemos. P.ej.- 2GB de RAM --> 5GB de tamaño de archivo de intercambio.
  2. Linux
    • Si escribimos "cat /proc/meminfo" obtenemos los datos relativos a la memoria de nuestro sistema.
    • En el directorio /proc/sys/vm podemos cambiar parámetros relativos a la memoria virtual, por ejemplo para aumentar el rendimiento en sistemas que tengan una carga de lecturas/escrituras elevada (servidores de archivos, de bases de datos, etc)
      • dirty_background_ratio: permite reducir la cantidad de datos almacenados en memoria, manteniendo la consistencia de los datos mediante escrituras más frecuentes en disco. Indicado para sistemas con mucha cantidad de memoria, pero un sistema de E/S muy lento.

        dirty_ratio: indicado cuando las aplicaciones están bloqueándose continuamente en sus escrituras a disco.

        dirty_expire_centisecs: Test lowering, but not to extremely low levels. Attempting to speed how long pages sit dirty in memory can be accomplished here, but this will considerably slow average I/O speed because of how much less efficient this is. This is particularly true on systems with slow physical I/O to disk. Because of the way the dirty page writing mechanism works, trying to lower this value to be very quick (less than a few seconds) is unlikely to work well. Constantly trying to write dirty pages out will just trigger the I/O congestion code more frequently.

        dirty_writeback_centisecs: Leave alone. The timing of pdflush threads set by this parameter is so complicated by rules in the kernel code for things like write congestion that adjusting this tunable is unlikely to cause any real effect. It's generally advisable to keep it at the default so that this internal timing tuning matches the frequency at which pdflush runs.

Para más información: http://www.westnet.com/~gsmith/content/linux-pdflush.htm


Ejercicio de autoevaluación 3.6 - Buscar comparativas entre diferentes filesystems y sacar conclusiones sobre su adecuación para una tarea en particular.

En este enlace viene una comparativa muy interesante entre sistema de ficheros FAT 32, NTFS y ext3: http://84.77.121.254/esi/sistemas%20operativos/_0708%2013%20Comparativa%20Fat32%20NTFS%20EXT3.pdf

Ejercicio de autoevaluación 3.7 -

Consultar los parámetros físicos de los discos duros del sistema personal, y decir si la configuración maestro/esclavo que se está usando es la más adecuada.
Linux diferencia entre un disco duro maestro a un disco duro esclavo. También diferencia entre un cdrom maestro a un cdrom esclavo y según lo que Linux encuentre, le dará un nombre u otro. Todos los dispositivos en Linux empezaran con el nombre HDx, donde x puede ser, a, b, c, d etc, exceptuando la disquetera, que será fd0.

Interfaz primaria:
  • Maestro (Ya sea disco duro o lector cdrom) = hda
  • Esclavo (Ya sea disco duro o lector cdrom) = hdb

Interfaz secundaria:
  • Maestro (Disco o cdrom) = hdc
  • Esclavo (Disco o cdrom) = hdd

Con fdisk -l obtenemos información acerca de nuestro, y con hdparm -I /dev/sda obtenemos la configuración detallada de nuestros discos. En mi caso sólo tengo un disco duro con varias particiones

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 1 18169 145942461 7 HPFS/NTFS
/dev/sda2 18438 19457 8193150 83 Linux
/dev/sda3 18425 18437 104422+ 83 Linux
/dev/sda4 18170 18424 2048287+ 82 Linux swap / Solaris

Consultar en internet o en los manuales del sistema operativo cuáles son los parámetros relativos al subsistema de entrada/salida modificables por el usuario y administrador, y decir qué posible impacto pueden tener en las prestaciones del sistema.


En primer lugar un artículo muy interesante sobre como una determinada configuración de ahorro de energía en portátiles puede acortar la vida de nuestro disco duro: http://www.kriptopolis.org/ubuntu-podria-acortar-vida-disco-duro-portatiles

Evaluar para el sistema personal, y la distribución de ficheros que hay, si el tamaño de cluster sería el más adecuado. Evaluar si, cambiando el tamaño de cluster, se ocuparía menos espacio.

  • En Linux, con dumpe2fs podemos examinamos la información del sistema de ficheros. Con un sistema de ficheros ext3 podemos tener tamaños de bloque de 1KB, 2KB, 4KB, 8KB.
  • En NTFS se pueden definir tamaños de cluster que varían de 4KB - 64 KB

Volume Size NTFS

Cluster Size

7 MB–512 MB

512 bytes

513 MB–1,024 MB

1 KB

1,025 MB–2 GB

2 KB

2 GB–2 TB

4 KB



Ejercicio de autoevaluación 3.8 - Sobre un servidor web ya instalado, tratar de optimizar el número de peticiones concurrentes, el tiempo de respuesta, y el ancho de banda.



Ejercicio de autoevaluación 3.9 - Sobre un sistema que se tenga a mano, llevar a cabo una monitorización usando las técnicas explicadas en este tema, proponer mejoras, llevarlas a cabo y volver a monitorizar indicando donde han impactado las mejoras.

http://aullidosdigitales.blogspot.com/2008/05/prctica-5-medicin-de-las-prestaciones.html

0 comentarios:

Publicar un comentario