<< Chapter < Page | Chapter >> Page > |
Después, requiere saber cuánta memoria tiene su sistema. Desafortunadamente, no existe un comando UNIX estándar para eso. En los sistemas RS/6000, /etc/lscfg se lo dice. En una máquina SGI, /etc/hinv lo hace. Muchas implementaciones de UNIX Sistema V tienen un comando /etc/memsize . En un derivado de Berkeley, puede teclear:
% ps aux
Este comando le devuelve un listado de todos los procesos ejecutándose en la máquina. Encuentre el proceso con el valor más grande en la columna
%MEM
. Divida el valor en el campo
RSS
entre el porcentaje de memoria usado, para obtener un valor aproximado de cuánta memoria tiene su máquina:
memory = RSS/(%MEM/100)
Por ejemplo, si el proceso más grande muestra un uso de memoria del 5% y un tamaño de conjunto residente (RSS, resident set size) de 840 KB, su máquina tiene 840000/(5/100) = 16 MB de memoria. ¡También puede usted reiniciar su máquina! Ella le dirá cuánta memoria tiene disponible al arranque. Si la respuesta del comando size muestra un total cercano a la cantidad de memoria que tiene, hay una buena posibilidad de que ocurra intercambio de páginas cuando lo ejecute - especialmente si está realizando otras cosas en la máquina al mismo tiempo.
Sus herramientas de monitoreo de rendimiento del sistema le indican si su programa está realizando intercambio de páginas. Algo de intercambio está bien; los fallos de página ocurren de manera natural conforme se ejecuta el programa. Sin embargo, sea cuidadoso si está compitiendo por los recursos del sistema con otros usuarios. La imagen que obtendrá no será la misma que cuando tenga la computadora para usted solo.
Para comprobar la actividad de intercambio de páginas en un sistema UNIX derivado de Berkeley, use el comando vmstat . Comúnmente la gente lo invoca con un incremento de tiempo, de forma que reporte el intercambio de páginas a intervalos regulares:
% vmstat 5
Este comando produce una línea de salida cada cinco segundos:
procs memory page disk faults cpu
r b w avm fre re at pi po fr de sr s0 d1 d2 d3 in sy cs us sy id0 0 0 824 21568 0 0 0 0 0 0 0 0 0 0 0 20 37 13 0 1 98
0 0 0 840 21508 0 0 0 0 0 0 0 1 0 0 0 251 186 156 0 10 900 0 0 846 21460 0 0 0 0 0 0 0 2 0 0 0 248 149 152 1 9 89
0 0 0 918 21444 0 0 0 0 0 0 0 4 0 0 0 258 143 152 2 10 89
Como puede observar, produce mucha información. Para nuestros propósitos, los campos importantes son
avm
, que significa "memoria virtual activa" (
active virtual memory ),
fre
o "memoria real libre" (
free real memory ), y los campos
pi
y
po
, cuyos números muestran la actividad de paginación. Cuando la cantidad en
fre
cae a valores cercanos a cero, y el campo
po
muestra mucha actividad, es una indicación de que el sistema de memoria está saturándose.
En una máquina con SysV, la actividad de paginación puede observarse mediante el comando sar :
% sar -r 5 5
Este comando le muestra la cantidad de memoria libre y el espacio de intercambio disponible al instante. Si el valor de memoria libre está bajo, puede asumir que su programa realizará intercambio de páginas:
Sat Apr 18 20:42:19
[r]freemem freeswap
4032 82144
Como mencionamos previamente, su desea ejecutar un trabajo mayor que el tamaño de memoria que posee su máquina, debe aplicar para la actividad de intercambio de páginas el mismo consejo que aplica para la actividad de cache.
Por cierto, ¿está recibiendo el mensaje “Out of memory?” Si está ejecutando
csh , pruebe a teclear
unlimit
para ver si el mensaje desaparece. De otro modo, puede significar que no tiene suficiente espacio de intercambio disponible para ejecutar el trabajo. Trate de minimizar el tamaño de incremento en los bucles de su código, y cuando no pueda, bloquear las referencias a memoria ayudará muchísimo.
Una nota sobre las herramientas de monitoreo de rendimiento de la memoria: debe comprobar con el vendedor de su estación de trabajo si tienen disponible alguna herramienta además de vmstat o sar . Puede que exista alguna herramienta mucho más sofisticada (y tal vez gráfica) que le ayude a comprender cómo es que su programa utiliza la memoria.
Notification Switch
Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?