Cómo reducir la sobrecarga de memoria de Linux
Para comprender el nivel básico de uso de memoria, inicie el sistema, inicie sesión en el sistema de escritorio, inicie una terminal (más adelante en este artículo, me referiré a esta configuración como nivel básico y luego usaré el comando gratuito para verificar la cantidad de memoria); Libere memoria en el sistema. Los resultados se muestran en el Listado 1. Listado 1. Ubuntu # Libre Total utilizado Búferes compartidos gratuitos Memoria en caché: 255988 231704 24284 0 6432 139292 - Búfers/caché: 85980 170008 intercambio: 746980 0 746980 La primera línea dice que 231 MB de los 256 MB de RAM están "en uso". La siguiente línea nos dice que aunque se utilizan 231 MB de memoria, la aplicación sólo utiliza 86 MB y los cachés utilizan la memoria restante; Para evaluar el rendimiento, la parte más importante de la lista es la línea de intercambio que nos dice que actualmente no estamos usando ningún espacio de intercambio, lo que significa que no estamos experimentando problemas de memoria actualmente. El sistema ahora puede cargar completamente la memoria física sin recurrir a un lento espacio de intercambio basado en disco. Luego, para comprender el uso diario del sistema, inicie un navegador web (Firefox 2.0), luego úselo para abrir DeveloperWorks, conecte el cliente de mensajería instantánea (Gaim) a MSN, use el administrador de archivos para explorar la carpeta, abra un Documento bastante grande en formato Microsoft Word. (En el resto de este artículo, esta configuración se denomina nivel de uso ligero. Una vez que se hayan cargado correctamente, el comando gratuito será como se muestra en el Listado 2. Listado 2. Nivel de uso ligero de Ubuntu en una máquina de 256 MB Ubuntu # free utilizada Memoria caché de búfer compartida libre total: 255988 252196 3792 0 21276 87500 -/buffers/cache: 143420 112568 swap: 746980 18676 725 Ahora la aplicación usa 143 MB de memoria física, el resto de la memoria está ocupada por buffers, además; El sistema ahora utiliza 18 MB de espacio de intercambio. La usabilidad del sistema generalmente parece buena en el caso de tareas de oficina livianas como esta, pero no hay mucho espacio para crecer y las operaciones que requieren más recursos, como la edición de enormes archivos de fotografías o videos digitales, pueden serlo. No será posible, porque el sistema se detuvo muy rápidamente durante el procesamiento. Para ver cómo funcionaba el sistema cuando solo tenía 128 MB, lo reinicié y agregué la opción mem=128M a la línea del kernel, como se describió anteriormente en el listado. Los resultados obtenidos con 128 MB de RAM para el mismo nivel de uso base se muestran en el Listado 3. Nivel de uso base de Ubuntu en una máquina de 128 MB ubuntu # free Memoria caché de búfer compartida libre total utilizada: 126121464 4636 0 1636 37000-/buffer/cache: 82828 43272 Swap : 746980 17924 Al iniciar el mismo conjunto de aplicaciones se obtienen los resultados que se muestran en el Listado 4. Niveles de uso ligero de Ubuntu en una máquina de 128 MB ubuntu # total gratuito utilizado Búferes compartidos gratuitos Caché DMEM: 100 123608 2492 0 392 51208 - /buffers/Cache: 72008 54092 swap: 746980 98452 648528 Como puede ver en estos gráficos, definitivamente no me gusta tener esto como mi host. La memoria total requerida fue de aproximadamente 170 MB, pero solo se cargaron 72 MB en la memoria, por lo que se movieron 98 MB al espacio de intercambio. Explique la capacidad de respuesta reducida del sistema. Para el siguiente conjunto de pruebas, decidí usar Xubuntu, que era paquetes de lanzamiento para proyectos relacionados con Ubuntu.
Esta distribución es muy similar a Ubuntu, pero usa Xfce 4.4 Beta 2 DE en lugar de GNOME. A diferencia de los proyectos más populares de GNOME y KDE que enfatizan las mejores características, Xfce está diseñado para ser liviano, por lo que se espera que maneje mejor los requisitos del hardware obsoleto. Usaremos esta distribución para realizar las mismas pruebas que Ubuntu. En el Listado 5, puede ver que el DE base usa 25 MB menos de memoria de aplicación que Ubuntu, y los buffers y cachés también usan mucha menos memoria que Ubuntu (lo que probablemente significa menos operaciones con archivos). Listado 5. Nivel de uso base para Xubuntu en una máquina de 256 MB: se puede ver desde el navegador web, el cliente de mensajería instantánea y el procesador de textos que para la misma combinación de aplicaciones, la memoria requerida es aproximadamente 20 MB menos que la de Ubuntu (126 MB de los cuales están en memoria física). , 17 MB en espacio de intercambio y el total * * * es 143 MB ; /buffers/cache: 126200 129788 swap: 746980 16956 730024 El Listado 7 muestra los niveles de uso básicos. Esta vez, el sistema con memoria limitada funciona bien y no se utiliza espacio de intercambio. Listado 7. Niveles de uso básicos de Xubuntu en una máquina de 128 MB: 126100. 123228 2872 0 4252 60484 - /buffers/cache: 58492 67608 swap: 746980 0 0 746980 En el Listado 8, inicie la aplicación de prueba nuevamente. Aunque este sistema funciona mejor que Ubuntu, todavía usa mucho espacio de intercambio y la máquina está funcionando. todavía un poco lento (sólo un poco mejor que Ubuntu). Listado 8. Nivel de uso liviano de XUBUNTU en una máquina de 128 MB. Con 128 MB (o menos de RAM), esta podría ser una mejor opción. Una característica importante de las distribuciones de Linux es que generalmente no cuestan nada. , por lo que es fácil descargar múltiples distribuciones y probar cada una por un tiempo. Decida qué distribuciones prefiere usar y cómo se implementan en el hardware. Si el hardware es muy limitado, es posible que desee considerar una distribución como. Damn Small Linux, que afirma funcionar en un sistema con un procesador 486DX y sólo 16 MB de RAM. Como todavía tengo un poco de espacio libre en mi sistema de 256 MB, normalmente prefiero usar KDE, así que probé otro derivado de ubuntu, Kubuntu, que está basado en KDE y está aproximadamente entre Xubuntu y Ubuntu en términos de uso de memoria. Como referencia, el Listado 9 muestra un nivel básico de uso de Kubuntu. Listado 9.
Nivel de uso base de Kubuntu en una máquina de 256 MB Kubuntu #Free Número total de buffers compartidos libres utilizados Memoria caché: 255988 244736 11252 0 7612160008 - Buffers/caché: 771616178872 Área de intercambio: 746980 748 Los requisitos de memoria de diferentes aplicaciones pueden ser grandes. A veces hay diferencias; Hay un equilibrio entre tamaño y funcionalidad, pero en otros casos, incluso aplicaciones con la misma funcionalidad pueden tener enormes diferencias en los requisitos de memoria. Para medir el uso de memoria para este artículo, usaremos la herramienta exmap. Esta herramienta es más precisa que ps o top porque tiene en cuenta las bibliotecas compartidas utilizadas por múltiples aplicaciones. Por ejemplo, si dos aplicaciones usan la misma biblioteca compartida y cada aplicación ocupa 1 MB de memoria, ps mostrará que ambas aplicaciones usan 1 MB adicional de memoria, mientras que exmap puede mostrar cada aplicación con mayor precisión. Solo se usan 500 KB de memoria. Esta precisión es importante para evaluar entornos de escritorio como KDE y GNOME, donde las bibliotecas compartidas se utilizarán ampliamente entre aplicaciones. Para cada aplicación que se analiza a continuación, medí los valores de residente y residente efectivo generados por exmap. El valor residente representa la memoria física total utilizada por el proceso, incluidas * * * bibliotecas compartidas utilizadas por otros procesos. Este valor suele ser el mismo que el valor generado por ps o top; La memoria ocupada por la biblioteca compartida * * * se distribuye uniformemente a cada * * * proceso compartido para obtener el valor residente efectivo, este valor es más preciso desde la perspectiva de la memoria del sistema consumida por el proceso especificado; También debe tener en cuenta que al determinar la sobrecarga total de memoria de un proceso, también debe considerar los valores de mapeado y mapeado efectivamente, que son las partes del proceso que se encuentran en el espacio de intercambio. Un valor asignado es similar a un valor residente, pero es para una página en el espacio de intercambio en lugar de una página en la memoria física. Por lo tanto, para ver los datos sin considerar el disfrute * * * de la biblioteca, puede agregar los valores de residente y mapeado juntos; para ver los datos al considerar * * * * la biblioteca, debe agregar el valor; valores de residente efectivo y mapeo efectivo Juntos. Al hacer esta tabla, estos valores no se registraron porque para nuestras pruebas no había procesos en el espacio de intercambio, por lo que la salida del comando exmap fue todo 0 para estas columnas. Navegador web Inicie este programa para todos los navegadores en la Tabla 1 y abra la página de inicio de DeveloperWorks, luego espere a que se muestren todos. Los resultados se muestran en la Tabla 1. Tabla 1. Uso de memoria de los navegadores web en comparación con la memoria residente efectiva (KB) de la aplicación Memoria residente (KB) Firefox 27708 35068 Opera 20477 27816 Konqueror 13479 29748 Dill O 2776 6888 Lynx 110111540 Como puede verse en la tabla, el uso de memoria de estos navegadores La situación Es que esta no es una comparación muy justa, ya que Lynx no puede lograr la misma funcionalidad (por ejemplo, ni siquiera puede mostrar gráficos), pero demuestra que el uso de memoria se puede reducir mucho dependiendo de las necesidades. Aunque los primeros tres navegadores enumerados en la Tabla 1 tienen algunas de las mismas funciones que el primer navegador, Opera usa sólo alrededor de 2/3 de la memoria de Firefox y Konqueror usa la mitad de Firefox. Dillo es un compromiso entre un navegador con todas las funciones y Lynx con sólo una pequeña cantidad de gastos generales. Dillo proporciona una GUI; sin embargo, de forma predeterminada, su funcionalidad es bastante limitada y ningún otro complemento admite SSL. También tenga en cuenta que también comparamos el uso de la memoria compartida. Konqueror funciona mejor que Firefox y utiliza unos 14 MB menos de memoria. Pero si nos fijamos en el uso general, Konqueror sigue siendo mayor que Firefox, pero la diferencia no es grande, sólo unos 5 MB.
Esto se debe a que Konqueror utiliza una gran cantidad de bibliotecas KDE ***, que se cargan en varias aplicaciones cuando se usa el escritorio KDE. Sin embargo, si no utiliza ninguna otra aplicación de KDE, Opera será una mejor opción que KDE. Discutiremos este tema con más detalle más adelante. Procesador de textos Para probar el procesador de textos, cargué el mismo documento de Microsoft Word que usé cuando probé por primera vez el procesador de textos que figura en la Tabla 2. Tabla 2. Uso de memoria de la aplicación del procesador de textos en comparación con la memoria residente efectiva (KB) memoria residente (KB) OpenOffice Writer 7011481960 Abiword 58029 65224 kword (de KOffice) ) 46512 60096 A partir de estas cifras, resulta obvio que Open Office Writer utiliza más memoria que KWord o ABI word . KWord utiliza menos memoria que OpenOffice y hace el mejor trabajo al mostrar correctamente documentos en formato Microsoft Word. Si bien AbiWord puede abrir documentos con éxito, tiene algunos problemas para mostrarlos correctamente, por lo que si la colaboración con Microsoft Office es muy importante para usted, es mejor que elija OpenOffice. Cliente de mensajería instantánea Para probar la mensajería instantánea, inicié sesión en mi cuenta de MSN Messenger utilizando el cliente de mensajería instantánea que se muestra en la Tabla 3. Tabla 3. Uso de memoria de la aplicación cliente de mensajería instantánea versus memoria residente efectiva (KB) Memoria residente (KB) amsn 18455 20344 gaim 13456 21464 kopete 10988 24176 KMess 7154 19660 Aquí, KMess me conviene más y es una opción razonable porque solo si necesito usar otros servicios entonces Kopete parece ser la mejor opción. Pero cabe señalar que si se utiliza un protocolo de mensajería instantánea diferente, la memoria utilizada por la aplicación puede aumentar, además, Kmess es una aplicación KDE integrada; Si no utiliza KDE, Gaim puede ser más adecuado para usted. Analizar, seleccionar y repetir Ahora que sabe cómo analizar el uso de memoria de una aplicación, puede simplemente repetir este proceso para todos los tipos de aplicaciones que le interesen y experimentar con todas las opciones disponibles hasta que encuentre la que tenga los requisitos de memoria más bajos; Opciones que cumplen con los requisitos funcionales. En la sección anterior del navegador web, es posible que haya notado que cuando se utilizan aplicaciones, las aplicaciones que consumen más memoria suelen ser aquellas que están estrechamente integradas con el entorno de escritorio. Esto se debe a que estas aplicaciones suelen utilizar muchas * * * bibliotecas compartidas integradas en el DE, y es posible que estas * * * bibliotecas compartidas se hayan cargado en el sistema. Por ejemplo, Konqueror es un administrador de archivos y navegador web para KDE, por lo tanto, utiliza mucha menos memoria que Firefox cuando se ejecuta en un sistema KDE, ya que la mayor parte de su funcionalidad se carga en el sistema a través de otras aplicaciones. Del mismo modo, si desea utilizar un agregador RSS, Akregator podría ser una buena opción, ya que probablemente también utilice la misma biblioteca. Por lo tanto, si le preocupa el uso de la memoria, es muy importante que realice estas pruebas en su propio sistema, porque es difícil saber qué aplicación utiliza menos memoria en su sistema al observar los resultados de las pruebas comparativas de otras personas. Este hecho también influyó en la elección de De. Por ejemplo, si realmente desea utilizar Konqueror, puede que sea más eficaz utilizar KDE para DE. Del mismo modo, si es usuario de GNOME, querrá pensarlo dos veces antes de utilizar una aplicación KDE corta que le interese, ya que puede utilizar todo el host para cargar bibliotecas, pero sólo usted las utilizará. Paso 3: Después de eliminar los servicios innecesarios y configurar la distribución, el entorno de escritorio y la combinación de aplicaciones que haya elegido, ¿qué puede hacer para reducir la memoria que utiliza? Responder a esta pregunta requiere una investigación y configuración profundas del sistema.
Con la ayuda de exmap, puede analizar qué se está ejecutando en su sistema, luego intentar eliminar contenido innecesario y configurar el sistema según sus necesidades. Un buen punto de partida es un servicio que se inicia automáticamente cuando se inicia el sistema, pero hay que tener mucho cuidado de no eliminar nada necesario mientras el sistema se está ejecutando. Debe investigar qué requiere la distribución específica y cómo está configurado el servicio, ya que estos pueden diferir de una distribución a otra. Algunas distribuciones son peores que otras porque inician muchos servicios innecesarios de forma predeterminada, como servidores web, que ocupan mucha memoria. Además de los servicios del sistema, es posible que también desee conocer la configuración DE, ya que también puede iniciar servicios innecesarios. Mi sistema Kubuntu no parece tener muchos servicios innecesarios iniciados, pero un vistazo rápido a la lista de procesos revela algunos obvios que podrían eliminarse: HPLIP (4,4 MB): un servicio utilizado por las impresoras y escáneres HP. Este servicio no es necesario porque no hay ningún dispositivo conectado a esta máquina.
Cupsd(1.1MB): Proceso de procesamiento en segundo plano de la impresora. Este servicio no es necesario porque esta máquina no está conectada a una impresora.
Kbluetooth (3,2 MB): Proceso de procesamiento en segundo plano de Bluetooth de KDE. Este servicio no es necesario porque no hay conexión Bluetooth en esta máquina.
Klipper (1,7 MB): herramienta portapapeles de KDE. No consideré usar esta herramienta, así que la desactivé.
KMIX (4,1MB): sintetizador de audio KDE. No necesito ejecutarlo todo el tiempo ya que ajusto el volumen a través de los parlantes externos. La configuración sólo lleva 5 minutos y puede ahorrar unos 14 MB de memoria, en comparación con el ahorro inicial de unos 77 MB, lo que es un buen punto de partida. Vale la pena conocer la configuración de su DE y otras aplicaciones grandes, ya que algunas configuraciones pueden afectar la cantidad de memoria utilizada. Por ejemplo, al reducir la cantidad de escritorios virtuales, puede ahorrar algo de memoria, especialmente si usa un mapa de bits más grande como fondo. Desactivar algunos de los extraños efectos de visualización también podría ayudar. Paso 4: Cuando utilice correctamente hardware antiguo, considere las limitaciones de la máquina y utilícela correctamente. Por ejemplo, si desea editar un grupo de fotos, no abra todas las fotos al mismo tiempo. Esto simplemente consume memoria innecesariamente. Es mucho más fácil si los abre uno tras otro y los cierra inmediatamente después de editarlos. Del mismo modo, si estás intentando capturar y editar algún vídeo, considera capturar cada pantalla individualmente en lugar de todas a la vez. Si estás creando un documento grande con una presentación gráfica, no agregues imágenes hasta que hayas terminado de editarlo; texto. Paso 5: El último paso para optimizar su sistema es observar la cantidad de memoria en su sistema y ver si puede guardar algo de memoria en algún lugar. Hay muchas oportunidades para ahorrar memoria, pero el rendimiento se verá afectado. Para la mayoría de las personas, el impacto negativo en el rendimiento y la cantidad de trabajo requerido hacen que no valga la pena. Sin embargo, puede considerar lo siguiente: recompilar el kernel sólo con controladores específicos del hardware. La mayoría de las distribuciones principales son adecuadas para una gran cantidad de hardware, por lo que normalmente admiten una gran cantidad de hardware que no utiliza. Esto puede generar ciertas ventajas, aunque el soporte de hardware en forma de módulos no se carga en el sistema cuando no es necesario. La recompilación de una aplicación o biblioteca específica para optimizar su tamaño está dedicada a la CPU específica que se utiliza, lo que también puede ahorrar algo de memoria. La distribución Gentoo hace esto muy bien y usted puede recompilar fácilmente algunos o todos los componentes del sistema con los indicadores de compilación exactos que elija. Desafortunadamente, este proceso puede ser extremadamente largo cuando se ejecuta en máquinas más antiguas. Eliminar algunas funciones de una aplicación o biblioteca y luego volver a compilarlas también puede reducir algunos requisitos de memoria. Usar Gentoo también es una buena idea porque incluye el concepto de uso de etiquetas, lo que hace que el sistema sea fácil de construir después de que se deshabilitan las funciones de la aplicación. Esto puede reducir significativamente el tamaño de su aplicación. Las aplicaciones suelen admitir una gran cantidad de formatos de archivos y códigos cuando se lanzan, lo que generalmente requiere cargar algunas bibliotecas para brindar soporte práctico.
Si sabe que nunca leerá, digamos, un archivo JPEG, puede tenerlo en cuenta en Gentoo (usando = "-JPEG") para que cualquier aplicación que maneje gráficos no admita JPEG después de la compilación, reduciendo así la carga de memoria. El kernel 2.6 lanzado recientemente tiene un parámetro de intercambio que se puede ajustar en tiempo de ejecución. Este parámetro determina la posibilidad de mover aplicaciones para intercambiar espacio en lugar de reducir cachés y buffers. En las pruebas anteriores, puedes ver que es común intercambiar aplicaciones y reservar una gran cantidad de memoria física para el almacenamiento en caché. Al reducir la probabilidad de intercambio, se puede reducir el almacenamiento en caché para que puedan permanecer más aplicaciones en la memoria. Sin embargo, si este movimiento realmente hace que la máquina funcione más rápido depende de las aplicaciones que la ejecutan. Si cambia entre aplicaciones con frecuencia, la capacidad de respuesta de la máquina puede mejorar porque es más probable que estén en la memoria; sin embargo, si hay una tarea que realizará muchas lecturas y escrituras en el disco, esto puede ser lento; En general, reducir la conmutatividad mejora la capacidad de respuesta de las aplicaciones interactivas pero reduce el rendimiento general del sistema. Conclusión Las ideas de este artículo pueden rejuvenecer su antigua máquina (junto con alguna otra seguridad) y hacer que utilice mejor Linux en su antiguo hardware. Los resultados de las mediciones muestran que una máquina de 800 MHz/256 MB puede ejecutar un escritorio Linux bastante fácil de usar para satisfacer las necesidades diarias livianas de la oficina y el hogar, como enviar correos electrónicos, navegar por la web, procesar textos, etc. Con algunos ajustes y experimentación, incluso una máquina de 128 MB puede convertirse en una computadora de escritorio satisfactoria. Aunque este artículo se centra en implementar un escritorio que funcione bien en un hardware bastante limitado, se pueden utilizar los mismos principios para otras aplicaciones de Linux. No importa cuánta memoria tengan las últimas supercomputadoras, no lleva mucho tiempo descubrir que nuevas aplicaciones la están llenando.