Mostrando las entradas con la etiqueta windows. Mostrar todas las entradas
Mostrando las entradas con la etiqueta windows. Mostrar todas las entradas

lunes, noviembre 25, 2013

Ejecutando un proceso en múltiples procesadores (Linux y Windows)

Muchas veces tenemos a nuestra disposición un servidor con múltiples procesadores, y nos interesaría poder aprovecharlos ejecutando algunos procesos de manera que utilicen más de un procesador.

Esto lo aprendí en una capacitación de Bonita BPM, donde el instructor nos señalaba que la licencia dependerá de la cantidad de procesadores qeu se desee utilizar.

Para Windows:

Los procesos deberán iniciarse con el comando:
start /AFFINITY [n] [archivo ejecutable]
donde [n] es un número decimal equivalente al binario que indica que procesadores se van a utilizar (ya lo explicaré), y [archivo ejecutable] es el ejecutable del programa (sea un .exe, un .bat u otro).


Respecto al valor de n:

Supongamos que tenemos 4 procesadores, entonces de izquierda a derecha los tendríamos:
CPU3 CPU2 CPU1 CPU0
1 para encendido y 0 para apagado. Entonces si por ejemplo queremos usar los 2 primeros procesadores (CPU0 y CPU1): 0011 binario cuyo equivalente en decimal es 3.

Para Linux:

De manera equivalente, los procesos deberán ejecutarse con el comando:
taskset [COREMASK] [EXECUTABLE]
donde [COREMASK] es el hexadecimal equivalente al binario que indica que procesadores se van a utilizar, y [EXECUTABLE] como se podrán imaginar, es precisamente el ejecutable del programa (.sh, binario u otro).

La única salvedad es que [COREMASK] se pone en notación hexadecimal, por ejemplo 3 en decimal es 0x3 en hexadecimal.

Para el tema del [n] y del [COREMASK] este enlace les puede servir: http://www.vlsm-calc.net/decbinhex.php
 

Fuente:
Si me preguntan, la verdad es que ignoro que efectos adversos pueda tener ejecutar  un proceso de esta manera. Pero nunca está de más saber como hacerlo.

lunes, junio 17, 2013

Escritorios múltiples en Windows al estilo de Compiz

La advertencia habitual: Es probable que este artículo no sea del interés común. Léalo y vea si le interesa (nunca se sabe).

En mi ambiente de trabajo Linux tengo un Compiz ligeramente personalizado.
4 escritorios dispuestos en una "pared" de 2x2.

  • La esquina superior derecha me muestra las ventanas abiertas
  • La esquina inferior izquierda me muestra la pared de escritorios
  • La combinación Control+Alt+Flecha Derecha me desplaza al escritorio siguiente
  • La combinación Control+Alt+Flecha Derecha me desplaza al escritorio anterior
  • Los botones laterales de mi mouse funcionan igual que las combinaciones de teclas antes mencionadas


En la oficina estoy condenado a utilizar Windows (de hecho Windows 8 :-S ), y mi idea era poder tener algo similar, que no consumiera demasiados recursos extra.

Ya había explorado un poco el tema de los escritorios múltiples sin encontrar una solución decente, hasta que repetí la búsqueda y encontré el programa Dexpot.
Provee las mismas funcionalidades de Compiz, salvo por los efectos visuales, y la configuración de teclas.

La configuración de teclas quise manejarla utilizando los controladores de mi mouse, un descontinuado A4Tech X-750F, y su software Smart-X7, sin embargo Windows 8 se mostró reacio a aceptar las configuraciones que indiqué.
Realizando una nueva búsqueda llegue al programa X-Mouse Button Control (no confundir con el XMBC, que es una media center).

Con ese programa es muy fácil configurar las acciones para los distintos botones del ratón, de hecho lo que hice fue simplemente mapear los botones adicionales a los atajos de teclado.



Lo mejor de todo es que funciona, y no hay una pérdida sustancial de rendimiento en mi máquina (esto puede variar de una máquina a otra, dependerá de las especificaciones de hardware).

miércoles, noviembre 16, 2011

Comandos *nix para archivos de texto

Hace poco me enfrenté al siguiente problema, una aplicación desarrollada para una importante empresa internacional de confites realiza una descarga de información desde una base de datos. Ya que el desarrollo fue ad-hok, los archivos de descarga inicial de datos quedaban con líneas en blanco cada ciertos intervalos. Esto se generaba ya que estos archivos son resultado de una concatenación de consultas parciales más pequeñas.
Ya que los colegas manifestaron una ineptitud imposibilidad informática (ni les explico mi cara, mi respuesta, y mi indignación al respecto) para eliminar las líneas en blanco, el problema debí resolverlo yo.

Esto es plataforma Ms Windows, utilizando las GNU Utils, que son herramientas de línea de comandos para *nix (Unix y Linux, en sus diversos sabores).
Cualquiera de estos enlaces les sirve:


Cuento corto, terminé haciendo una llamada a un .bat con el comando sed:
@echo Limpiando archivosed.exe "/^$/d" %1 > %1.delete@exit 1 

De aquí vamos a desprender algunos comandos relevantes:

  • sed.exe "/^$/d" archivo > archivo2sirve para eliminar las líneas en blanco del archivo. Los que tengan algún tipo de familiaridad con vi (el editor de textos para hombres en *nix), o con expresiones regulares, reconocerán el patrón:
    • ^$cadena que empieza y termina inmediatamente (^ empieza, $ termina), sin nada entremedio. Esto es una línea vacía (sólo por si no lo hubieran notado)
    • /ddelete, ie borrar, es decir borra la línea (¡BRILLANTE! no se cómo no me han llevado los rusos)
    • archivo > archivo2 : le indica al comando que opere sobre archivo y redirija los resultados a archivo2. Si archivo2 existiera previamente, este será sobreescrito.
  • wc -l archivo : Cuenta el total de líneas de un archivo de texto
  • grep -c "^$" archivo : cuenta las líneas vacías que hay dentro del archivo.
Y cualquier duda al respecto pueden revisar los manuales de cada comando (con man comando (nótese man de manual)), o la ayuda correspondiente con comando --help ó comando -h . Incluso hay veces que ejecutar el comando sin parámetros da un pincelazo de como se usa cada instrucción.


miércoles, octubre 26, 2011

Instalación base de datos Ingres

Estoy haciendo algunos experimentos y mediciones de rendimiento de bases de datos en plataformas de inteligencia de negocios (puntualmente Pentaho), y después de leer un poco instalé Ingres.

Supuestamente Ingres, y su versión comercial Vectorwise, son bases de datos pensadas para la inteligencia de negocios, cubos, reportería, cruces de tablas, etc.

La instalación en Windows es bastante plug & play, click, siguiente, aceptar, siguiente, siguiente, siguiente.

Por otro lado, la instalación en Linux es más compleja, pero podemos hacerla infinitamente más simple siguiendo los siguientes pasos:
  1. Crear un usuario ingres, con privilegios de root y línea de comandos bash (una cosa de gustos solamente)
  2. Crear el home de ingres en /home/ingres y obviamente cambiar el propietario a ingres con
    chown -R ingres:ingres /home/ingres
  3. Ejecutar el instalador rápido ingres_express_install.sh . La instalación estándar pregunta paso a paso, y la verdad es que si requieren ese nivel de precisión en la configuración, no le van a hacer asco a leer la documentación de Ingres.

La instalación finaliza con la puesta en marcha del servidor.
Los problemas empiezan cuando quieren echar a correr el servidor después de haber reiniciado.

El truco para esto es:
  1. Ingresar a la consola como el usuario ingres
  2. Ejecutar el comando source ~ingres/.ingIIsh
  3. Ejecutar el comando ingstart para iniciar la base de datos, o ingstop para detenerla

El paso importante es la carga de las variables de ambiente con  el archivo .ingIIsh , sin eso no funciona.

Cualquier cosa me preguntan no más.

martes, marzo 15, 2011

Creación de tablas temporales usando un select

Hasta donde se, aplica solamente para MS SQL Server:
select
into
<#tabla_temporal>
from
where

Cada día se aprende algo nuevo (esto de venir del mundo Linux y de los sistemas operativos de verdad)