Monitor de
Rendimiento
En Lenguaje
Assembler
Ejecución
Primero, ejecutamos el archivo Python Luego, ejecutamos el archivo
‘[Link]’, para captar datos del uso assembler ‘[Link]’ que
de CPU, Memoria, Velocidad de Disco, tenemos programados. Cuya
Velocidad de red; los almacenan en el función es leer el archivo de
archivo ‘cpu_data.txt’. El programa se documento ‘cpu_data.txt’ para
mantiene en ejecución, y cada 3 capturar los datos del uso de
segundos almacena los datos al rendimiento de CPU, Memoria,
archivo indicado, cabe destacar que Velocidad de Disco, Velocidad de
los datos se sobrescriben al archivo de red. Y mostrar en la pantalla los
documento ‘cpu_data.txt’. valores captados.
Codigo en Python
Importación de bibliotecas
psutil: Es una biblioteca utilizada para acceder a información sobre el
sistema operativo y procesos en ejecución. Permite obtener métricas
como el uso de CPU, memoria, velocidad de disco y red.
time: Esta biblioteca se utiliza para introducir pausas en la ejecución del
programa, en este caso, para reducir la carga en el sistema y evitar
consumir demasiados recursos mientras se recogen las métricas.
Definicion de
funciones
Obtener Uso de CPU
Esta función utiliza psutil.cpu_percent(interval=1) para obtener el porcentaje
de uso de la CPU durante un intervalo de 1 segundo. Devuelve este valor
como el resultado.
Obtener uso de
Memoria
Aquí, psutil.virtual_memory() se usa para obtener información detallada
sobre el uso de memoria virtual. La función devuelve el porcentaje de
memoria utilizada.
Obtener Velocidad de Disco
Esta función suma los bytes leídos y escritos desde la última cuenta
registrada por psutil.disk_io_counters(). El resultado representa la cantidad
total de datos transferidos a través del disco.
Obtener Velocidad de
Red
Similar a la función de disco, esta función suma los bytes enviados y
recibidos desde la última cuenta registrada por psutil.net_io_counters(),
dando como resultado la cantidad total de datos transferidos a través de la
red.
Bucle principal
Inicialización: Antes del bucle, se inicializan variables para almacenar la
velocidad de disco y red desde la última medición.
Bucle Infinito: Dentro del bucle, se realizan las siguientes acciones:
• Se obtienen las métricas actuales de uso de CPU y memoria.
• Se calculan las velocidades de disco y red actualizando los valores con
las diferencias entre las mediciones actuales y las anteriores, y luego
convirtiendo los resultados a KB/s.
• Se guarda un registro de todas las métricas en un archivo de texto,
sobrescribiendo el contenido existente en cada iteración.
• Finalmente, el programa espera 3 segundos antes de repetir el proceso.
Bucle
Principal
Directorio de guardado
El archivo cpu_data.txt se encuentra en el directorio especificado y
contiene una línea con las métricas recopiladas en cada iteración del
bucle, separadas por comas. Cada línea representa un punto en el
tiempo con el uso de CPU, memoria, velocidad de disco y velocidad
de red.
Codigo en lenguaje assembler
.MODEL
SMALL
Esta línea define el modelo de segmentación del programa como "pequeño"
(SMALL). Esto significa que todos los segmentos de código, datos y pila estarán
contenidos dentro de la primera 64KB de memoria.
.STACK 100h
Reserva 256 bytes para el stack, ubicado a 100h (256 en hexadecimal) desde el inicio
de la memoria. El stack es una estructura de datos que sigue el principio LIFO (Last In,
First Out) y se utiliza para almacenar temporales y para pasar parámetros entre
subrutinas.
.DATA
Aquí se declaran todas las variables globales y constantes utilizadas por el
programa:
• filename: Nombre del archivo a abrir.
• buffer: Un búfer de 256 bytes para almacenar los datos leídos del archivo.
• Las etiquetas (cpu_label, mem_label, disk_label, net_label) son cadenas que se
imprimirán junto con los valores correspondientes.
• newline: Contiene los caracteres de nueva línea para saltar líneas en la salida.
.CODE .STARTUP
Indica el inicio de la
Es el punto de
sección de código
entrada del
ejecutable del
programa.
programa.
Abrir el
archivo
Utiliza la interrupción int 21h con ah = 3Dh
para abrir el archivo especificado en filename.
Si hay un error, salta a la etiqueta error_open.
Leer el archivo Cerrar el
archivo
Con ah = 3Fh, lee hasta 255 Cierra el archivo abierto con ah
bytes del archivo abierto en = 3Eh. Si hay un error, salta a
buffer. Si hay un error, salta error_close.
a error_read.
Procesar y mostrar los
Leedatos
el contenido del buffer e imprime cada carácter
hasta encontrar una coma o un nulo, utilizando
print_value. Después de imprimir cada valor, llama a
print_newline para imprimir una nueva línea.
Terminar el programa
Finaliza el programa llamando a
int 21h con ah = 4Ch.
Funciones auxiliares
Definiciones de las funciones auxiliares
print_value y print_newline, así como el
manejador de errores.
Demostración del
Proyecto
¡Gracias por
ver!