Difference between revisions of "Maximizing performance (Español)"

From ArchWiki
Jump to: navigation, search
(Sumario)
(One intermediate revision by one other user not shown)
Line 41: Line 41:
 
*Resiserfs: Excelente performance con archivos pequeños. Una buena elección para /var
 
*Resiserfs: Excelente performance con archivos pequeños. Una buena elección para /var
 
*Ext3: Una performance media, pero seguro.
 
*Ext3: Una performance media, pero seguro.
Ext4: Buen rendimiento general. Seguro, tiene algunos problemas con sqlite y algunas otras bases de datos.
+
*Ext4: Buen rendimiento general. Seguro, tiene algunos problemas con sqlite y algunas otras bases de datos.
 
*JFS: Buen desempeño general, muy poco uso del CPU, luego de fallas eléctricas, se recupera muy rápido
 
*JFS: Buen desempeño general, muy poco uso del CPU, luego de fallas eléctricas, se recupera muy rápido
 
*Btrfs: Gran desempeño general (mejor que ext4), seguro (una vez que pase a ser estable). Gran cantidad de características Aun se mantiene bajo un intenso desarrollo, se lo considera inestable. No use este sistema de archivos si no sabe bien lo que esta haciendo, se arriesga a una probable perdida de datos.
 
*Btrfs: Gran desempeño general (mejor que ext4), seguro (una vez que pase a ser estable). Gran cantidad de características Aun se mantiene bajo un intenso desarrollo, se lo considera inestable. No use este sistema de archivos si no sabe bien lo que esta haciendo, se arriesga a una probable perdida de datos.
Line 180: Line 180:
 
Una manea mas automatizada, aunque menos KISS, que se enfoca en [[Preload]].
 
Una manea mas automatizada, aunque menos KISS, que se enfoca en [[Preload]].
 
Todo lo que debe hacer es agregarlo a la lista de DEMONIOS en {{ic|/etc/rc.conf}}. Hará que monitoree los archivos mas usados en el sistema, e ira creando su propia lista para la precarga al inicio.
 
Todo lo que debe hacer es agregarlo a la lista de DEMONIOS en {{ic|/etc/rc.conf}}. Hará que monitoree los archivos mas usados en el sistema, e ira creando su propia lista para la precarga al inicio.
====Readahead====
 
[[Readahead]] es una herramienta que puede hacer un cache de los archivos necesarios y ayudarle en la aceleracion de la carga de los programas.
 
 
 
===Suspender a RAM===
 
===Suspender a RAM===
 
La mejor manera de reducir el tiempo de inicio del sistema es... no iniciar el sistema. Considere [[Suspend to RAM|suspender su sistema en la ram]].
 
La mejor manera de reducir el tiempo de inicio del sistema es... no iniciar el sistema. Considere [[Suspend to RAM|suspender su sistema en la ram]].

Revision as of 03:45, 3 August 2013

Lo básico

Conoce tu sistema

La mejor manera de optimizar el sistema es encontrar los cuellos de botella, son subsistemas que limitan el desempeño general. Usualmente pueden ser identificados conociendo las especificaciones del sistema, pero hay algunas indicaciones básicas:

  • Si la computadora se vuelve lenta cuando grandes aplicaciones corren. Como cuando LibreOffice y Firefox, son corridas a la vez, es probable que la cantidad de RAM es insuficiente. Para verificar la RAM disponible, use este comando, y observe la linea que comienza con +/-buffers:
$free -m
  • Si el inicio es realmente lento, y si las aplicaciones toman demasiado tiempo en cargar la primera vez, pero cargan bien luego, probablemente el disco rígido sea demasiado lento. La velocidad de un disco rígido puede ser medidas usando el comando hdparam:
$ hdparm -t /dev/harddrive

Esa es la velocidad pura de lectura, definitivamente no es una prueba de rendimiento valida, pero un valor superior a los 40MB/s ( asumiendo que el dispositivo fue testeado mientras estaba ocupado) debe ser considerado un valor decente en el desempeño del sistema.

  • Si la carga del CPU es consistente aunque haya RAM disponible, entonces disminuir el uso del CPU debería ser una de las prioridades. La carga del CPU puede ser monitoreada de varias maneras, por ejemplo usando el comando top:
$top
  • Si las únicas aplicaciones que demoran son las que usan Direct Rendering, significa que están usando la placa de video, como los reproductores de video y los juegos, mejorar la performance de video debería ayudar. Para esto debemos verificar si el Direct Rendering esta activado. No ayudara el comando glxinfo:
$ glxinfo | grep direct

Lo primero a hacer

La manera mas simple y eficiente de mejorar el desempeño general es correr aplicaciones y un entorno liviano.

Compromiso

Casi toda optimizacion acarrea inconvenientes. Las aplicaciones livianas usualmente vienen con menos características, algunos ajustes pueden desencadenar en un sistema inestables o simplemente requerir tiempo para implementarlos y mantenerlos. Esta pagina tratara de resaltar esos inconvenientes, pero el juicio final lo debe hacer el usuario.

Test de rendimiento

Los efectos de la optimizacion son en su mayoría difíciles de juzgar. Sin embargo pueden ser medidos con tests de rendimiento

Dispositivos de almacenamiento

Eligiendo y optimizando es sistema de archivos

Elegir el mejor sistema de archivos para un sistema especifico es muy importante por que cada uno tiene su fuerte. La guiá para principiantes da un pequeño sumario de los mas populares.

Sumario

  • XFS: Excelente performance con archivos grandes. Lento con archivos pequeños. Una buena elección para /home
  • Resiserfs: Excelente performance con archivos pequeños. Una buena elección para /var
  • Ext3: Una performance media, pero seguro.
  • Ext4: Buen rendimiento general. Seguro, tiene algunos problemas con sqlite y algunas otras bases de datos.
  • JFS: Buen desempeño general, muy poco uso del CPU, luego de fallas eléctricas, se recupera muy rápido
  • Btrfs: Gran desempeño general (mejor que ext4), seguro (una vez que pase a ser estable). Gran cantidad de características Aun se mantiene bajo un intenso desarrollo, se lo considera inestable. No use este sistema de archivos si no sabe bien lo que esta haciendo, se arriesga a una probable perdida de datos.

Opciones de montaje

Las opciones de montaje le ofrecen una manera sencilla de aumentar la velocidad sin formatear. Pueden ser usadas por medio del comando mount:

$ mount -o opcion1,opcion2 /dev/partición /mnt/partición

Para hacerlas permanentes, debe modificar /etc/fstab y hacer que queden de esta manera;

/dev/partición /mnt/partición tipo_de_partición opcion1,opcion2 0 0

Un par de opciones que mejoran el rendimiento en casi todo sistema de archivos es {Codeline|noatime,nodiratime}}. El primero es parte del conjunto de la ultima (el cual se aplica solo a los directorios. noatime se aplica tanto a carpetas como a directorios, en algunos casos raros, por ejemplo si usa mutt puede causar problemas menores. En vez se puede usar realtime, (realtime esta por defecto en kernels >2.6.30)

Ext3

Mire Ext3 Filesystem Tips.

Ext4

Mire Ext4 wiki page.

JFS

Mire JFS Filesystem.

XFS

Para una velocidad optima, cree un sistema de archivos XFS con estas opciones:

$ mkfs.xfs -l internal,lazy-count=1,size=128m -d agcount=2 /dev/partición

Una opción especifica de XFS que aumentara el rendimiento es logbufs=8.

#/etc/fstab
LABEL=XFSHOME /home xfs noatime,logbufs=8 0 1

Reiserfs

La opción de montaje {{Codelinedata=writeback}} aumenta la velocidad, pero puede ocasionar que los datos se corrompan durante un fallo eléctrico. La opción notail incrementa el espacio usado por el sistema de archivos en aproximadamente un 5%, pero también aumenta el desempeño general. También se puede reducir el uso del disco poniendo el registro(journal) y los datos en discos separados. Esto se debe hacer cuando se crea el sistema de archivos:

$ mkreiserfs –j /dev/hda1 /dev/hdb1

Reemplace /dev/hda1 con la particion reservada para el registro, y /dev/dhb1 para los datos. Puede aprender mas sobre reiserfs en este articulo.

BTRFS

Btrfs is un nuevo sistema de archivos que ofrece desfragmentacion en linea (en el momento que se usa), modo optimizado para discos SDD, edición de snapshots, cambio del tamaño de la particion sin perdida de datos y otras características mas. Btrfs todavía esta en etapa de desarrollo y esta disponible en el kernel (posee la marca de experimental). Puede ver m,as información en la pagina de btrfs.

mkinitcpio.conf para btrfs

Cuando btrfs se no se usa como raíz, los módulos y las dependencias son cargadas cuando son requeridas. Para un sistema raíz, debe asegurarse de cargarlas en la ramdisk de inicio. El modulo de btrfs depende del modulo libcrc32c. Puede agregar crc32c en la linea de modulos de /etc/mkinitcpio.conf, de esta manera:

MODULES="crc32c libcrc32c zlib_deflate btrfs"

Para evitar los errores como "unknown symbol" cuando carga el modulo de btrfs. Mire tambien mkinitcpio-btrfs.

Comprimiendo /usr

Una manera de aumentar la velocidad de lectura de los discos es comprimiendo los datos, lo que deriva en menos datos a leer, pero también significa un aumento del uso del CPU. Algunos sistemas de archivos soportan una compresión transparente, es lo mas notable de btrfs y reiserfs4, pero el radio de compresión esta limitado por los bloques de 4k. Una buena alternativa es comprimir /usr en un archivo squashfs. Con bloques de 64K(128k), como se explica en este hilo del foro de Gentoo. Lo que este tutorial explica básicamente es como comprimr /usr dentro de un sistema de archivos squashfs comprimido. Para luego montado con aufs. De esta manera se ahora mucho espacio, usualmente dos tercios del tamaño original de /usr y las aplicaciones cargan rápido. Sin embargo, cada vez que una aplicación es instalada o reinstalada, esta se escribe descomprimida, entonces /usr debe ser recomprimido periódicamente. Squashfs se encuentra en el kernel y aufs2 esta en el repositorio extra, así que no se necesita una recompilacion del kernel lo que hace util al kernel por defecto. Dado que la guia esta vinculada a Gentoo, los siguientes comandos describen los pasos para Arch. Básicamente debemos instalar dos paquetes para hacerlo funcionar:

# pacman -S aufs2 squashfs-tools

Esto nos instalara los módulos de aufs y algunas herramientas para el manejo de squashfs. Ahora necesitamos algunos directorios extra donde almacenar los archivos de /usr como solo-lectura y otro directorio para almacenar los datos que cambien respecto a la ultima compresión, con permisos de escritura:

# mkdir -p /squashed/usr/{ro,rw}

Siempre se debe hacer una actualización del sistema antes de comprimir /usr. Si usa prelink, debe hacer un prelink completo antes de crear el archivo. Ahora es momento de comprimir /usr:

# mksquashfs /usr /squashed/usr/usr.sfs -b 65536

Estos parámetros son los sugeridos por el tutorial de Gentoo, pero puede haber un cierto margen de mejor con las opciones descriptas en aquí. Para que se monte junto con la carpeta( que tenia permisos de escritura) es necesario editar fstab:

# nano /etc/fstab

Agregue estas lineas:

/squashed/usr/usr.sfs   /squashed/usr/ro   squashfs   loop,ro   0 0 
usr    /usr    aufs    udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0

Ya debería ser posible reiniciar. El autor original sugiere eliminar todo el contenido del viejo directorio de /usr, pero podría causar algunos problemas si algo se estropea luego de la compresión. Es mas seguro dejar los viejos archivos para tener un respaldo.

Hay un bash script que se diseño para automatizar el proceso de recompresion. Algunas opciones pueden ser no correlativas para Arch.

Tuning for an SSD

Trucos para maximizar el rendimiento de discos SSD

CPU

La única manera directa de aumentar el rendimiento del CPU es aumentar la velocidad del reloj (Overclock). Esto es complicado y riesgoso, y no se recomienda a nadie exceptuando a los expertos. La mejor manera de acelerar el reloj es desde la BIOS.

Una manera de modificar la performance es usar [ http://lkml.org/lkml/2009/9/6/136%7C los parches de conl kolivas' para el kernel], reemplazan completamente al Completely Fair Scheduler (CFS) por el Brain Fuck Scheduler (BFS).

Los PKGBUILDS del kernel que incluyen el parche BFS pueden ser instalados desde AUR o desde Unofficial_User_Repositories. Revise respectivamente las paginas de linux-ck y linux-ck wiki , kernel26-bfs o kernel26-pf para mas información sobre los parches adicionales.

Note: BFS/CK fue diseñado para escritorios/laptops, no pasa servidores. Bajaran la latencia y funcionan bien con CPUs o menos. Con Kolivas siguiere configurar los Hertz a 1000. Para mas información, revise http://ck.kolivas.org/patches/bfs/bfs-faq.txt BFS FAQ] y ck patches.

Verynice

Verynice es un DEMONIO, disponible en https://aur.archlinux.org/packages.php?ID=6403 AUR], para ajuste dinámico de los niveles de prioridad en los ejecutables. Esto representa cuan favorecido sera por los recursos del CPU. Simplemente defina a los ejecutables por cuan importante es su respuesta, como X o las aplicaciones multimedia, como l“goodexe” en /etc/verynice.conf. Los ejecutables que se les quiera dar baja prioridad, deben ser definidos como “badexe”. Estas priorizaciones le darán grandes beneficios cuando el sistema este muy cargado.

Ulatencyd

Ulatency es un DEMONIO que controla como el Kernel gasta sus recursos en los procesos que se estan ejecutando. Usa cgroups dinámicos para darle al Kernel consejos y limitaciones sobre los procesos.

Red

Revise estas recomendaciones generales.

Graficos

Xorg.conf configuration

El rendimiento gráfico depende en gran medida de la configuración del archivo /etc/X11/xorg.conf. Hay tutoriales para placas Nvidia, ATI e Intel. Configuraciones erróneas harán que Xorg deje de funcionar.

Driconf

Driconf es una pequeña utilidad que le permitirá cambiar la configuración de direct rendering para los drivers de codigo abierto. Habilitar HyperZ aumentara el desempeño drásticamente.


Overclock del GPU

Realizar un overclock sobre las tarjetas gráficas esta mucho mas documentado que sobre CPU, hay buena cantidad de aplicaciones que le premitiran ajustar el reloj del GPU al vuelo. Para los usuarios de ATI rovclock, para los de Nvidia, nvclock puede ser encontrado en el repositorio extra. Los usuarios de Intel pueden instalar GMABooster desde AUR.

Los cambios pueden hacerse permanentes ejecutando los comandos apropiados luego de que X inicie, por ejemplo agregándolos al archivo ~/.xinitrc. Por seguridad se recomienda aplicar estos cambios solo cuando sean necesarios.

RAM y swap

valor de Intercambio

El valor de intercambio representa cuando el kernel prefiere la swap a la RAM. Configurarlo a un valor muy bajo, significa que el kernel casi siempre usara la RAM. Lo que mejorara el desempeño, para hacer esto debemos agregar estas lineas al archivo /etc/sysctl.conf:

vm.swappiness=20
vm.vfs_cache_pressure=50

Para probarlo, revisa este articulo(ingles).

Compcache

Compcache, también es conocido como el modulo zramk, su función es crear un dispositivo swap en RAM y comprimirlo. Significa que esa parte de la ram podrá almacenar mayor información, pero usara mas CPU. Pero es muchísimo mas rápido que cualquier swap de disco rigido. Si el sistema usa a menudo la swap, esto mejorar su desempeño de manera drastica. Zram no es estable aun, asi que debe usarse con precaucion.

 modprobe zram

También es posible ( y se recomienda) decirle a compache que vuelva a usar la swap del disco rígido, cuando la de la RAM este completa. Para esto hay que definir un dispositivo en el archivo de configuración, este no debe estar en uso cuando zram es iniciado, debe ser removido de /etc/fstab !

Tambien es una buena manera para reducir los ciclos de lectura/escritura del disco, hacer que la swap este en un disco SSD.

Montando /tmp en RAM

Esto hará el sistema un poquito mas rápido, pero consumirá algo de RAM. Esto también reduce los ciclos de lectura/escritura, y es una buena opción usar un SSD o si tiene demasiada RAM. Simplemente agregue estas lineas al archivo /etc/fstab y reinicie:

tmpfs /tmp tmpfs defaults,noatime,nodev,nosuid,mode=1777 0 0

Usando la RAM de la placa de video

En el desagradable caso de que tenga poca RAM y buena RAM de video, puede usar la ultima como swap. Revise Swap on video ram.

Precarga

Precargar es seleccionar y mantener determinados archivos en RAM. El uso practico es precargar aplicaciones para que estar carguen rápido, por que leerlas de la RAM es siempre mas rápido que desde el disco rígido. Sin embargo, parte de su RAM sera dedicada a esta tarea, pero no mas de la que utilizaría la aplicación abierta. Por lo tanto la precarga es optima para cargar las aplicaciones que usa con mas frecuencia, como Firefox o Libreoffice.

Go-preloada

Go-preload es un pequeño DEMONIO creado en el | Foro de Gentoo.. Para usarlo, debe ejecutar este comando por cada programa que se desee precargar, en un terminal_

# gopreload-prepare program

Luego, como dice, presione enter cuando el programa este completamente cargado. Esto agregara una lista de archivos necesitados por el programa en /usr/share/gopreload/enabled. Para cargar todas las listas al iniciop, simplemente agregue gopreload a la lista de DEMONIOS en /etc/rc.conf. Para deshabilitar la carga de un programa, remueva la lista apropiada en /usr/share/gopreload/enabled, o muevala a /usr/share/gopreload/disabled.

Preload

Una manea mas automatizada, aunque menos KISS, que se enfoca en Preload. Todo lo que debe hacer es agregarlo a la lista de DEMONIOS en /etc/rc.conf. Hará que monitoree los archivos mas usados en el sistema, e ira creando su propia lista para la precarga al inicio.

Suspender a RAM

La mejor manera de reducir el tiempo de inicio del sistema es... no iniciar el sistema. Considere suspender su sistema en la ram.

Opciones del kernel para el inicio

Algunas opciones le permitirán reducir el tiempo en que se carga el kernel. La opción fastboot usualmente le quitaran aproximadamente un segundo. También, si ve un mensaje como Waiting 8s for device XXX", puede agregar rootdelay=1 para que se reduzca el tiempo de espera, pero debera tener cuidado, puede dañar el inicio del sistema. Estas opciones se especifican en /boot/grub/menu.lst o /etc/lilo.conf, dependido que cargador use.

Kernel modificado

Compilar un kernel modificado reducirá el tiempo de inicio y el uso de memoria, pero puede ser largo, complicado y hasta aveces doloroso. Usualmente no vale la pena. Pero es muy interesante y una buena experiencia de aprendizaje. Si realmente le interesa, puede revisar esto.

Trucos específicos de las aplicaciones

Firefox

El articulo sobre Firefox ofrece algunos buenos trucos; los mas notables son [Firefox Tips and Tweaks#Improve rendering by disabling pango |deshabilitar pango]], Limpiar la base de datis SQLite, y usar  firefox-pgo. Revise cambien: Aumentar la velocidad de Firefox usando tmpfs, and Apagando el ati-pishing.

Gcc/Makepkg

Revisar Ccache.

Mkinitcpio

El usuario josh_ del foro realizo algunos cambios en el script de mkinitcpio, haciéndolo dos o tres veces mas rapido. Mientras que esperamos que estos cambios sean implementados, podes obtenerlos desde aquí.

LibreOffice

Revise Aumentando la velocidad de libreoffice.

Pacman

Revise Mejorando el rendimiento de pacman.

SSH

Revise Aumentando la velocidad de SSH.

Laptops

Revise Laptop.