Si tiene Vd. un servidor, una pasarela, o un cortafuegos muy ocupado, debería asegurarse de prevenir la falta de memoria en varias partes del núcleo del sistema, descritas más abajo.
La página de manual de options(4) trata sobre las opciones que aquí se comentan.
Una opción que puede necesitar cambiar para un servidor, pasarela, o cortafuegos muy ocupado es NMBCLUSTERS. Esta opción controla el tamaño del mapa de clusters mbuf del núcleo. Si recibe en su máquina mensajes como "mb_map full", necesita incrementar este valor. Si en una interfaz de red el tráfico se para sin un motivo aparente, puede ser también un signo de que necesita incrementar este valor. Un valor razonable en el porte para i386 con la mayoría de interfaces de ethernet de 100Mbps (no importa cuántas tenga la máquina) es 8192.
La velocidad de E/S del disco es un hecho significativo en la velocidad total de su máquina. Se vuelve cada vez más importante cuando su máquina es la anfitriona en un entorno multiusuario (usuarios de todas clases, desde los que ingresan de modo interactivo hasta los que la usan como un servidor de ficheros, o un servidor de web... ). El almacenamiento de datos requiere antención constante, especialmente cuando sus particiones se quedan sin espacio y cuando sus discos fallan. OpenBSD tiene varias opciones para incrementar la velocidad de las operaciones de su disco y para proveer tolerancia a los fallos.
La primera opción es usar ccd(4), el «Controlador de Disco Concatenado» ("Concatenated Disk Driver"). Éste le permitirá unir varias particiones en un sólo disco virtual (y por tanto, podrá hacer que varios discos parezcan uno sólo). Este concepto es similar al de LVM («gestión lógica de volumen»), que se encuentra en muchos Unix comerciales.
Si está funcionando con el núcleo GENERIC, ccd ya está activado. De lo contrario, es posible que necesite añadirlo a la configuración de su núcleo. Para iniciar la configuración de ccd, necesita primero añadir el soporte en su núcleo, con una línea como la siguiente:
pseudo-device ccd 4 # concatenated disk devices
El ejemplo anterior le da hasta 4 dispositivos ccd (discos virtuales). Ahora necesita saber qué particiones de sus discos reales quiere dedicar a ccd. Use disklabel(5) para marcar estas particiones como tipo 'ccd'. En algunas arquitecturas, puede ser que disklabel no le permita hacerlo. En este caso márquelas como 'ffs'.
Si usa ccd para desmontarlo y ganar así rendimiento, note que no obtendrá un rendimiento óptimo a menos que use el mismo modelo de discos con las mismas configuraciones de disklabel.
Edite /etc/ccd.conf y modifíquelo para que quede parecido a esto (para más información sobre la configuración de ccd, mirar en ccdconfig(8)):
# Configuration file for concatenated disk devices # # ccd ileave flags component devices ccd0 16 none /dev/sd2e /dev/sd3ePara que sus cambios hagan efecto, ejecute:
# ccdconfig -CMientras /etc/ccd.conf exista, ccd se configurará a sí mismo automáticamente durante el arranque. Ahora ya tiene un nuevo disco, ccd0, una combinación de /dev/sd2e y /dev/sd3e. Use disklabel sobre el nuevo disco como lo haría normalmente para crear la partición o particiones que quiera usar. No use la partición 'c' como si fuera una partición normal. Asegúrese de que sus particiones utilizables están, como mínimo, un cilindro más allá del comienzo del disco.
Otra solución es raid(4), que le hará usar raidctl(8) para controlar sus dispositivos de raid. En OpenBSD RAID está basado en el porte de NetBSD de Greg Oster del software CMU RAIDframe. OpenBSD tiene soporte para los niveles 0, 1, 4 y 5 de RAID.
Con raid, como con ccd, el soporte debe residir en el núcleo del sistema. A diferencia de ccd, el soporte para RAID no está activado en el núcleo GENERIC, y debe ser compilado en el núcleo (¡el soporte para RAID añade unos 500Kb al tamaño de un núcleo para i386!).
pseudo-device raid 4 # RAIDframe disk device
La configuración de RAID en algunos sistemas operativos es,
cuanto menos, confusa y complicada. No es lo mismo con RAIDframe. Lea
las páginas de manual de
raid(4) y
raidctl(8)
para conocer los detalles completos. Existen muchas opciones y
posibles configuraciones, una explicación en detalle iría
más allá del objetivo de este documento.
Puede hacer que sea tan bajo como el 5% (por definición), o tan alto como el 50% (o más).
El rendimiento de sus aplicaciones depende fuertemente de su sistema operativo y de las facilidades que éste ofrezca. Ésta puede ser, en parte, la razón por la que esté usando OpenBSD. El rendimiento de sus aplicaciones también depende fuertemente de su hardware. Para muchos, el ratio precio/rendimiento de un PC nuevo con un procesador Intel Pentium III o AMD Athlon, es mucho mejor que el ratio precio/rendimiento de una Sun UltraSparc 60. Claro que el precio de OpenBSD no tiene competidor.
Si está pensando en comprar un nuevo PC, tanto si lo va a comprar por piezas o montado al completo, debe asegurarse antes de que va a comprar partes fiables. En el mundo del PC esto no es fácil. Componentes en mal estado, o de escasa fiabilidad pueden hacer que OpenBSD funcione mal o caiga a menudo. El mejor consejo que le podemos ofrecer es que tenga cuidado, que compre marcas y componentes que hayan sido revisadas por una autoridad en la que Vd. confíe. A veces, un ahorro en el precio de un PC puede significar una pérdida en calidad.
Hay algunas cosas que le ayudarán a obtener el rendimiento máximo para su hardware:
En lugar de comprar un disco de 20GB, compre varios de 9GB. Aunque sea más caro, distribuir la carga sobre varios ejes disminuirá el tiempo necesario para acceder a los datos de los discos. Además, con más ejes, obtendrá más fiabilidad y una acceso más rápido a los datos con RAID.
Los discos IDE suelen funcionar a 5400 RPM, y los más nuevos hasta 7200 RPM. Usando discos IDE de alto rendimiento, puede que no sea razonable esperar más de 15 a 20 Mb/s de rendimiento para un sólo disco. Usando discos SCSI de alto rendimiento (discos de 10000 RPM de alto coste), puede obtener rendimientos más altos. Sin embargo, si va a usar discos SCSI de bajo o medio rendimiento, estará malgastando su dinero ya que IDE puede servirle igual o incluso mejor.
Si está montando un servidor y necesita más de 20GB de espacio en disco, tenga en cuenta los discos SCSI. IDE le limita a dos discos por controladora, y el acceso concurrente a estos dos discos puede tener un impacto negativo sobre los resultados de E/S de estos discos. El límite de Wide SCSI es de 15 por controladora. Aunque SCSI sea más caro, la flexibilidad y el rendimiento justifican estos costes en algunos entornos.
Esta opción es válida principalmente para PCs. La mayoría de las otras arquitecturas no ofrecen una elección en el tipo de RAM que puede usar. Varios PCs todavía lo hacen. Obtendrá un rendimiento mejor con SDRAM que con DRAM (SIMMs). Si su sistema tiene soporte para RDRAM o algún otro tipo nuevo de RAM, entonces ya se encuentra un paso por delante...
Paridad añade algo de funcionalidad para ver si los datos en RAM se han corrompido. ECC hace extiende esta funcionalidad e intenta corregir algunos errores de corrupción de bits al vuelo. Esta opción sólo es aplicable a PCs. Algunas máquinas no PC ni siquiera arrancarán con RAM de no paridad. Si no está usando RAM ECC/paridad, puede tener corrupción en sus datos y otras anomalías. Varios fabricantes de «RAM barata para PC» ni siquiera producen la variedad ECC. ¡Esto le ayudará a evitarlos! Los fabricante de PC suelen vender otras líneas de productos, divididas entre «servidores» y «estaciones de trabajo». Los servidores incorporan RAM ECC en su arquitectura. Los fabricantes de estaciones de trabajo Unix ha usado paridad (y ahora ECC) durante varios años en todas sus líneas de productos.
Aunque la mayoría suele evitarlos debido a que son difíciles de configurar y obsoletos, todavía existen muchos. Si está usando el bus ISA para los controladores de su disco o red (o peor aún, para ambos), recuerde que el bus ISA puede ser un embudo para el rendimiento. Si necesita velocidad, busque PCI. Todavía existen algunas tarjetas de bus ISA que funcionan bien, pero la mayoría son tarjetas de sonido y tarjetas de puerto serie.
OpenBSD tiene soporte para una gran cantidad de adaptadoras de red PCI de bajo precio. Estas adaptadoras funcionan muy bien en sistemas caseros, y también en empresas y entornos de investigación medios y pequeños. Pero si necesita un alto rendimiento y un bajo impacto en su servidor, es mejor que compre una adaptadora de red PCI de calidad. Por desgracia, algunas marcas caras de adaptadoras (como las series XL de 3com) no son mucho mejor que las adaptadoras baratas. Una de las adaptadoras favoritas de 10/100Mbps es la Intel EtherExpress PRO/100.
Pregunta: «Yo simplemente ejecuto 'mount -u -o async /' lo que me
permite utilizar cierto paquete.
¿Por qué el montaje
asincrónico no se usa por definición (como lo está
en otros Unix)? ¿No es un modo mucho más simple y por lo
tanto más seguro que de mejorar el rendimiento de algunas
aplicaciones?»
Respuesta: «Los montajes asincrónicos son más rápidos que los montajes sincrónicos, pero también son menos seguros. ¿Qué sucedería si hubiera un fallo eléctrico? ¿O un problema de hardware? La búsqueda de la velocidad no debe sacrificar la fiabilidad y estabilidad del sistema. Más Información en la página de manual de mount(8).»
async Toda E/S al sistema de archivo debería llevarse a cabo de forma asincrónica. Éste es un indicador peligroso de activar, ya que no garantiza que mantendrá una estructura del sistema de archivo consistente en el disco. No debe usar este indicador a menos que esté preparado para recrear el sistema de archivo si su sistema cae. El uso más común de este indicador es el de acelerar restore(8), en donde puede dar un factor de incremento de doble velocidad.
Por otra parte, si está tratando con datos temporales que pueda recrear desde cero después de una caída, puede ganar en velocidad usando una partición separada, que se use sólo para esos datos, montada de forma asincrónica. Si no le importa arriesgar la pérdida de todos los datos en la partición cuando algo vaya mal...
Con monitores multi-sync se puede conseguir que un servidor de X funcione con una resolución aceptable. Si alguien ha intentado ajustar la frecuencia con las utilidades xf86config o XF86Setup, es probable que no haya podido obtener los mejores resultados. Uno de los aspectos más difíciles es precisamente el de lograr que el monitor funcione con la resolución deseada, y conseguir que la frecuencia de barrido vertical se configure como mínimo a 72-75Hz; una frecuencia en la que la pantalla parpadea es mucho menos visible para los humanos. Y al contrario, ¿qué ocurriría si se intentara ajustar con una frecuencia de barrido vertical muy baja? Se puede fijar a 50Hz para que pueda ser capturada en el vídeo sin que parpadee, pero los métodos para llevar esto a cabo no están muy claros con las herramientas y la documentación incluidas en XFree86.
Con las resoluciones que muchos usuarios utilizan con monitores VGA de bajo precio (800x600, 1024x768, 1152x900, 1280x1024), es posible (por lo menos en monitores más nuevos) usar frecuencias de barrido vertical de 85MHz y superiores, y lograr así una imagen extremadamente pulida y clara. El servidor de X de XFree86 dispone un mecanismo que permite describir en detalle el modo de vídeo deseado, y es el ModeLine. Un ModeLine tiene cuatro secciones: un número de una sola cifra para el reloj de pixelación (pixel clock), cuatro cifras para los tiempos de refresco horizontales (horizontal timings), cuatro cifras para los tiempos de refresco verticales (vertical timings), y una sección opcional con una lista de indicadores que especifican otras características del modo (como Interlace, DoubleScan, y muchas otras... que puede ver en detalle en la página de manual de XF86Config(5)).
Generar un ModeLine es cosa de magia negra... pero por suerte existe un guión (script) que lleva a cabo este proceso por usted. Se trata del Colas XFree86 ModeLine Generator. Antes de usarlo necesita conocer los límites de sincronización horizontal y vertical de su monitor. Esta información suele aparecer en el manual de su monitor, o en su defecto en las páginas web del fabricante. Si no lo encontrara en ninguno de estos dos sitios, algunas personas han recopilado listas con la información sobre varios monitores que podrá buscar por Internet.
Pongamos como ejemplo un monitor Dell D1226H. Después de un intensa búsqueda en las páginas de Dell, descubre que la frecuencia de barrido horizontal está entre 30-50KHz, y la vertical entre 50-160Hz. A continuación irá a la página del generador ModeLine e introducirá esta información. Acto seguido deberá especificar la frecuencia de barrido vertical mínima que desea. Cualquier frecuencia por encima de 72Hz producirá un bajo parpadeo. Según vaya incrementando la frecuencia, la imagen en pantalla irá apareciendo más clara.
Con toda esta información, el guión generará un ModeLine para cada una de las resoluciones 4x3 factibles que pueda soportar su monitor, por encima de la frecuencia de barrido vertical mínima que haya introducido. Si alguien introdujera las especificaciones anteriores para Dell y una frecuencia de barrido vertical mínima de 75Hz, el guión le mostraría algo como esto:
ModeLine "320x240" 20.07 320 336 416 448 240 242 254 280 #160Hz ModeLine "328x246" 20.86 328 344 424 456 246 248 260 286 #160Hz ... ModeLine "816x612" 107.39 816 856 1056 1136 612 614 626 652 #145Hz ModeLine "824x618" 108.39 824 864 1064 1144 618 620 632 658 #144Hz ModeLine "832x624" 109.38 832 872 1072 1152 624 626 638 664 #143Hz ... ModeLine "840x630" 109.58 840 880 1080 1160 630 632 644 670 #141Hz ModeLine "848x636" 110.54 848 888 1088 1168 636 638 650 676 #140Hz ... ModeLine "1048x786" 136.02 1048 1096 1336 1432 786 788 800 826 #115Hz ModeLine "1056x792" 136.58 1056 1104 1344 1440 792 794 806 832 #114Hz ModeLine "1064x798" 137.11 1064 1112 1352 1448 798 800 812 838 #113Hz ... ModeLine "1432x1074" 184.07 1432 1496 1816 1944 1074 1076 1088 1114 #85Hz ModeLine "1576x1182" 199.86 1576 1648 2008 2152 1182 1184 1196 1222 #76Hz ModeLine "1584x1188" 198.93 1584 1656 2016 2160 1188 1190 1202 1228 #75Hz
Ahora bien, las especificaciones de este monitor dicen que soporta 1600x1200 @ 75Hz, pero el guión no nos da esa resolución dentro de los 75Hz. Así pues, si de verdad quiere una resolución exacta de 1600x1200, disminuya un poco la frecuencia de barrido vertical mínima... (en el ejemplo la bajaremos a 70Hz):
ModeLine "1592x1194" 197.97 1592 1664 2024 2168 1194 1196 1208 1234 #74Hz ModeLine "1600x1200" 199.67 1600 1672 2032 2176 1200 1202 1214 1240 #74Hz ModeLine "1608x1206" 198.65 1608 1680 2040 2184 1206 1208 1220 1246 #73Hz ModeLine "1616x1212" 197.59 1616 1688 2048 2192 1212 1214 1226 1252 #72Hz ModeLine "1624x1218" 199.26 1624 1696 2056 2200 1218 1220 1232 1258 #72Hz ModeLine "1632x1224" 198.15 1632 1704 2064 2208 1224 1226 1238 1264 #71Hz ModeLine "1640x1230" 199.81 1640 1712 2072 2216 1230 1232 1244 1270 #71Hz ModeLine "1648x1236" 198.64 1648 1720 2080 2224 1236 1238 1250 1276 #70Hz
Aquí podemos ver que el monitor puede soportar 1600x1200 @ 74Hz cuando el ancho de banda (dot clock) se limita a 200MHz. Configure el ancho de banda de acuerdo con los límites definidos por el monitor.
Una vez que ya tenga los ModeLines, póngalos en su fichero /etc/XF86Config. Comente los viejos ModeLines para que pueda usarlos de nuevo si los nuevos no llegaran a funcionar. A continuación escoja la resolución a la que quiere que funcione. Primero averigüe si X está en modo acelerado (suele estarlo con la mayoría de tarjetas de vídeo), para saber cuál de las secciones "Screen" de XF86Config debe modificar. O simplemente modifique todas las secciones "Screen".
Section "Screen"
Driver "Accel"
Device "Primary Card"
Monitor "Primary Monitor"
DefaultColorDepth 32
SubSection "Display"
Depth 32
Modes "1280x1024" "1024x768"
EndSubSection
La primera frecuencia que verá a continuación de la
línea "Modes" será la frecuencia con la que se
iniciará X. Se pueden pasar de una a otra de las frecuencias
que estén en esta lista desde X, pulsando
CTRL-ALT-<->, o CTRL-ALT-<+>. De acuerdo con
la sección anterior, X intentará iniciar en modo de color
de 32 bits (a través de la directiva DefaultColorDepth, sin la
cual iniciaría en modo de color de 8 bits). La primera
resolución que intentará usar será 1280x1024
(siguiendo el orden de la línea "Modes").
Nótese que "1280x1024" sólo es una
clasificación para los valores en ModeLine.
Nótese asimismo que el guión generador de ModeLine dispone de opciones para relajar sus tiempos en monitores más antiguos o más pequeños, y que también tiene la capacidad de proveer ModeLines para resoluciones espec&iactue;ficas. Dependiendo del tipo de hardware que tenga, es posible que no le resulte fácil usarlo con las opciones predefinidas. Si la imagen es demasiado alta, demasiado ancha, o demasiado pequeña, o si está corrida horizontal o verticalmente, y si los controles del monitor no bastan para corregirlo, se puede usar xvidtune(1) para ajustar el ModeLine y sincronizarlo mejor con los tiempos del monitor.
En la mayoría de los monitores modernos no existe un límite fijo para el ancho de banda, por lo que ya no aparecen en las listas de especificaciones. Lo que ocurre es que cuanto más se incrementa el ByN, más borrosa aparece la imagen en pantalla. En este caso puede añadir el ancho de banda de su tarjeta de vídeo (también llamado dotlock) para hacer comprobaciones sin peligro de dañar el monitor, y disminuirlo de forma progresiva en ByN con el fin de obtener una imagen nítida.
Si todo esto le parece complicado e innecesario, es porque en realidad lo es. XFree86 4.0 trata este asunto y hace este proceso mucho más fácil ya que tiene varios modos integrados y es capaz de leer las capacidades de monitores "plug and play" a través DDC y DDC2. Desafortunadamente, XFree86 4.0 todavía no está listo para su uso generalizado debido a que no tiene soporte para muchas tarjetas de vídeo que tienen soporte en XFree86 3.3.
Puede bajarse el guión ("script") "Colas XFree86 ModeLine Generator" desde ftp://koala.inria.fr/pub/Klone/. También debe bajar el intérprete Klone y compilarlo. Está en el directorio de portes como lang/klone. Encontrará los guiones en el subdirectorio scripts/ de la distribución de Klone (el porte los instala en /usr/local/lib/klone/scripts).
Existen dos versiones, una CGI idéntica a la página web de arrriba. La segunda en una versión no-CGI que usará el fichero completo de XF86Config, descodificará las especificaciones que haya introducido en xf86config o XF86Setup para el monitor (piénselo antes, ¿introdujo las especificaciones de su monitor, o simplemente escogió las genéricas?), y configurará los ModeLines existentes de acuerdo con éstas.
[Volver al índice principal] [Sección 10.0 - Administración del sistema] [Sección 12.0 - Para usuarios avanzados]