viernes, 25 de abril de 2008

Traduccion: The Case of the System Process CPU Spikes

Gracias a Ramiro Encinas tenemos traducido este interesante articulo de markrussinovich

Como seguramente has podido suponer por las entradas anteriores en mi blog y en otros artículos, me gusta saber exactamente que hace mi sistema. Quiero saber si un proceso consume demasiada CPU, provocando agobios en memoria, o demasiado trabajo en disco. A parte de mantener mis ordenadores funcionando correctamente, vigilarlos a veces me ayuda a encontrar problemas de rendimiento y fiabilidad en el código de terceros para Windows.

Lo primero que hago es configurar Process Explorer para que se ejecute automáticamente cuando inicio una sesión de Windows. Siempre que configuro un ordenador nuevo, añado un acceso directo a Process Explorer en la carpeta de Inicio de mi perfil incluyendo el parámetro /minimize. De esta forma, Process Explorer se ejecuta oculto con un icono en la barra de notificación donde muestra una pequeña vista histórica del nivel de actividad de la CPU. Como quiero tener información detallada sobre los procesos del sistema a parte de los míos, también especifico el parámetro /e en Vista, y con esto Windows presenta una ventana del UAC que me permite dar a Process Explorer permisos administrativos.

Como siempre tengo un ojo puesto en los picos de CPU del icono de la barra de notificación, que muestra en verde el consumo de CPU del modo usuario (aplicaciones) y en rojo del modo kernel (sistema operativo y drivers), en los último meses he identificado varios problemas. En esta entrada veremos como identificar un problema con un driver de terceros y como llegar a un fix del fabricante, utilizando Process Explorer y Kernrate.

Hace unos meses atrás empezé a utilizar un portátil, y notaba a veces lentitud en el sistema. El icono de Process Explorer confirmaba mi percepción visualizando un mini-gráfico de actividad roja en la CPU. Cuando ubiqué el ratón en el icono, éste abrió una ventana indicando el nombre del proceso que estaba consumiendo más CPU, y en este caso mostraba el proceso de Sistema (System) como responsable:
Las primeras veces que ví el problema, al poco se resolvía sólo y no me daba tiempo a investigarlo. En cualquier caso pude ver, mediante la ventana de Información del Sistema de Process Explorer, que los picos de CPU eran bastante significativos:

El proceso de Sistema es especial porque no tiene un archivo ejecutable como los otros procesos. Sólo funciona para hilos del sistema operativo como el administrador de memoria, el administrador de caché, y otros subsistemas, así como para hilos de los drivers. Estos hilos se ejecutan completamente en modo kernel, y por eso el consumo de CPU por parte del proceso de Sistema aparece en rojo en los gráficos de Process Explorer.

Sospeché que un driver de un tercero era la causa del problema, por eso el primer paso en mi investigación fué localizar el hilo que más CPU consumía para llegar al culpable. Empezé a buscar los picos de CPU y cuando ví uno hice doble click en el proceso del Sistema y fuí a la pestaña "Threads" para ver los hilos. Allí ví el pico de CPU:


El prefijo “ntkrnlpa.exe” en cada dirección de inicio de un hilo lo identifica como un hilo del sistema operativo, y éstos eran los que más consumo de CPU tenían (Ntkrnlpa.exe es la versión cargada de kernel en sistemas cliente de 32-bit que no se ejecuta en memoria protegida o en sistemas servidores que necesitan direccionar más de 4GB de memoria). Debido a que antes configuré Process Explorer para recuperar los símbolos de los ejecutables del sistema operativo del servidor público de símbolos de Microsoft, la lista de hilos también mostraba los nombres de los hilos de las funciones de inicio. Los hilos más activos comienzan con la función ExpWorkerThread, que quiere decir que son hilos que trabajan para los drivers y para el sistema. En lugar de crear hilos dedicados que consumen recursos de memoria, los drivers y el sistema pueden lanzar trabajos al contenedor compartido worker threads del sistema operativo.

Por desgracia, sabiendo que los worker threads son los responsables del gran consumo de CPU, no pude identificar la raíz de la causa. Necesitaba saber cuáles son las funciones llamadas por los worker threads, porque esas funciones pueden estar dentro de un driver o de un componente del sistema operativo en las cuales están corriendo los hilos. Una forma de ver lo que ha ejecutado el hilo es mirar la pila del hilo con Process Explorer. La pila es una región de memoria que guarda las llamadas a las funciones y Process Explorer te muestra la pila del hilo cuando seleccionas un hilo y pulsas en el botón "Stack" o haces doble click en un hilo. Sin embargo, en Vista se produce este error cuando intentas mirar la pila de los hilos en el proceso de Sistema:

El proceso de Sistema es un tipo especial de proceso llamado "proceso protegido" que no permite ningún tipo de acceso a sus hilos o memoria. Los procesos protegidos existen para dar servicio a la Administración de Derechos Digitales (DRM), y con esto, los proveedores de contenido de alta definición pueden guardar claves de cifrado para sus contenidos reduciendo el riesgo de que un usuario con privilegios administrativos pueda utilizar herramientas anti-DRM para llegar al proceso y leer las claves.

Con este intento fallido, tenía que encontrar otra forma de ver lo que estaban haciendo los worker threads. Para ello utilicé KernRate, una herramienta de línea de comandos de descarga gratuita de Microsoft. KernRate puede capturar los procesos en modo usuario y los hilos en modo kernel. KernRate utiliza un recolector que ya utilizó la primera versión de Windows NT, que registra las direcciones únicas que la CPU ejecuta en un momento dado. Cuando paras la captura, KernRate recupera la información del kernel, mapea las direcciones de los drivers cargados, y puede incluso utilizar el motor de símbolos para mostrar los nombres de las funciones.

No son necesarios los símbolos si estamos identificando a un driver, por eso ejecuté KernRate sin ningún parámetro. A pesar del hecho de que no existe una versión oficial de KernRate para Vista, la versión para Windows XP, Kernrate_i386_XP.exe funciona en Vista 32-bit (también puedes utilizar la herramienta xperf recientemente liberada para realizar operaciones similares - xperf requiere Vista o Server 2008 y también funciona en versiones de 64-bit). Ejecuté la captura cuando la CPU estaba dando picos de consumo y entonces con Ctrl+C salieron los resultados en la ventana de la consola:
En primer lugar los picos estaban en el kernel, y en segundo lugar estaba un driver que no conocía: b57nd60x. La mayoría de los archivos de los drivers están en %systemroot%\system32\drivers, y podría abrir esa carpeta para ver las propiedades del archivo, pero tenía abierto Process Explorer y era más rápido comprobar el fabricante del driver y la versión desde la vista de los DLL del proceso de Sistema. La vista de los DLL mostraba las DLLs y los archivos mapeados dentro del espacio de direcciones de los procesos en modo usuario, y para el proceso de Sistema mostraba los módulos del kernel, incluyendo los drivers cargados en el sistema. La vista de las DLL revelaba que el driver era de la tarjeta de red del portátil, fabricado por Broadcom y con versión 10.10:

Ahora que descubrí que el driver de Broadcom era el causante del gran consumo de CPU, el siguiente paso fue ver si había alguna versión nueva disponible. Fuí a la página de descarga de Dell para mi sistema, pero no encontré nada. Sospechando que lo que descubrí tendría que haber ocurrido ya antes, decidí notificarlo a Broadcom. Utilicé los contactos del equipo de sistemas hardware aquí en Microsoft para encontrar el representante del driver de Broadcom y escribirle un correo electrónico detallando la descripción de los síntomas y mi investigación. Él reenvió el email al desarrollador del driver, quien no conocía la causa y me dijo que en unos días me enviaría una versión depurada del driver con símbolos para que KernRate capturara las funciones del driver que provocaban los picos de CPU. El problema ocurrió de nuevo unos días más tarde y le envié de vuelta los resultados de KernRate con la información de las funciones.

El desarrollador me explicó que los resultados revelaban que el driver no interactuaba de forma eficiente con el bus PCIe cuando procesaba consultas espefícicas y el problema parecía provocarse por mi recargada configuración de hardware. Me dió un driver nuevo para probar y después de pocas semanas monitorizando mi portátil confirmé que el problema estaba resuelto. El driver actualizado todavía no está colocado en el sitio de soporte de Dell, pero espero que lo publiquen dentro de poco. Otro caso cerrado, esta vez con Process Explorer, KernRate, y un desarrollador de drivers de Broadcom.


lunes, 14 de abril de 2008

El Arte de la Intrusión - Kevin Mitnick

Descripcion:
El arte de la intrusión ha sido incluso más dificil de escribir que nuestro último libro. En lugar de utilizar nuestros talentos creativos combinados para desarrollar historias y anécdotas que ilustren los peligros de la ingeniería social y qué pueden hacer las empresas para mitigar los riesgos, Bill Simon y yo hemos trabajado principalmente sobre las entrevistas de ex hackers, phreakers y hackers convertidos a profesionales de la seguridad. Queríamos escribir un libro que fuera a un mismo tiempo una novela de misterio y un manual que abra los ojos a las empresas y les ayude a proteger su información confidencial y sus recursos informáticos. Creemos firmemente que sacando a la luz las metodologías y las técnicas más comunes que utilizan los hackers para penetrar en sistemas y redes, podemos ejercer influencia en todo el ámbito para abordar correctamente los riesgos y las amenazas que suponen estos adversarios audaces.

Contenido:
- Intrusión en los casinos por un millón de dólares
- Cuando los terroristas entran por la puerta
- Los hackers de la prisión de texas
- Policías y ladrones
- El Robin Hood hacker
- La sabiduría y la locura de las auditorías de seguridad
- Su banco es seguro, ¿no?
- Su propiedad intelectual no está segura
- En el continente
- Ingenieros sociales: cómo trabajan y cómo detenerlos
- Anécdotas breves.

sábado, 12 de abril de 2008

Solicitud de colaboradores!!!!

Les hago la invitacion a formar parte de este blog colaborando en lo q se pueda, veo q muchas personas de Mexico, España, Colombia, Inglaterra, Argentina, Peru y muchos mas estan pendiente del blog por eso es el motivo ya q por los estudios no tengo mucho tiempo de escribir algo.

Si alguno esta dispuesto a colaborar q me lo haga saber.

Espero comentarios.

Saludos.

jueves, 10 de abril de 2008

Revista TuxInfo número 5


Contenido:
  • Multimedia; Avidemux la gran solución.
  • Principiantes; de Windows a Linux III parte.
  • Servidores; Discos del Infierno, Introducción a LVM.
  • Laboratorio; Analizamos Firefox 3 Beta, ¿Qué es Supekaramba? ¿Qué es un Theme?
  • Distribuciones; Linux Mint “Daryna” KDE Community Edition La elegancia hecha GNU/Linux.
  • Laboxpress; GimpShop, SoundJuicer, SuperGrub Disk, Foxy Tunes.
  • Nota de tapa; Python el lenguaje todo terreno del software libre.
  • Programación; Seguimos con el curso de C cuarta entrega, Desarrollo de páginas web en Linux.
  • Juegos; Warzone 2100 RTS futurista.
  • Opinión; No, Canon NO.

miércoles, 9 de abril de 2008

PC ACTUAL - 203 Enero 2008

Aqui les dejo una revista muy buena para que nos enteremos de lo nuevo.

domingo, 6 de abril de 2008

Bases de datos II - Comando alter el visual fox pro 6



Contenido

1. Que es alter?

2. Como modificar el tipo de dato y la longitud

3. Como agregar un nuevo campo

4. Como eliminar un campo de una tabla

Ya vimos el comando create, que nos sirve para crear bases de datos, tablas. Ahora continuaremos con otro comando DDL(lenguaje de definición de datos) Alter.

Alter: con este comando es posible modificar la estructura de un objeto que en este caso es la tabla (registros y campos) , agregar y quitar campos y por ultimo nos permite modificar el tipo de dato. Por ahora quizás no este muy claro, pero al ver lo ejemplos lo asimilaran.

Veremos unos ejemplos:

Modificar el tipo de dato o la longitud

Sintaxis:

Alter table |nombre de la tabla| alter |campo a modificar| Tipo (longitud,dec)

Tomando como base el del post anterior:

Create table usuarios (nombre c(40),;

paginaweb c(40), fecha_naci date,;

correo c(40))

Creamos la tabla, pero queremos modificar la longitud del campo nombre a 50, entonces quedaría asi:

Alter Table usuarios alter nombre c(50)

Si quisieras cambiar el tipo de dato a numérico:

Alter Table usuarios alter nombre n(7,2)

N(7,2) = especificamos q es de tipo numérico y además damos la longitud(7) y que acepte 2 decimales, aquí es donde le causa dificultades algunos.

En este caso el valor límite es 9999.99

El punto y los decimales es parte de la longitud, si quisiéramos un valor q no pase de 100 entonces la longitud es:

N(5,2) = 99.99

Pero si solo queremos enteros

N(2) = 99

Pero como ese campo es de nombre es ilógico que sea numérico, entonces lo dejaremos de carácter

Alter Table usuarios alter nombre c(50)

Para ver la estructura de la tabla tecleamos Display structure, si es solo una pero si hay mas seccionamos la tabla

Select |nombre de la tabla|

Display structure

Con esta línea ya hemos modificado parte de la estructura de una tabla, pero que pasa si quisiéramos agregar un campo?

Agregar un nuevo campo

Tomando el ejemplo de la creación de la tabla, ahora vamos agregar un nuevo campo, tipo de dato y longitud

Create table usuarios (nombre c(50),;

paginaweb c(40),fecha_naci date,;

correo c(40))

Sintaxis:

Alter table |nombre de la tabla| add |nombre del campo| tipo (longitud,dec)

Add: adicionar o agrega un campo

Agregaremos el campo país tipo de dato carácter y una longitud de 30

Alter Table usuarios add país c(30)

Display structure

Con esta línea ya hemos creado un nuevo campo en la tabla usuarios

Eliminar un campo de una tabla

Sintaxis:

Alter table |nombre de la tabla| drop |nombre del campo|

Tomando el ejemplo anterior

Create table usuarios (nombre c(50),;

paginaweb c(40),fecha_naci date,;

correo c(40),país c(30))

Vamos a eliminar el campo nombre

Alter table usuarios drop nombre

Con eso ya no esta el campo nombre, este comando es sencillo pero peligroso,

Ahora q eliminamos el campo nombre vamos agregar un campo Nick, ya q es muy raro q las personas den su verdadero nombre, pero por eso existen los Nick de tipo carácter y una longitud de 20

Create table usuarios (paginaweb c(40),;

fecha_naci date,correo c(40),país c(30))

Como ya vimos como agregar será fácil.

Alter table usuarios add Nick c(20)

Por ahora es todo, toca q estudiar un poco xD

miércoles, 2 de abril de 2008

Creación de Bases de datos en Visual Fox pro 6.0

Un lector del blog me pidió que escribiera algo acerca de las bases de datos orientado a fox pro, así que aquí se los dejo.

Contenido

1. Que es una Base de datos

2. Creación de una base de datos

3. ¿Que es una tabla?

4. Tipos de tabla

5. Creación de tablas

1. ¿Que es una base de datos? Es un contenedor de tablas el cual permite la agrupación, organización y manipulación de los datos.

En DDL (lenguaje de definición de datos) existen ciertos comandos:

Create

Alter

Drop

Truncate

Estos los iremos viendo poco a poco.

2. Creacion de una base de datos

Existen 2 formas, en modo grafico y por medio de comandos, en esta ocasión lo haremos con comandos.

La sintaxis es la siguiente

Create database |Nombre de la bases de datos|

Create database infornext

Con este comando hemos creado una base de datos con el nombre de “usuarios”, ahora ya podemos crear tablas, vistas, índices los q se crean con el lenguaje DDL

Para abrir una BD escribimos la siguiente sintaxis.

Open database |nombre de la BD|

Open database infornext

Cuando se abre una BD puede abrirse de muchas formas

a. Exclusive : Abre la BD pero a desde ese momento la BD solo estará accesible al usuario que la abrió, este valor es por defecto, si no especificamos ninguna forma esta se abre en modo exclusivo.

Open database infornext ---à se abre en modo exclusivo

b. Shared : Se abre la BD en modo compartido, desde ese momento cualquier usuario puede acceder a ella.

Open database infornext shared

c. NoUpdate: Si una BD se abre como NoUpdate no se guardaran los cambios, es decir será solo lectura pero si se omite el comando se abrirá en modo lectura y escritura.

Open datase infornext noupdate

3. ¿Que es una tabla?

Son archivos que están almacenadas en la BD y que contiene mucha información de acuerdo a su metodología, y estas pueden ser asociadas o libres.

4. Tipos de tablas:

4.1 Asociadas: Se les llama asociadas porque están dentro de una base de datos, al estar en la BD no pierde atributos.

4.2 Libres: Estas tablas son independientes de la BD(No son parte) Al contrario q las asociadas estas pierden atributos.


5. Creación de tablas

En este puntos tenemos q saber que campos y tipos de datos llevara la tabla.

Los campos y los registros son los elementos fundamentales de una tabla

Vamos hacer una tabla para el registro de los usuarios que visitan infornext, que tenga los siguientes campos:

Nombre, paginaweb, fecha_naci y correo

Sintaxis:

Create table |Nombre de la tabla|

Create table usuarios (nombre c(40),paginaweb c(40),;
fecha_naci date, correo c(40))

Nota: Si en una línea no cabe todo el código entonces escribimos punto y coma ( ,; )

Ahora tenemos creada una tabla q tiene los campos de nombre de tipo carácter(c), pagina web, fecha de nacimiento de tipo date(fecha).

OJO: Para crear una tabla asociada la DB tiene que estar abierta

Para la próxima le tocara el turno a otro comando del DDL q es el alter.

También lo dejo en pdf

Creación de Bases de datos en Visual Fox pro 6.0

Saludos.