Improving performance (Español)

Esta traducción de
Improving performance
fue revisada el
2022-09-28
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
Optimizar el arranque
Optimizar pacman
Acelerar SSH
Openoffice#Speed up OpenOffice
Portátil
Precarga
Este artículo proporciona información sobre los diagnósticos básicos del sistema relacionados con el rendimiento, así como los pasos que se pueden tomar para reducir el consumo de recursos o para optimizar el sistema con el objetivo final de obtener mejoras percibidas o documentadas en el rendimiento del sistema.
Lo básico
Conozca su sistema
La mejor manera de ajustar un sistema es centrarse en cuellos de botella o subsistemas que limiten la velocidad general. Las especificaciones del sistema pueden ayudar a identificarlos.
Si la computadora se vuelve lenta cuando se ejecutan aplicaciones grandes (como LibreOffice y Firefox) al mismo tiempo, verifique si la cantidad de RAM es suficiente. Utilice la siguiente orden y marque la columna "available" (disponible):
$ free -h
Si el tiempo de arranque es lento y las aplicaciones tardan mucho en cargarse en el primer inicio (únicamente), es probable que el disco duro sea el culpable. La velocidad de un disco duro se puede medir con la orden
hdparm
:
Nota
hdparm
indica solo la velocidad de lectura pura de un disco duro y no es un punto de referencia válido. Sin embargo, un valor superior a 40MB/s (mientras está inactivo) es aceptable en un sistema promedio.
# hdparm -t /dev/sdX
Si la carga de la CPU es constantemente alta incluso con suficiente RAM disponible, intente reducir el uso de la CPU desactivando la ejecución de
demonios
y/o procesos. Esto se puede monitorear de varias maneras, por ejemplo, con
htop
,
pstree
o cualquier otra herramienta
monitor del sistema
:
$ htop
Si las aplicaciones que usan renderizado directo son lentas (es decir, aquellas que utilizan la GPU, como reproductores de video, juegos o incluso un
administrador de ventanas
), entonces mejorar el rendimiento de la GPU debería ayudar. El primer paso es verificar si la renderización directa está realmente activada. Esto se indica mediante la orden
glxinfo
, parte del paquete
mesa-utils
:
$ glxinfo | grep "direct rendering"
direct rendering: Yes
Cuando se ejecuta un
entorno de escritorio
, la desactivación de los efectos visuales (no utilizados) del escritorio puede reducir el uso de la GPU. Utilice un entorno más ligero o cree un
entorno personalizado
si el actual no cumple con los requisitos de hardware y/o personales.
Benchmarking
Los efectos de la optimización suelen ser difíciles de juzgar. Sin embargo, pueden medirse mediante herramientas de
evaluación
.
Dispositivos de almacenamiento
Varias rutas de hardware
Una ruta de hardware interna es cómo se conecta el dispositivo de almacenamiento a su placa base. Hay diferentes formas de conectarse a la placa base, como TCP/IP a través de una NIC, conectadas directamente mediante PCIe/PCI, Firewire, tarjeta RAID, USB, etc. Al distribuir sus dispositivos de almacenamiento a través de múltiples puntos de conexión, maximiza las capacidades de su placa base, por ejemplo, 6 discos duros conectados a través de USB serían mucho más lentos que 3 a través de USB y 3 a través de Firewire. La razón es que cada ruta de entrada a la placa base es como una tubería, y hay un límite establecido de cuánto puede pasar por dicha tubería en un momento dado. La buena noticia es que la placa base suele tener varios conductos.
Más ejemplos:
Directamente a la placa base usando PCI/PCIe/ATA
Mediante una caja externa para alojar el disco a través de USB/Firewire
Convirtiendo el dispositivo en un dispositivo de almacenamiento en red conectándose a través de TCP/IP
Tenga en cuenta también que si tiene 2 puertos USB en la parte frontal de su máquina y 4 puertos USB en la parte posterior, y tiene 4 discos, probablemente sería más rápido colocar 2 en la parte frontal/2 en la parte posterior que 3 en la parte posterior/1 en el frente. Esto se debe a que, internamente, los puertos frontales probablemente sean un concentrador raíz separado que el posterior, lo que significa que puede enviar el doble de datos usando ambos que solo 1. Use las siguientes órdenes para determinar las diversas rutas en su máquina.
Árbol de dispositivos USB
$ lsusb -t
Árbol de dispositivos PCI
$ lspci -tv
Particionamiento
Asegúrese de que sus particiones estén
correctamente alineadas
.
Varias unidades
Si tiene varios discos disponibles, puede configurarlos como
RAID
software para obtener importantes mejoras de velocidad.
La creación del
espacio de intercambio
en un disco separado también puede ayudar bastante, especialmente si su máquina la emplea con frecuencia.
Disposición en discos duros
Si utiliza un disco duro mecánico tradicional, el diseño de su partición puede influir en el rendimiento del sistema. Los sectores al principio de la unidad (más cercanos al exterior del disco) son más rápidos que los del final. Además, una partición más pequeña requiere menos movimientos del cabezal de la unidad y, por lo tanto, acelera las operaciones del disco. Por lo tanto, se recomienda crear una partición pequeña (10 GB, más o menos según sus necesidades) solo para su sistema, lo más cerca posible del comienzo de la unidad. Otros datos (imágenes, vídeos) deben mantenerse en una partición separada, y esto generalmente se logra separando el directorio de inicio (
/home/
usuario
) del sistema (
/
).
Elegir y ajustar su sistema de archivos
Elegir el mejor sistema de archivos para un sistema específico es muy importante porque cada uno tiene sus propios puntos fuertes. El artículo
Sistemas de archivos
proporciona un breve resumen de los más populares. También puede encontrar artículos relevantes en
Category:File systems (Español)
.
Opciones de montaje
La opción
noatime
se sabe que mejora el rendimiento del sistema de archivos.
Otras opciones de montaje son específicas del sistema de archivos, por lo tanto, véase los artículos relevantes para los sistemas de archivos:
Ext3 (Español)
Ext4#Improving performance
JFS Filesystem#Optimizations
XFS#Performance
Btrfs (Español)#Desfragmentación
,
Btrfs (Español)#Compresión
y
btrfs(5)
ZFS#Tuning
Reiserfs
La opción de montaje
data=writeback
mejora la velocidad, pero puede dañar los datos durante una pérdida de energía. La opción de montaje
notail
aumenta el espacio utilizado por el sistema de archivos en aproximadamente un 5%, pero también mejora la velocidad en general. También puede reducir la carga del disco colocando el diario (journal) y los datos en unidades independientes. Esto se hace al crear el sistema de archivos:
# mkreiserfs –j /dev/sd
a1
/dev/sd
b1
Reemplace
/dev/sd
a1
con la partición reservada para el diario, y
/dev/sd
b1
con la partición para datos. Puede obtener más información sobre reiserfs con este
artículo
.
Ajuste de los parámetros del kernel
Hay varios parámetros clave ajustables que afectan el rendimiento de los dispositivos de bloque; véase
sysctl#Virtual memory
para obtener más información.
Planificadores de entrada/salida
Información de contexto
El planificador (scheduler) de entrada/salida
(E/S)
es el componente del kernel que decide en qué orden se envían las operaciones de E/S de bloque a los dispositivos de almacenamiento. Es útil recordar aquí algunas especificaciones de dos tipos de unidades principales, porque el objetivo del planificador de E/S es optimizar la forma en que estos pueden manejar las solicitudes de lectura:
Un HDD tiene discos giratorios y un cabezal que se mueve físicamente a la ubicación requerida. Por lo tanto, la latencia aleatoria es bastante alta, oscilando entre 3 y 12ms (ya sea una unidad de servidor de gama alta o una unidad de computadora portátil y sin pasar por el búfer de escritura del controlador de disco) mientras que el acceso secuencial proporciona un rendimiento mucho mayor. El rendimiento típico del disco duro es de aproximadamente 200 operaciones de E/S por segundo
(IOPS)
.
Un SSD no tiene partes móviles, el acceso aleatorio es tan rápido como el secuencial, por lo general menos de 0,1ms, y puede manejar múltiples solicitudes simultáneas. El rendimiento típico de SSD es superior a 10.000 IOPS, que es más de lo necesario en situaciones de carga de trabajo habituales.
Si hay muchos procesos que realizan solicitudes de E/S a diferentes partes de almacenamiento, se pueden generar miles de IOPS, mientras que un HDD típico solo puede manejar alrededor de 200 IOPS. Hay una cola de solicitudes que deben esperar para acceder al almacenamiento. Aquí es donde los planificadores de E/S juegan un papel de optimización.
Los algoritmos del planificador
Una forma de mejorar el rendimiento es hacer lineal el acceso: ordenando las solicitudes en espera por su dirección lógica y agrupando las más cercanas. Históricamente, este fue el primer planificador de E/S de Linux llamado
ascensor
.
Un problema con el algoritmo del ascensor es que no es óptimo para un proceso que realiza un acceso secuencial: leer un bloque de datos, procesarlo durante varios microsegundos, leer el siguiente bloque y así sucesivamente. El planificador del ascensor no sabe que el proceso está a punto de leer otro bloque cercano y, por lo tanto, pasa a otra solicitud mediante otro proceso en otra ubicación. El planificador de E/S
anticipatoria
soluciona el problema: hace una pausa de unos milisegundos en anticipación de otra operación de lectura cercana antes de atender otra solicitud.
Si bien estos planificadores intentan mejorar el rendimiento total, pueden dejar algunas solicitudes esperando durante mucho tiempo. Como ejemplo, imagine que la mayoría de los procesos realizan solicitudes al comienzo del espacio de almacenamiento, mientras que un proceso realiza una solicitud en el otro extremo del almacenamiento. Este aplazamiento potencialmente infinito del proceso se llama inanición. Para mejorar la equidad, se desarrolló el algoritmo
fecha límite
. Tiene una cola ordenada por dirección, similar al ascensor, pero si alguna solicitud permanece en esta cola durante demasiado tiempo, se mueve a una cola "expirada" ordenada por tiempo de expiración. El planificador verifica primero la cola de vencimiento y procesa las solicitudes desde allí y solo luego se mueve a la cola del elevador. Tenga en cuenta que esta equidad tiene un impacto negativo en el rendimiento general.
Completely Fair Queuing (CFQ)
aborda el problema de manera diferente al asignar un intervalo de tiempo y un número de solicitudes permitidas por cola dependiendo de la prioridad del proceso que las envía. Es compatible con
cgroup
que permite reservar cierta cantidad de E/S para una selección específica de procesos. Es particularmente útil para el alojamiento compartido y en la nube: los usuarios que pagaron por algunas IOPS quieren obtener su parte cuando sea necesario. Además, permanece inactivo al final de la E/S síncrona esperando otras operaciones cercanas, asumiendo esta función del planificador "anticipatorio" y aportando algunas mejoras. Tanto el planificador "anticipatorio" como el "ascensor" fueron retirados del kernel de Linux reemplazados por las alternativas más avanzadas presentadas anteriormente.
Budget Fair Queueing (BFQ)
[
enlace roto
2024-12-15]
se basa en el código CFQ y trae algunas mejoras. No otorga el disco a cada proceso durante un intervalo de tiempo fijo, sino que asigna un "presupuesto" medido en número de sectores al proceso y utiliza heurísticas. Es un planificador relativamente complejo, puede estar más adaptado a unidades mecánicas y SSD lentos porque su alta sobrecarga por operación, especialmente si está asociada con una CPU lenta, puede ralentizar los dispositivos rápidos. El objetivo de BFQ en sistemas personales es que, para tareas interactivas, el dispositivo de almacenamiento sea virtualmente tan responsivo (responsive) como si estuviera inactivo. En su configuración predeterminada, se centra en ofrecer la latencia más baja en lugar de lograr el rendimiento máximo.
Kyber
es un planificador reciente inspirado en las técnicas de administración de colas activas utilizadas para el enrutamiento de la red. La implementación se basa en "fichas" (tokens) que sirven como mecanismo para limitar las solicitudes. Se requiere una ficha de cola para asignar una solicitud, esto se usa para evitar la falta de solicitudes. También se necesita una ficha de envío y limita las operaciones de una determinada prioridad en un dispositivo determinado. Finalmente, se define una latencia de lectura de destino y el planificador se sintoniza para alcanzar este objetivo de latencia. La implementación del algoritmo es relativamente simple y se considera eficiente para dispositivos rápidos.
Planificadores de E/S del kernel
Si bien algunos de los primeros algoritmos ahora se han retirado, el kernel oficial de Linux soporta una serie de planificadores de E/S que se pueden dividir en dos categorías:
Los
planificadores de colas múltiples
están disponibles por defecto con el kernel. El
Multi-Queue Block I/O Queueing Mechanism (blk-mq)
asigna consultas de E/S a múltiples colas, las tareas se distribuyen entre subprocesos y, por lo tanto, entre núcleos de CPU. Dentro de este grupo están disponibles los siguientes planificadores:
None
,donde no se aplica ningún algoritmo de cola.
mq-deadline
, la adaptación del planificador de fechas límite (ver más abajo) a multihilo.
Kyber
BFQ
Los
planificadores de cola única
son planificadores heredados:
NOOP
es el planificador más simple, inserta todas las solicitudes de E/S entrantes en una cola FIFO simple e implementa la combinación de solicitudes. En este algoritmo, no hay ningún reordenamiento de la solicitud en función del número de sector. Por lo tanto, se puede utilizar si la solicitud se gestiona en otra capa, a nivel de dispositivo, por ejemplo, o si no importa, para SSD, por ejemplo.
Deadline
CFQ
Nota
Los planificadores de cola única
fueron eliminados del kernel desde Linux 5.0
.
Cambiar el planificador de E/S
Nota
La mejor elección del planificador depende tanto del dispositivo como de la naturaleza exacta de la carga de trabajo. Además, el rendimiento en MB/s no es la única medida de rendimiento: la fecha límite o la equidad deterioran el rendimiento general, pero pueden mejorar la capacidad de respuesta del sistema.
Benchmarking
puede resultar útil para indicar el rendimiento de cada programador de E/S.
Para enumerar los planificadores disponibles para un dispositivo y el planificador activo (entre paréntesis):
$ cat /sys/block/
sda
/queue/scheduler
mq-deadline kyber [bfq] none
Para enumerar los planificadores disponibles para todos los dispositivos:
$ grep "" /sys/block/
*
/queue/scheduler
/sys/block/pktcdvd0/queue/scheduler:none
/sys/block/sda/queue/scheduler:mq-deadline kyber [bfq] none
/sys/block/sr0/queue/scheduler:[mq-deadline] kyber bfq none
Para cambiar el programador de E/S activo a
bfq
para el dispositivo
sda
, utilice:
# echo
bfq
> /sys/block/
sda
/queue/scheduler
El proceso para cambiar el planificador de E/S, dependiendo de si el disco es mecánico o no, puede automatizarse y persistir durante los reinicios. Por ejemplo, la regla
udev
a continuación establece el planificador en
none
para
NVMe
,
mq-deadline
para
SSD
/eMMC y
bfq
para unidades mecánicas:
/etc/udev/rules.d/60-ioschedulers.rules
# establecer planificador para NVMe
ACTION=="add|change", KERNEL=="nvme[0-9]n[0-9]", ATTR{queue/scheduler}="none"
# establecer planificador para SSD y eMMC
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# establecer planificador para discos mecánicos
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
Reinicie o fuerce la
carga de las nuevas reglas
.
Ajustar el planificador de E/S
Cada uno de los planificadores de E/S del kernel tiene sus propios parámetros para optimizar, como el tiempo de latencia, el tiempo de expiración o los parámetros FIFO. Son útiles para ajustar el algoritmo a una combinación particular de dispositivo y carga de trabajo. Por lo general, esto es para lograr un mayor rendimiento o una menor latencia para una utilización determinada.
Los parámetros para optimizar y su descripción se pueden encontrar en la
documentación del kernel
.
Para enumerar los parámetros para optimizar disponibles para un dispositivo, en el siguiente ejemplo
sdb
que usa
deadline
, utilice:
$ ls /sys/block/
sdb
/queue/iosched
fifo_batch  front_merges  read_expire  write_expire  writes_starved
Para mejorar el rendimiento de
deadline
a costa de la latencia, se puede aumentar
fifo_batch
con la orden:
# echo
32
> /sys/block/
sdb
/queue/iosched/
fifo_batch
Configuración de administración de energía
Cuando se trata de discos mecánicos tradicionales (HDD), es posible que desee
reducir o desactivar las funciones de ahorro de energía
por completo.
Reducir las lecturas/escrituras de disco
Evitar el acceso innecesario a unidades de almacenamiento lentas es bueno para el rendimiento y también aumenta la vida útil de los dispositivos, aunque en el hardware moderno la diferencia en la esperanza de vida suele ser insignificante.
Nota
Un SSD de 32GB con un factor de amplificación de escritura mediocre de 10x, un ciclo estándar de escritura/borrado de 10000 y
10GB de datos escritos por día
, obtendría una
esperanza de vida de 8 años
. Mejora con SSD más grandes y controladores modernos con menos amplificación de escritura. También compare
[1]
[
enlace roto
2024-12-15]
cuando considere si realmente se necesita alguna estrategia en particular para limitar las escrituras en disco.
Mostrar escrituras de disco
El paquete
iotop
puede ordenar por escrituras de disco y mostrar cuánto y con qué frecuencia los programas escriben en el disco. Véase
iotop(8)
para obtener más detalles.
Reubicar archivos en tmpfs
Reubique archivos, como el perfil de su navegador, a un sistema de archivos
tmpfs
, para obtener mejoras en la respuesta de la aplicación, ya que todos los archivos ahora se almacenan en la RAM:
Consulte
Profile-sync-daemon
para sincronizar los perfiles del navegador. Algunos navegadores pueden necesitar una atención especial, véase por ejemplo
Firefox/Profile on RAM
.
Consulte
Anything-sync-daemon
para sincronizar cualquier carpeta específica.
Consulte
Makepkg (Español)#Mejorar tiempos de compilación
para mejorar los tiempos de compilación mediante la creación de paquetes en tmpfs.
Sistemas de archivos
Véase la página del
sistema de archivos
correspondiente en caso de que haya instrucciones para mejorar el rendimiento, por ejemplo
Ext4#Improving performance
y
XFS#Performance
.
Espacio de intercambio
Véase
Swap (Español)#Rendimiento
.
Intervalo de escritura diferida y tamaño del búfer
Véase
Sysctl#Virtual memory
para más detalles.
Planificar la E/S de almacenamiento con ionice
Muchas tareas, como las copias de seguridad, no dependen de un corto retraso de E/S de almacenamiento o de un alto ancho de banda de E/S de almacenamiento para cumplir con su tarea; se pueden clasificar como tareas en segundo plano. Por otro lado, las E/S rápidas son necesarias para una buena capacidad de respuesta de la interfaz de usuario en el escritorio. Por lo tanto, es beneficioso reducir la cantidad de ancho de banda de almacenamiento disponible para tareas en segundo plano, mientras que otras tareas necesitan E/S de almacenamiento. Esto se puede lograr haciendo uso del planificador de E/S de Linux CFQ, que permite establecer diferentes prioridades para los procesos.
La prioridad de E/S de un proceso en segundo plano se puede reducir al nivel "Inactivo" (Idle) iniciándola con:
# ionice -c 3 orden
Véase
ionice(1)
y
[2]
para más información.
CPU
Overclocking
Overclocking
mejora el rendimiento computacional de la CPU aumentando su frecuencia de reloj pico. La capacidad de overclock depende de la combinación del modelo de CPU y el modelo de placa base. Se realiza con mayor frecuencia a través de BIOS. El overclocking también tiene desventajas y riesgos. Ni se recomienda ni se desaconseja aquí.
Muchos chips Intel no informarán correctamente su frecuencia de reloj a acpi_cpufreq y a la mayoría de las demás utilidades. Esto resultará en mensajes excesivos en dmesg, que se pueden evitar descargando y poniendo en lista negra el módulo del kernel
acpi_cpufreq
.
Para leer su velocidad de reloj utilice
i7z
del paquete
i7z
AUR
. Para comprobar el funcionamiento correcto de una CPU overclockeada, se recomienda realizar
prueba de estrés
.
Escala de frecuencia
Véase
CPU frequency scaling (Español)
.
Planificadores de CPU alternativos
El planificador de CPU predeterminado en el kernel principal de Linux es
CFS
. Hay planificadores alternativos disponibles.
Un planificador alternativo centrado en la interactividad y la capacidad de respuesta del escritorio es
MuQSS
, desarrollado por
Con Kolivas
[
enlace roto
2024-10-12]
. MuQSS está incluido en el paquete del kernel
linux-zen
. También está disponible como un parche independiente o como parte del conjunto de parches
-ck
más amplio. Véase
Linux-ck
y
Linux-pf
para obtener más información sobre el conjunto de parches.
Kernel en tiempo real
Algunas aplicaciones, como ejecutar una tarjeta sintonizadora de TV con resolución Full HD (1080p), pueden beneficiarse del uso de un
kernel en tiempo real
.
Ajuste de prioridades de procesos
Véase
nice(1)
y
renice(1)
.
Ananicy
Ananicy CPP
es un demonio, disponible en el paquete
ananicy-cpp
, para ajustar automáticamente los niveles
nice
de ejecutables. El nivel
nice
representa la prioridad del ejecutable al asignar recursos de CPU.
cgroups
Véase
cgroups
.
Cpulimit
Cpulimit
es un programa para limitar el porcentaje de uso de la CPU de un proceso específico. Después de instalar
cpulimit
AUR
, puede limitar el uso de CPU del PID de un proceso mediante una escala de 0 a 100 veces la cantidad de núcleos de CPU que tiene la computadora. Por ejemplo, con ocho núcleos de CPU, el rango de porcentaje será de 0 a 800. Utilización:
$ cpulimit -l 50 -p 5081
irqbalance
El propósito de
irqbalance
es distribuir interrupciones de hardware entre procesadores en un sistema multiprocesador para incrementar el rendimiento. Puede ser
controlado
por el
irqbalance.service
proporcionado.
Desactivar las mitigaciones de vulnerabilidades de la CPU
Advertencia
No aplique esta configuración sin considerar las vulnerabilidades que abre. Véase
esto
y
esto
para más información.
Desactivar las mitigaciones de vulnerabilidades de la CPU mejora el rendimiento (a veces hasta un 50%). Utilice el
parámetro del kernel
indicado a continuación para desactivarlos todos:
mitigations=off
Las explicaciones de todos los conmutadores que alterna se dan en
kernel.org
. Puede utilizar
spectre-meltdown-checker
AUR
para comprobar la vulnerabilidad.
Gráficos
Configuración de Xorg
El rendimiento de los gráficos puede depender de la configuración en
xorg.conf(5)
; véase los artículos
NVIDIA
,
AMDGPU
e
Intel
. Una configuración incorrecta puede hacer que Xorg deje de funcionar, por lo que se recomienda precaución.
Configuración de Mesa
El rendimiento de los controladores Mesa se puede configurar a través de
drirc
. Están disponibles las siguientes herramientas de configuración del GUI:
adriconf (Advanced DRI Configurator)
— Herramienta GUI para configurar los controladores Mesa configurando opciones y escribiéndolas en el archivo drirc estándar.
https://gitlab.freedesktop.org/mesa/adriconf/
||
adriconf
Overclocking
Al igual que con las CPU, el overclocking puede mejorar directamente el rendimiento, pero generalmente se recomienda no hacerlo. Hay varios paquetes en
AUR
, como
rovclock
AUR
(tarjetas ATI antiguas),
rocm-smi-lib
(tarjetas AMD recientes),
nvclock
AUR
(tarjetas NVIDIA antiguas - hasta Geforce 9) y
nvidia-utils
(tarjetas NVIDIA recientes).
Véase
AMDGPU#Overclocking
o
NVIDIA/Tips and tricks#Enabling overclocking in nvidia-settings
.
Activar BAR redimensionable del PCI
La especificación PCI permite utilizar
Registros de direcciones base (BAR)
más grandes para exponer la memoria de los dispositivos PCI al controlador PCI. Esto puede resultar en un aumento del rendimiento de las tarjetas de vídeo. Tener acceso a la vRAM completa mejora el rendimiento, pero también permite optimizaciones en el controlador de gráficos. La combinación de BAR redimensionable, codificación por encima de 4G y estas optimizaciones de controladores es lo que AMD llama
AMD Smart Access Memory
[
enlace roto
2024-07-30]
, actualmente disponible en el chipset de placas base AMD Serie 500. Es posible que esta configuración no esté disponible en todas las placas base y se sabe que a veces causa problemas de arranque en ciertas placas.
Si BAR tiene un tamaño de 256M, la función no está activada o no es compatible:
# dmesg | grep BAR=
[drm] Detected VRAM RAM=8176M, BAR=256M
Para activarlo, active la configuración llamada "Decodificación por encima de 4G" o ">4GB MMIO" en la configuración de su placa base. Compruebe que BAR sea ahora más grande:
# dmesg | grep BAR=
[drm] Detected VRAM RAM=8176M, BAR=8192M
Manipular RAM, espacio de intercambio y OOM
Frecuencia y tiempos de reloj
La RAM puede funcionar en diferentes frecuencias de reloj y tiempos, que se pueden configurar en BIOS. El rendimiento de la memoria depende de ambos valores. La selección del valor predeterminado más alto presentado por BIOS generalmente mejora el rendimiento con respecto a la configuración predeterminada. Tenga en cuenta que aumentar la frecuencia a valores no admitidos tanto por la placa base como por el proveedor de RAM es overclocking, y se aplican riesgos y desventajas similares, véase
#Overclocking
.
Raíz en una superposición de RAM
Si se ejecuta en un medio de escritura lento (USB, discos duros mecánicos) y los requisitos de almacenamiento son bajos, la raíz puede ejecutarse en una superposición de RAM en la parte superior de la raíz de solo lectura (en el disco). Esto puede mejorar enormemente el rendimiento a costa de un espacio de escritura limitado para la raíz. Véase
liveroot
AUR
.
Zram o zswap
El módulo del kernel
zram
(anteriormente llamado
compcache
) proporciona un dispositivo de bloque comprimido en RAM. Si lo utiliza como dispositivo de intercambio, la RAM puede contener mucha más información pero utiliza más CPU. Aún así, es mucho más rápido que cambiar a un disco duro. Si un sistema a menudo recurre al intercambio (swap), esto podría mejorar la capacidad de respuesta. El uso de zram también es una buena manera de reducir los ciclos de lectura/escritura del disco debido al intercambio en SSD.
Se pueden lograr beneficios similares (a costos similares) utilizando
zswap
en lugar de zram. Los dos son generalmente similares en intención, aunque no en funcionamiento: zswap opera como una memoria caché de RAM comprimida y no requiere (ni permite) una configuración extensa del espacio de usuario.
Por ejemplo, para configurar un dispositivo zram comprimido lz4 con capacidad de 32GiB y una prioridad superior a la normal (solo para la sesión actual):
# modprobe zram
# echo lz4 > /sys/block/zram0/comp_algorithm
# echo 32G > /sys/block/zram0/disksize
# mkswap --label zram0 /dev/zram0
# swapon --priority 100 /dev/zram0
Para desactivarlo nuevamente, reinicie o ejecute:
# swapoff /dev/zram0
# rmmod zram
Se proporciona una explicación detallada de todos los pasos, opciones y problemas potenciales en la
documentación oficial del módulo zram
.
El paquete
systemd-swap
AUR
proporciona una unidad
systemd-swap.service
para inicializar automáticamente los dispositivos zram. Es posible configurarlo en
/etc/systemd/swap.conf
.
El paquete
zramswap
AUR
proporciona una secuencia de órdenes automatizada para configurar un espacio de intercambio con una prioridad más alta y un tamaño predeterminado del 20% del tamaño de la RAM de su sistema. Para hacer esto automáticamente en cada inicio
active
zramswap.service
.
Alternativamente, el paquete
zramd
AUR
[
enlace roto
: package not found]
permite configurar zram automáticamente utilizando compresión zstd por defecto, esta configuración puede ser modificada en el archivo
/etc/default/zramd
. Para que zramd inicie automáticamente, active la unidad
zramd.service
.
Espacio de intercambio en zRAM mediante una regla udev
El siguiente ejemplo describe cómo configurar el espacio de intercambio en zRAM automáticamente durante el arranque con una sola regla udev. No debería ser necesario ningún paquete adicional para que esto funcione.
Primero, active el módulo:
/etc/modules-load.d/zram.conf
zram
Configure la cantidad de nodos /dev/zram que necesita.
/etc/modprobe.d/zram.conf
options zram num_devices=2
Cree la regla udev como se muestra en el ejemplo.
/etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
Añada /dev/zram a su fstab.
/etc/fstab
/dev/zram0 none swap defaults 0 0
/dev/zram1 none swap defaults 0 0
Utilizar la RAM de la tarjeta gráfica
En el improbable caso de que tenga muy poca RAM y un excedente de RAM de vídeo, puede utilizar esta última como espacio de intercambio. Véase
Espacio de intercambio en RAM de vídeo
.
Mejorar la capacidad de respuesta del sistema en condiciones de poca memoria
En el sistema GNU/Linux tradicional, especialmente para estaciones de trabajo gráficas, cuando la memoria asignada está sobrecomprometida (overcommitted), la capacidad de respuesta general del sistema puede degradarse a un estado casi inutilizable antes de activar OOM-killer del kernel o de que se libere una cantidad suficiente de memoria (que es poco probable que suceda rápidamente cuando el sistema no responde, ya que difícilmente puede cerrar las aplicaciones que consumen mucha memoria y que pueden continuar asignando más memoria). El comportamiento también depende de configuraciones y condiciones específicas, volver a un estado de respuesta normal puede llevar desde unos segundos hasta más de media hora, lo que podría ser difícil de esperar en un escenario serio, como puede ser durante una presentación en una conferencia.
Si bien el comportamiento del kernel y las cosas del espacio de usuario en condiciones de poca memoria pueden mejorar en el futuro, como se explica en el kernel
[3]
y en la lista de correo de fedora
[4]
, los usuarios pueden utilizar opciones más factibles y efectivas que un reinicio duro el sistema o ajustar los parámetros
sysctl
vm.overcommit_*
:
Activar manualmente el OOM-killer del kernel con
tacla mágica PetSis
(ubicada en ImprPant), es decir,
Alt+PetSis+f
.
Utilizar un demonio OOM en el espacio de usuario para abordarlos de forma automática (o interactiva).
Advertencia
Activar OOM killer para matar aplicaciones en ejecución podría hacerle perder sus trabajos no guardados. Depende de usted si es lo suficientemente paciente como para esperar con la esperanza de que las aplicaciones finalmente liberen la memoria con normalidad o si desea que el sistema responda lo antes posible.
A veces, un usuario puede preferir el demonio OOM a PetSis porque con OOM-killer del kernel no puede priorizar el proceso para (o no) terminar. Para enumerar algunos demonios OOM:
earlyoom
— Implementación simple OOM-Killer en el espacio de usuario escrita en C. Fedora va a tener esto en su instalación de estación de trabajo predeterminada
[5]
.
https://github.com/rfjakob/earlyoom
||
earlyoom
oomd
— Implementación OOM-killer basada en
PSI
, requiere la versión del kernel de Linux 4.20+. La configuración está en JSON y es bastante compleja. Confirmado su funcionamiento en el entorno de producción de Facebook.
https://github.com/facebookincubator/oomd
||
oomd
AUR
nohang
— Controlador de OOM sofisticado escrito en Python, con soporte PSI opcional, más configurable que Earlyoom.
https://github.com/hakavlad/nohang
||
nohang-git
AUR
low-memory-monitor
— Esfuerzo de los desarrolladores de GNOME que tiene como objetivo proporcionar una mejor comunicación a las aplicaciones del espacio de usuario para indicar el estado de memoria baja, además de que podría configurarse para activar el OOM-killer del kernel. Basado en PSI, requiere Linux 5.2+.
https://gitlab.freedesktop.org/hadess/low-memory-monitor/
||
low-memory-monitor-git
AUR
Red
Red del Kernel: véase
Sysctl#Improving performance
NIC: véase
Network configuration (Español)#Establecer la MTU del dispositivo y la longitud de la cola
DNS: considere usar un resolvedor caché de DNS, véase
Domain name resolution#DNS servers
Samba: véase
Samba#Improve throughput
Perros guardianes
De acuerdo con
Wikipedia:es:Perro guardián (electrónica)
:
Un temporizador Perro Guardián es un [...] temporizador electrónico que se utiliza para detectar y recuperarse de errores de funcionamiento de la computadora. Durante el funcionamiento normal, la computadora restablece regularmente el temporizador [...]. Si [...] la computadora no restablece el temporizador, este finalizará y generará una señal de [...] tiempo de espera que se [...] utilizará para iniciar acciones correctoras [...] que generalmente incluyen colocar la computadora en un estado seguro y restaurando el funcionamiento normal del sistema.
Muchos usuarios necesitan esto debido a la función crítica de su sistema (es decir, servidores) o debido a la falta de botón de reinicio (es decir, dispositivos integrados). Por lo tanto, esta característica es necesaria para un buen funcionamiento en algunas situaciones. Por otro lado, los usuarios normales (es decir, computadoras de escritorio y portátiles) no necesitan esta función y pueden desactivarla.
Para desactivar los temporizadores (tanto de software como de hardware), añada
nowatchdog
a sus parámetros de arranque.
Para comprobar la nueva configuración, haga lo siguiente:
# cat /proc/sys/kernel/watchdog
O utilice:
# wdctl
Después de haber desactivado los temporizadores, también puede
opcionalmente
evitar la carga del módulo responsable del temporizador hardware.
Ponga en la lista negra
el módulo relacionado, por ejemplo
iTCO_wdt
.
Nota
Algunos usuarios
informaron
que el parámetro
nowatchdog
no funciona como se esperaba, pero han desactivado con éxito el perro guardián (al menos el hardware) poniendo en lista negra el módulo mencionado anteriormente.
Cualquiera de las dos acciones acelerará el inicio y el apagado, porque se carga un módulo menos. Además, la desactivación de los temporizadores aumenta el rendimiento y
reduce el consumo de energía
.
Véase
[6]
,
[7]
,
[8]
, y
[9]
para más información.
Véase también
Guía de ajuste de rendimiento de Red Hat
Medición de rendimiento de Linux mediante vmstat