| Red Hat Enterprise Linux 4: Introducción a la administración de sistemas | ||
|---|---|---|
| Anterior | Capítulo 4. Memoria física y virtual | Siguiente |
Debido a la complejidad inherente de un sistema operativo con memoria virtual en demanda, la supervisión de los recursos relacionados con la memoria bajo Red Hat Enterprise Linux, pueden ser un poco confusos. Por lo tanto, lo mejor es comenzar con las herramientas más directas y partir de allí.
Usando free es posible obtener una vista general concisa (quizás hasta un poco simplistica) de la utilización de la memoria principal y de intercambio. He aquí un ejemplo:
total used free shared buffers cached
Mem: 1288720 361448 927272 0 27844 187632
-/+ buffers/cache: 145972 1142748
Swap: 522104 0 522104
|
Podemos ver que este sistema tiene 1.2GB de RAM, de los que solamente 350MB estan realmente en uso. Como se puede esperar para un sistema con esta cantidad de RAM disponible, no se utiliza nada de los 500MB de memoria de intercambio.
Compare ese ejemplo con el que sigue:
total used free shared buffers cached
Mem: 255088 246604 8484 0 6492 111320
-/+ buffers/cache: 128792 126296
Swap: 530136 111308 418828
|
Este sistema tiena alrededor de 256MB de RAM, la mayoría de la cual está en uso, dejando solamente 8MB libres. Más de 100MB de los 512MB de swap estan en uso. Aún cuando el sistema está ciertamente más limitado en términos de memoria que el primer sistema, para determinar si esta limitación de memoria está causando problemas de rendimiento, tenemos que investigar un poco más.
vmstat, aún cuando es más críptico que free, tiene el beneficio de que muestra más que simplemente las estadísticas de utilización de memoria. He aquí la salida de vmstat 1 10:
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
2 0 0 111304 9728 7036 107204 0 0 6 10 120 24 10 2 89
2 0 0 111304 9728 7036 107204 0 0 0 0 526 1653 96 4 0
1 0 0 111304 9616 7036 107204 0 0 0 0 552 2219 94 5 1
1 0 0 111304 9616 7036 107204 0 0 0 0 624 699 98 2 0
2 0 0 111304 9616 7052 107204 0 0 0 48 603 1466 95 5 0
3 0 0 111304 9620 7052 107204 0 0 0 0 768 932 90 4 6
3 0 0 111304 9440 7076 107360 92 0 244 0 820 1230 85 9 6
2 0 0 111304 9276 7076 107368 0 0 0 0 832 1060 87 6 7
3 0 0 111304 9624 7092 107372 0 0 16 0 813 1655 93 5 2
2 0 2 111304 9624 7108 107372 0 0 0 972 1189 1165 68 9 23
|
Durante esta muestra de 10 segundos, la cantidad de memoria libre (el campo free) varía de alguna forma, y hay un poco de E/S relacionada con la memoria de intercambio (los campos si y so), pero en general, este sistema está funcionando bien. Sin embargo, se duda cuánta carga adicional de trabajo pueda manejar, dada la utilización actual de memoria.
Cuando se investiga sobre cuestiones relacionadas a la memoria, a menudo es necesario determinar cómo el subsistema de memoria virtual de Red Hat Enterprise Linux está utilizando el sistema de memoria. Usando sar, es posible examinar este aspecto de rendimiento del sistema con muchos más detalles.
Revisando el informe de sar -r, podemos examinar la utilización de memoria principal y de intercambio más de cerca:
Linux 2.4.20-1.1931.2.231.2.10.ent (pigdog.example.com) 07/22/2003
12:00:01 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached
12:10:00 AM 240468 1048252 81.34 0 133724 485772
12:20:00 AM 240508 1048212 81.34 0 134172 485600
…
08:40:00 PM 934132 354588 27.51 0 26080 185364
Average: 324346 964374 74.83 0 96072 467559
|
Los campos kbmemfree y kbmemused muestran las estadísticas típicas de memoria libre y en uso, mostrando el porcentage de memoria utilizada en el campo %memused. Los campos kbbuffers and kbcached muestran cuántos kilobytes de memoria son asignados a la memoria intermedia (buffers) y a la caché de datos global del sistema.
El campo kbmemshrd siempre es cero para los sistemas usando el kernel 2.4 de Linux (tal como Red Hat Enterprise Linux).
Se han truncado las líneas de este informe para que encajen en la página. He aquí el resto de cada línea, con la marca de tiempo agregada a la izquierda para facilitar la lectura:
12:00:01 AM kbswpfree kbswpused %swpused
12:10:00 AM 522104 0 0.00
12:20:00 AM 522104 0 0.00
…
08:40:00 PM 522104 0 0.00
Average: 522104 0 0.00
|
Para la utilización de la memoria de intercambio, los campos kbswpfree y kbswpused muestran la cantidad de espacio de intercambio libre y utilizado, en kilobytes, con el campo %swpused mostrando el espacio de intercambio utilizado como un porcentaje.
Utilice el informe sar -W para conocer un poco más sobre la actividad de memoria de intercambio. A continuación se muestra un ejemplo:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM pswpin/s pswpout/s
12:10:01 AM 0.15 2.56
12:20:00 AM 0.00 0.00
…
03:30:01 PM 0.42 2.56
Average: 0.11 0.37
|
Observe que, en promedio, hay tres veces menos páginas traídas desde la memoria de intercambio (pswpin/s) que las que se devuelven a esta (pswpout/s).
Para entender mejor cómo se utilizan las páginas, consulte el informe sar -B:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM pgpgin/s pgpgout/s activepg inadtypg inaclnpg inatarpg
12:10:00 AM 0.03 8.61 195393 20654 30352 49279
12:20:00 AM 0.01 7.51 195385 20655 30336 49275
…
08:40:00 PM 0.00 7.79 71236 1371 6760 15873
Average: 201.54 201.54 169367 18999 35146 44702
|
Aquí podemos determinar cuántos bloques por segundo son paginados desde el disco (pgpgin/s) y paginados de vuelta al disco (pgpgout/s). Estas estadísticas sirven como un barómetro para la actividad general de la memoria virtual.
Sin embargo, se puede aprender mucho más examinando los otros campos en este informe. El kernel de Red Hat Enterprise Linux marca todas las páginas como activas o inactivas. Como su nombre lo implica, las páginas activas son las que están siendo utilizadas de alguna manera (como páginas de procesos o de memoria intermedia, por ejemplo), mientras que las inactivas no. Este informe de ejemplo muestra que la lista de páginas activas (el campo activepg) promedia aproximadamente 660MB[1].
El resto de los campos en este informe se concentran en la lista inactiva — páginas que, por alguna razón o la otra, no se han utilizado recientemente. El campo inadtypg muestra cuántas páginas inactivas estan sucias (dirty o modificadas) y requieren ser escritas al disco. Por otro lado, el campo inaclnpg, muestra cuántas páginas inactivas están limpias (clean o sin modificar) y no necesitan ser escritas a disco.
El campo inatarpg representa el tamaño deseado de la lista inactiva. Este valor es calculado por el kernel de Linux y tiene un tamaño tal que la lista inactiva permanezca lo suficientemente grande para actuar como un fondo para propósitos de reemplazo de páginas.
Utilice el informe sar -R para datos adicionales sobre el status de páginas (específicamente, la frecuencia con la que las páginas cambian de estado). He aquí un ejemplo de este informe:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM frmpg/s shmpg/s bufpg/s campg/s
12:10:00 AM -0.10 0.00 0.12 -0.07
12:20:00 AM 0.02 0.00 0.19 -0.07
…
08:50:01 PM -3.19 0.00 0.46 0.81
Average: 0.01 0.00 -0.00 -0.00
|
Las estadísticas sobre este informe particular sar, son únicas, en el sentido de que pueden ser positivas, negativas o cero. Cuando son positivas, el valor indica la tasa a la que se estan incrementando este tipo de páginas. Si es negativo, el valor indica la tasa a la que se estan reduciendo este tipo de páginas. Un valor de cero indica que las páginas de este tipo no se están incrementando ni disminuyendo.
En este ejemplo, la última parte muestra que se asignan un poco más de tres páginas por segundo desde la lista de páginas libres (el campo frmpg/s) y se añade casi una página por segundo a la página caché (el campo campg/s). La lista de páginas utilizadas como memoria de intercambio (el campo bugpg/s) gana aproximadamente una página cada dos segundos, mientras que la lista de páginas de memoria compartidas (el campo shmpg/s) ni gana ni pierde páginas.
| [1] | El tamaño de página bajo Red Hat Enterprise Linux en el sistema x86 utilizado en este ejemplo, es de 4096 bytes. Los sistemas basados en otras arquitecturas pueden tener diferentes tamaños de páginas. |