Tabla de Contenidos

Sistema de archivos /proc

Dentro del directorio /proc/, se puede encontrar una gran cantidad de información con detalles sobre el hardware del sistema y cualquier proceso que se esté ejecutando actualmente. Además, algunos de los archivos dentro del directorio /proc/ pueden ser alterados por el usuario al kernel cambios en la configuración.

Archivos en /proc

/proc/buddyinfo

Este archivo se utiliza principalmente para diagnosticar problemas de fragmentación de memoria. Utilizando el algoritmo buddy, cada columna representa el número de páginas de un cierto orden (de un cierto tamaño) que están disponibles en un momento dado. Por ejemplo, para la zona DMA (acceso directo a memoria), hay 90 de 2^(0*PAGE_SIZE) pedazos de memoria. De forma similar, hay 6 de 2^(1*PAGE_SIZE) pedazos, y 2 de 2^(2*PAGE_SIZE) pedazos de memoria disponibles. La fila DMA hace referencia a los primeros 16 MB en un sistema, la fila HighMem referencia toda la memoria mayor que 4 GB en un sistema, y la fila Normal se refiere a toda la memoria en medio de las anteriores.

/proc/cmdline

Este archivo muestra los parámetros pasados al kernel en el momento en que éste inicia.

/proc/cpuinfo

Este archivo virtual identifica el tipo de procesador usado por el sistema y sus carácteristicas.

/proc/crypto

Este archivo lista todos los códigos de cifrado utilizados por el kernel de Linux, incluyendo detalles adicionales para cada uno.

/proc/devices

Este archivo muestra los diversos dispositivos de carácteres y de bloque actualmente configurados (no incluye dispositivos cuyos módulos no están cargados).

/proc/diskstats

Muestra las estadísticas de I/O de dispositivos de bloque. Cada línea contiene los siguientes 14 campos:

  1. major number
  2. minor mumber
  3. nombre del dispositivo
  4. lecturas completadas con éxito
  5. reads merged
  6. sectores leídos
  7. tiempo dedicado a la lectura (ms)
  8. escrituras completadas
  9. writes merged
  10. sectores escritos
  11. el tiempo dedicado a escribir (ms)
  12. I/O en curso
  13. el tiempo consumido en I/O (ms)
  14. weighted time spent doing I/Os (ms)

Más info https://www.kernel.org/doc/Documentation/iostats.txt

/proc/filesystems

Este archivo muestra una lista de los tipos del sistema de archivos soportados actualmente por el kernel.

/proc/interrupts

Este archivo graba el número de interrupciones por IRQ en la arquitectura x86.

Dentro del archivo podemos ver su contenido dividido en columnas. La primera columna se refiere al número de IRQ. Cada CPU del sistema tiene su propia columna y su propio número de interrupciones por IRQ. La columna siguiente le indica el tipo de interrupción y la última contiene el nombre del dispositivo que está localizado en ese IRQ.

tiempo.

creando una edge, en la que la interrupción IO-APIC-level, tan sólo se dan a partir de procesadores 586 y superiores.

desciende nuevamente.

/proc/iomem

Aquí se muestran los mapeos actuales de memoria para cada dispositivo físico.

/proc/ioports

La salida de /proc/ioports proporciona una lista de las regiones de puertos registrados actualmente utilizados para la comunicación de entrada y salida con un dispositivo.

/proc/kcore

Este archivo representa la memoria física del sistema y se almacena en el formato de archivos base. A diferencia de la mayoría de archivos /proc/, kcore muestra un tamaño. Este valor se da en bytes y es igual al tamaño de la memoria física (RAM) utilizada más 4KB. Sus contenidos están diseñados para que los examine un debugger, como por ejemplo gdb, y no es legible humanamente.

/proc/kmsg

Este archivo se utiliza para mantener mensajes generados por el kernel. Luego, estos mensajes son tomados por otros programas, como por ejemplo /sbin/klogd o /bin/dmesg.

/proc/loadavg

Este archivo ofrece una vista de la carga promedio del procesador con respecto al tiempo de CPU y de E/S, así como también datos adicionales utilizados por uptime y otros comandos.

Esta dividido en columnas. Las tres primeras columnas indican medida CPU e IO utilización de la última, cinco, y 15 períodos por minuto. la cuarta columna muestra el número de procesos que se están ejecutando actualmente y el número total de procesos. la última columna muestra el ID de proceso usado. Además, el promedio de la carga también se refiere al número de procesos listos para funcionar (es decir, en la cola de ejecución, la espera de una cuota de CPU).

/proc/meminfo

Este archivo roporciona mucha información importante sobre el uso actual de RAM en el sistema.

La mayoría de la información que está aquí es usada por los comandos free, top y ps.

/proc/modules

Este archivo muestra una lista de todos los módulos cargados en el sistema. Su contenido variará dependiendo de la configuración y uso de su sistema.

/proc/mounts

Este archivo proporciona una lista de todos los montajes en uso por el sistema

/proc/mtrr

Este archivo se refiere a la actual Memory Type Range Registers (MTRRs), en uso dentro del sistema. Los MTRRs se usan con la familia de procesadores Intel P6 (Pentium II y superior), y controlan el acceso del procesador a los rangos de memoria. Cuando utilice una tarjeta de vídeo en un PCI o un bus AGP, un archivo /proc/mtrr adecuadamente configurado puede incrementar el rendimiento en un 150%.

/proc/partitions

El archivo contiene información sobre la asignación de bloques de particiones. El mismo se organiza en columnas que son las siguientes :

/proc/pci

El archivo contiene una lista completa de cada dispositivo PCI en su sistema. Podemos acceder a los datos de una forma mas simple con el comando /sbin/lspci -vb

/proc/slabinfo

Este archivo le da información completa sobre el uso de memoria en el nivel slab. Los kernels Linux superiores a la versión 2.2 usan slab pools para manejar memoria por encima del nivel de página. Los objetos utilizados habitualmente, tienen sus propios slab pools. En vez de analizar manualmente el largo archivo /proc/slabinfo, el programa /usr/bin/slabtop muestra la información del caché slab del kernel en tiempo real. Este programa permite configuraciones personalizadas, incluyendo el ordenamiento por columnas y la actualización de pantallas.

Algunas de las estadísticas usadas más comúnmente en /proc/slabinfo que se incluyen en /usr/bin/slabtop, abarcan:

/proc/stat

Este archivo mantiene un registro de las diferentes estadísticas sobre el sistema desde que fue reiniciado por última vez.

Algunas de las estadísticas más utilizadas son :

/proc/swaps

Este archivo mide el espacio swap y su uso, además proporciona una instantánea de cada nombre de archivo swap, el tipo de espacio swap, el tamaño total y la cantidad de espacio en uso (en kilobytes). La columna de prioridad es útil cuando se usan múltiples archivos de espacio de intercambio. Cuanto más baja es la prioridad, más probable es que se use el archivo de intercambio.

/proc/uptime

El archivo contiene información sobre el tiempo que lleva encendido el sistema desde el último reinicio Esta dividido en dos columnas, el primer número le indica el número total de segundos que el sistema ha estado en funcionamiento. El segundo indica cuánto de ese tiempo, también en segundos, la máquina ha estado inactiva.

/proc/version

Este archivo muestra las versión del kernel de Linux y gcc en uso.

Directorios en /proc

/proc/25845 etc etc

Podemos ver dentro de /proc muchos directorios con un número de nombre, ese numero corresponde a un PID de algún proceso ejecutándose actualmente en el sistema, cuando ese proceso deja de ejecutarse ese directorio deja de existir, dentro de ese directorio podemos ver mucha información sobre dicho proceso, como por ejemplo las variables de entorno con que se ejecuta, grupos de memoria etc.

Cada uno de los directorios de procesos contiene los siguientes archivos:

Las siete columnas del archivo statm se relacionan a diferentes estadísticas de memoria para el proceso. Dependiendo de como se visualizan, de derecha a izquierda, remiten diferentes aspectos de la memoria utilizada:

  1. Tamaño total del programa, en kilobytes.
  2. Tamaño de las porciones de memoria, en kilobytes.
  3. Número de páginas compartidas.
  4. Número de páginas que son código.
  5. Número de páginas de datos/pila.
  6. Número de páginas de bibliotecas.
  7. Número de páginas sucias.

/proc/sys/vm/

Este directorio proporciona acceso y modificación a los parametros de manejo de memoria virtual del Kernel Linux. El kernel hace un uso extensivo e inteligente de memoria virtual, que se conoce comúnmente como espacio de intercambio.

block_dump

Configura la depuración de bloques de E/S cuando está activo. Se registran todas las operaciones de lectura/escritura o que impliquen ensuciar bloques hechas a archivos. Esto puede ser muy útil para efectos de diagnóstico del giros del disco para la conservación de la batería de las portátiles. Se pueden recuperar todas las salidas cuando block_dump está activado, mediante dmesg. El valor por defecto es 0.

Si block_dump está activado a la vez que la depuración del kernel, es prudente detener el demonio klogd, pues generará actividad del disco errónea causada por block_dump.

dirty_background_ratio

Configura la escritura de los datos sucios a este porcentaje total de memoria, a través del demonio pdflush. El valor por defecto es 10. ==== dirty_expire_centisecs ==== Define cuando los datos en memoria que se encuentran marcados como 'dirty' son lo suficientemente antiguos como para ser candidatos a escritura. Los datos en memoria por más tiempo que este intervalo, son escritos la próxima vez que se active un demonio pdflush. El valor por defecto es 3000, expresado en cientos de segundos.

dirty_ratio

Comienza la escritura activa de los datos sucios a este porcentaje total de memoria para el generador de datos sucios, a través de pdflush. El valor por defecto es 40.

dirty_writeback_centisecs

Define el intervalo entre activaciones del demonio pdflush, que escribe periódicamente los datos en memoria al disco. El valor por defecto es 500, expresado en cientos de segundos.

laptop_mode

Minimiza el número de veces que un disco duro necesita girar manteniendo los giros por el mayor tiempo posible, y por ende, conservando energía en las baterías de las portatiles. Esto inclementa la eficiencia al combinar todos los procesos futuros de E/S juntos, reduciendo la frecuencia de los giros. El valor por defecto es 0, pero se activa automáticamente en caso de que se use la bateria en la portátil.

Para más información, consulte la siguiente documentación : Documentation/laptop-mode.txt

lower_zone_protection

Determina qué tan agresivo es el kernel en defender las zonas de ubicación de memoria baja. Esto es efectivo cuando se utiliza con máquinas configuradas con el espacio de memoria highmem activado. El valor por defecto es 0, sin protección. Todos los demás valores enteros están en megabytes, y por lo tanto, la memoria lowmem está protegida de ser asignada por los usuarios.

Para más información, consulte la siguiente documentación : Documentation/filesystems/proc.txt

max_map_count

Configura el número máximo de áreas de mapa de memoria que puede tener un proceso. En la mayoría de los casos, el valor por defecto de 65536 es apropiado.

min_free_kbytes

Obliga a que Linux VM (el gestor de memoria virtual) mantenga un número mínimo de kilobytes libres. El VM utiliza este número para computarizar un valor pages_min para cada zona lowmem en el sistema. El valor por defecto es en relación al número total de memoria en la máquina.

nr_hugepages

Lista el número actual de páginas hugetlb configuradas en el kernel.

Para más información, consulte la siguiente documentación : Documentation/vm/hugetlbpage.txt

nr_pdflush_threads

Indica el número de demonios pdflush que se están ejecutando actualmente. Este archivo es de sólo lectura, y no debería ser cambiado por el usuario. Bajo grandes cargas de E/S, el kernel incrementa el valor por defecto de dos.

overcommit_memory

Configura las condiciones bajo las cuales una petición de gran memoria es aceptada o rechazada. Están disponibles los siguientes tres modos:

Esta configuración solamente es recomendada para los sistemas con áreas swap más grandes que la memoria física.

overcommit_ratio

Especifica el porcentaje de memoria física RAM considerada cuando /proc/sys/vm/overcommit_memory es configurado a 2. El valor por defecto es 50. page-cluster — Establece el número de páginas leídas en un solo intento. El valor por defecto de 3 establecido en 16 páginas, es apropiado para la mayoría de los sistemas.

swappiness

Establece cuánto swap debería hacer una máquina. Mientras más alto es el número, ocurrirá mayor swapping. O sea el swappines, que es nivel de prioridad swap/ram, permite establecer un balance entre el uso de la memoria swap y la memoria ram. El Swappiness puede tomar valores desde el 0 hasta el 100. El valor por dfault es 60, si se estable un valor mas bajo se prioriza la ram sobre la swap y se puede evitar la paginacion mientras que si se establece a 100 el intercambio se realizará constantemente.

Para cambiar el swappiness ejecutamos

echo 0 > /proc/sys/vm/swappiness

O sino en /etc/sysctl.conf :

vm.swappiness = 10

Referencias