Usando sar puede monitorear el rendimiento de varios subsistemas de Linux (CPU, memoria, E/S...) en tiempo real tiempo.
Con sar, también puede recopilar todos los datos de rendimiento de forma continua, almacenarlos y realizar análisis históricos para identificar cuellos de botella.
Sar es parte del paquete sysstat.
Este artículo explica cómo instalar y configurar el paquete sysstat (que contiene la utilidad sar) y explica cómo monitorear las siguientes estadísticas de rendimiento de Linux usando sar.
- Uso colectivo de CPU
- Estadísticas de CPU individuales
- Memoria utilizada y disponible
- Intercambio de espacio utilizado y disponible
- Actividades generales de E/S del sistema
- Actividades de E/S de dispositivos individuales
- Estadísticas de cambio de contexto
- Ejecutar cola y cargar datos promedio
- Estadísticas de la red
- Informar datos sar desde un momento específico
Esta es la única guía que necesitará para la utilidad sar. Por lo tanto, marque esto para futuras referencias.
Yo. Instalar y configurar Sysstat
Instalar paquete Sysstat
Primero, asegúrese de que la última versión de sar esté disponible en su sistema. Instálelo usando cualquiera de los siguientes métodos dependiendo de su distribución.
sudo apt-get install sysstat (or) yum install sysstat (or) rpm -ivh sysstat-10.0.0-1.i586.rpm
Instalar Sysstat desde la fuente
Descargue la última versión desde la página de descarga de sysstat.
También puede usar wget para descargar
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2 tar xvfj sysstat-10.0.0.tar.bz2 cd sysstat-10.0.0 ./configure --enable-install-cron
- Crea /etc/rc.d/init.d/sysstat
- Crea enlaces adecuados desde los directorios /etc/rc.d/rc*.d/ a /etc/rc.d/init.d/sysstat para iniciar sysstat automáticamente durante el proceso de arranque de Linux.
- Por ejemplo, /etc/rc.d/rc3.d/S01sysstat se vincula automáticamente a /etc/rc.d/init.d/sysstat
Después de ./configure, instálelo como se muestra a continuación.
make make install
Una vez instalado, verifique la versión de sar usando “sar -V”. La versión 10 es la versión estable actual de sysstat.
$ sar -V sysstat version 10.0.0 (C) Sebastien Godard (sysstat orange.fr)
Finalmente, asegúrese de que sar funcione. Por ejemplo, lo siguiente le da al sistema estadísticas de CPU 3 veces (con un intervalo de 1 segundo).
$ sar 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Utilidades parte de Sysstat
Las siguientes son las otras utilidades de sysstat.
- sar recopila y muestra TODAS las estadísticas de actividades del sistema.
- sadc significa "colector de datos de actividad del sistema". Esta es la herramienta de back-end de sar que realiza la recopilación de datos.
- sa1 almacena las actividades del sistema en un archivo de datos binarios. sa1 depende de sadc para este propósito. sa1 se ejecuta desde cron.
- sa2 crea un resumen diario de las estadísticas recopiladas. sa2 se ejecuta desde cron.
- saf puede generar informes sar en CSV, XML y varios otros formatos. Use esto para integrar datos sar con otras herramientas.
- iostato genera CPU, estadísticas de E/S
- mpstat muestra las estadísticas de la CPU.
- pidstat informa estadísticas basadas en el ID del proceso (PID)
- nfsiostat muestra las estadísticas de E/S de NFS.
- cifsiostato genera estadísticas CIFS.
Este artículo se centra en los fundamentos de sysstat y la utilidad sar.
Recopilar las estadísticas de sar mediante el trabajo cron:sa1 y sa2
Cree un archivo sysstat en el directorio /etc/cron.d que recopilará los datos históricos de sar.
# vi /etc/cron.d/sysstat */10 * * * * root /usr/local/lib/sa/sa1 1 1 53 23 * * * root /usr/local/lib/sa/sa2 -A
Si instaló sysstat desde la fuente, la ubicación predeterminada de sa1 y sa2 es /usr/local/lib/sa. Si instaló utilizando el método de actualización de su distribución (por ejemplo:yum, up2date o apt-get), podría ser /usr/lib/sa/sa1 y /usr/lib/sa/sa2.
Nota :Para comprender las entradas de cron, lea Linux Crontab:15 impresionantes ejemplos de trabajos de cron.
/usr/local/lib/sa/sa1
- Esto se ejecuta cada 10 minutos y recopila datos sar para referencia histórica.
- Si desea recopilar estadísticas sar cada 5 minutos, cambie */10 a */5 en el archivo /etc/cron.d/sysstat anterior.
- Esto escribe los datos en el archivo /var/log/sa/saXX. XX es el día del mes. El archivo saXX es un archivo binario. No puede ver su contenido abriéndolo en un editor de texto.
- Por ejemplo, si hoy es el día 26 del mes, sa1 escribe los datos sar en /var/log/sa/sa26
- Puede pasar dos parámetros a sa1:intervalo (en segundos) y recuento.
- En el ejemplo de crontab anterior:sa1 1 1 significa que sa1 recopila datos sar 1 vez con un intervalo de 1 segundo (por cada 10 minutos).
/usr/local/lib/sa/sa2
- Esto se ejecuta cerca de la medianoche (a las 23:53) para crear el informe de resumen diario de los datos del sar.
- sa2 crea el archivo /var/log/sa/sarXX (tenga en cuenta que es diferente del archivo saXX creado por sa1). Este archivo sarXX creado por sa2 es un archivo ascii que puede ver en un editor de texto.
- Esto también eliminará los archivos saXX que tengan más de una semana. Por lo tanto, escriba un script de shell rápido que se ejecute todas las semanas para copiar los archivos /var/log/sa/* en algún otro directorio para realizar análisis de datos sar históricos.
II. 10 ejemplos prácticos de uso de Sar
Hay dos formas de invocar sar.
- sar seguido de una opción (sin especificar un archivo de datos saXX). Esto buscará el archivo de datos saXX del día actual e informará los datos de rendimiento que se registraron hasta ese momento para el día actual.
- sar seguido de una opción, y adicionalmente especificando un archivo de datos saXX usando la opción -f. Esto informará los datos de rendimiento para ese día en particular. es decir, XX es el día del mes.
En todos los ejemplos a continuación, explicaremos cómo ver ciertos datos de rendimiento para el día actual. Para buscar un día específico, agregue "-f /var/log/sa/saXX" al final del comando sar.
Todo el comando sar tendrá lo siguiente como primera línea en su salida.
$ sar -u Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU)
- Linux 2.6.18-194.el5PAE:versión kernel de Linux del sistema.
- (dev-db):el nombre de host donde se recopilaron los datos sar.
- 26/03/2011:la fecha en que se recopilaron los datos del sar.
- _i686_:la arquitectura del sistema
- (8 CPU):número de CPU disponibles en este sistema. En sistemas de múltiples núcleos, esto indica el número total de núcleos.
1. Uso de CPU de TODAS las CPU (sar -u)
Esto proporciona el uso acumulativo de CPU en tiempo real de todas las CPU. “1 3” informa cada 1 segundo un total de 3 veces. Lo más probable es que te concentres en el último campo "% inactivo" para ver la carga de la CPU.
$ sar -u 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Las siguientes son algunas variaciones:
- sar -u Muestra el uso de la CPU para el día actual que se recopiló hasta ese momento.
- sar -u 1 3 Muestra el uso de la CPU en tiempo real cada 1 segundo durante 3 veces.
- sar -u TODOS Igual que "sar -u" pero muestra campos adicionales.
- sar -u TODO 1 3 Igual que “sar -u 1 3” pero muestra campos adicionales.
- sar -u -f /var/log/sa/sa10 Muestra el uso de la CPU para el día 10 del mes del archivo sa10.
2. Uso de CPU de CPU o núcleo individual (sar -P)
Si tiene 4 núcleos en la máquina y desea ver qué están haciendo los núcleos individuales, haga lo siguiente.
“-P ALL” indica que debería mostrar estadísticas para TODOS los núcleos individuales.
En el siguiente ejemplo, en la columna "CPU", 0, 1, 2 y 3 indican los números de núcleo de CPU correspondientes.
$ sar -P ALL 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:34:12 PM CPU %user %nice %system %iowait %steal %idle 01:34:13 PM all 11.69 0.00 4.71 0.69 0.00 82.90 01:34:13 PM 0 35.00 0.00 6.00 0.00 0.00 59.00 01:34:13 PM 1 22.00 0.00 5.00 0.00 0.00 73.00 01:34:13 PM 2 3.00 0.00 1.00 0.00 0.00 96.00 01:34:13 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
“-P 1” indica que debería mostrar estadísticas solo para el 2.º núcleo. (Tenga en cuenta que el número de núcleo comienza desde 0).
$ sar -P 1 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:36:25 PM CPU %user %nice %system %iowait %steal %idle 01:36:26 PM 1 8.08 0.00 2.02 1.01 0.00 88.89
Las siguientes son algunas variaciones:
- sar -P TODO Muestra el uso de la CPU desglosado por todos los núcleos para el día actual.
- sar -P TODOS 1 3 Muestra el uso de la CPU en tiempo real para TODOS los núcleos cada 1 segundo durante 3 veces (desglosado por todos los núcleos).
- sar -P 1 Muestra el uso de CPU para el núcleo número 1 para el día actual.
- sar -P 1 1 3 Muestra el uso de la CPU en tiempo real para el núcleo número 1, cada 1 segundo durante 3 veces.
- sar -P TODO -f /var/log/sa/sa10 Muestra el uso de la CPU desglosado por todos los núcleos para los 10 días del mes del archivo sa10.
3. Memoria libre y usada (sar -r)
Esto informa las estadísticas de la memoria. “1 3” informa cada 1 segundo un total de 3 veces. Lo más probable es que te centres en "kbmemfree" y "kbmemused" para la memoria libre y usada.
$ sar -r 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:28:06 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 07:28:07 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:08 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:09 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 Average: 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204
Las siguientes son algunas variaciones:
- sar -r
- sar -r 1 3
- sar -r -f /var/log/sa/sa10
4. Espacio de intercambio utilizado (sar -S)
Esto informa las estadísticas de intercambio. “1 3” informa cada 1 segundo un total de 3 veces. Si "kbswpused" y "%swpused" están en 0, entonces su sistema no está intercambiando.
$ sar -S 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:31:06 AM kbswpfree kbswpused %swpused kbswpcad %swpcad 07:31:07 AM 8385920 0 0.00 0 0.00 07:31:08 AM 8385920 0 0.00 0 0.00 07:31:09 AM 8385920 0 0.00 0 0.00 Average: 8385920 0 0.00 0 0.00
Las siguientes son algunas variaciones:
- sar-S
- sar -S 1 3
- sar -S -f /var/log/sa/sa10
Notas:
- Utilice "sar -R" para identificar la cantidad de páginas de memoria liberadas, utilizadas y almacenadas en caché por segundo por el sistema.
- Utilice "sar -H" para identificar las páginas gigantes (en KB) que se utilizan y están disponibles.
- Use "sar -B" para generar estadísticas de paginación. es decir, número de KB paginados dentro (y fuera) del disco por segundo.
- Use "sar -W" para generar estadísticas de intercambio de páginas. es decir, cambio de página de entrada (y salida) por segundo.
5. Actividades generales de E/S (sar -b)
Esto informa estadísticas de E/S. "1 3" informes por cada 1 segundo un total de 3 veces.
Los siguientes campos se muestran en el siguiente ejemplo.
- tps:transacciones por segundo (esto incluye lectura y escritura)
- rtps:lectura de transacciones por segundo
- wtps:escritura de transacciones por segundo
- pan/s:bytes leídos por segundo
- bwrtn/s:bytes escritos por segundo
$ sar -b 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:56:28 PM tps rtps wtps bread/s bwrtn/s 01:56:29 PM 346.00 264.00 82.00 2208.00 768.00 01:56:30 PM 100.00 36.00 64.00 304.00 816.00 01:56:31 PM 282.83 32.32 250.51 258.59 2537.37 Average: 242.81 111.04 131.77 925.75 1369.90
Las siguientes son algunas variaciones:
- sar -b
- sar -b 1 3
- sar -b -f /var/log/sa/sa10
6. Actividades de E/S de dispositivo de bloque individual (sar -d)
Para identificar las actividades por los dispositivos de bloque individuales (es decir, un punto de montaje específico, LUN o partición), use "sar -d"
$ sar -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM dev8-0 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev8-1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev120-64 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-65 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-0 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-96 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM dev120-97 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
En el ejemplo anterior, "DEV" indica el dispositivo de bloque específico.
Por ejemplo:"dev53-1" significa un dispositivo de bloque con 53 como número mayor y 1 como número menor.
El nombre del dispositivo (columna DEV) puede mostrar el nombre real del dispositivo (por ejemplo:sda, sda1, sdb1, etc.), si usa la opción -p (letra bonita) como se muestra a continuación.
$ sar -p -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM sda 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sda1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sdb1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sdc1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sde1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sdf1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sda2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM sdb2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
Las siguientes son algunas variaciones:
- sar -d
- sar -d 1 3
- sar -d -f /var/log/sa/sa10
- sar -p -d
7. Mostrar cambio de contexto por segundo (sar -w)
Esto informa el número total de procesos creados por segundo y el número total de cambios de contexto por segundo. "1 3" informes por cada 1 segundo un total de 3 veces.
$ sar -w 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 08:32:24 AM proc/s cswch/s 08:32:25 AM 3.00 53.00 08:32:26 AM 4.00 61.39 08:32:27 AM 2.00 57.00
Las siguientes son algunas variaciones:
- sar -w
- sar -w 1 3
- sar -w -f /var/log/sa/sa10
8. Informes de cola de ejecución y promedio de carga (sar -q)
Esto informa el tamaño de la cola de ejecución y el promedio de carga del último minuto, 5 minutos y 15 minutos. "1 3" informes por cada 1 segundo un total de 3 veces.
$ sar -q 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 06:28:53 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 06:28:54 AM 0 230 2.00 3.00 5.00 0 06:28:55 AM 2 210 2.01 3.15 5.15 0 06:28:56 AM 2 230 2.12 3.12 5.12 0 Average: 3 230 3.12 3.12 5.12 0
Las siguientes son algunas variaciones:
- sar -q
- sar -q 1 3
- sar -q -f /var/log/sa/sa10
9. Reportar estadísticas de red (sar -n)
Esto informa varias estadísticas de la red. Por ejemplo:cantidad de paquetes recibidos (transmitidos) a través de la tarjeta de red, estadísticas de fallas de paquetes, etc. "1 3" informes por cada 1 segundo un total de 3 veces.
sar -n KEYWORD
PALABRA CLAVE puede ser una de las siguientes:
- DEV:muestra las estadísticas vitales de los dispositivos de red para eth0, eth1, etc.,
- EDEV:muestra estadísticas de fallas de dispositivos de red
- NFS:muestra las actividades del cliente NFS
- NFSD:muestra las actividades del servidor NFS
- SOCK:muestra los sockets en uso para IPv4
- IP:muestra el tráfico de red IPv4
- EIP:muestra errores de red IPv4
- ICMP:muestra el tráfico de red ICMPv4
- EICMP:muestra errores de red ICMPv4
- TCP:muestra el tráfico de red TCPv4
- ETCP:muestra errores de red TCPv4
- UDP:muestra el tráfico de red UDPv4
- SOCK6, IP6, EIP6, ICMP6, UDP6 son para IPv6
- TODO:muestra toda la información anterior. La salida será muy larga.
$ sar -n DEV 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:11:13 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 01:11:14 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:11:14 PM eth0 342.57 342.57 93923.76 141773.27 0.00 0.00 0.00 01:11:14 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10. Informar datos Sar utilizando la hora de inicio (sar -s)
Cuando ve los datos sar históricos del archivo /var/log/sa/saXX usando la opción "sar -f", muestra todos los datos sar para ese día específico a partir de las 12:00 a. m. de ese día.
Usando la opción “-s hh:mi:ss”, puede especificar la hora de inicio. Por ejemplo, si especifica "sar -s 10:00:00", mostrará los datos de sar a partir de las 10 a. m. (en lugar de a partir de la medianoche) como se muestra a continuación.
Puede combinar la opción -s con otra opción sar.
Por ejemplo, para informar el promedio de carga el 26 de este mes a partir de las 10 a. m. de la mañana, combine las opciones -q y -s como se muestra a continuación.
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 ... 11:20:01 AM 0 127 5.00 3.00 3.00 0 12:00:01 PM 0 127 4.00 2.00 1.00 0
No hay opción para limitar el tiempo final. Solo tienes que ser creativo y usar el comando principal como se muestra a continuación.
Por ejemplo, a partir de las 10 a. m., si desea ver 7 entradas, debe canalizar la salida anterior a "head -n 10".
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 10:30:01 AM 0 127 3.00 5.00 2.00 0 10:40:01 AM 0 127 4.00 2.00 1.00 2 10:50:01 AM 0 127 3.00 5.00 5.00 0 11:00:01 AM 0 127 2.00 1.00 6.00 0 11:10:01 AM 0 127 1.00 3.00 7.00 2
Hay mucho más que cubrir en la supervisión y el ajuste del rendimiento de Linux. Solo estamos comenzando. Más artículos por venir en la serie de rendimiento.
Artículos anteriores de la serie de supervisión y ajuste del rendimiento de Linux:
- Introducción a la supervisión y ajuste del rendimiento de Linux
- 15 ejemplos prácticos de comandos superiores de Linux