Recientemente, un par de veces noté que mi computadora portátil funcionaba un poco lenta y que la luz del disco parpadeaba mucho. Es un i7 con SSD y 12 GB de RAM, por lo que no espero mucha lentitud al navegar.
Esta última vez, me molestó, así que eché un vistazo rápido al Monitor del sistema (KSysGuard) y mostraba que mi partición de intercambio de 2 GB estaba utilizada al 100%, pero la memoria física solo era de 4,8 GB de 11,6 (que es donde aparece el gráfico). va a). Así que pensé en intentar vaciar el intercambio apagándolo y encendiéndolo nuevamente ( swapoff -a
, swapon -a
), pero el intercambio falló debido a una RAM insuficiente.
Esto me confundió, ya que debería tener unos 7 GB de repuesto, según KSysGuard, así que pensé en ver qué tenía que decir top. Top mostró alrededor de 150 MB de RAM libre y 2048/2048 MB de intercambio en uso. ¡No es de extrañar que estuviera funcionando un poco lento!
¿Por qué KSysGuard subestima tanto el uso de memoria y cómo puedo hacer que sea más revelador?
Respuesta1
Según los comentarios, aumenté mi archivo de intercambio de 2GiB a 6GiB usando lo siguiente:
sudo swapoff -a
sudo rm /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=6144
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Respectivamente, los comandos anteriores desactivan el intercambio moviendo las páginas de nuevo a la memoria física, eliminan el archivo de intercambio, crean un nuevo archivo de 6 GiB llamado archivo de intercambio, establecen los permisos solo como root, configuran el archivo para uso de intercambio y finalmente vuelven a activar el intercambio con el archivo nuevo.
Luego agregué vm.swappiness=70
al final de la penúltima sección para /etc/sysctl.conf
que el intercambio al archivo de página sea un poco más agresivo (ahorrando algo de memoria física).
Sin embargo, para responder realmente a la pregunta de por qué KSysGuard parecía estar mintiendo sobre la cantidad de RAM en uso, es porque el gráfico predeterminado de "Memoria e historial de intercambio" en realidad solo muestra datos del sensor de "Memoria de aplicaciones". Para resolver esto, agregué una pestaña llamada Memoria en KSysGuard e incluí 2 gráficos: uno para memoria física y otro para intercambio. El gráfico de memoria física tiene configurados los siguientes sensores: Memoria usada, Memoria libre, Memoria buffer, Memoria caché. En realidad, solo se requieren Usado y Caché, pero es la métrica Usada la que le indica cuánta memoria se ha usado realmente.
Respuesta2
De los comentarios...
Nota: recuerde que la RAM no utilizada se utiliza para los buffers de archivos y discos.
El verdadero problema es que su espacio de intercambio 2G es demasiado pequeño y su disco falla.
Aumentaría su intercambio a al menos 6G y modificaría su vm.swappiness del valor predeterminado de 60 a 80.
Para probar varias configuraciones de vm.swappiness, utilice sudo sysctl vm.swappiness=80
. Los valores de vm.swappiness superiores al valor predeterminado de 60 hacen un mayor uso del intercambio. Los valores inferiores a 60 utilizan más RAM.
Para hacerlo permanente, edítelo /etc/sysctl.conf
y agréguelo vm.swappiness=80
al final, luego reinicie.