¿Inconvenientes del uso de precarga? ¿Por qué no está incluido por defecto?

110

Me gustaría saber cuáles son las desventajas de usar preload? Si no hubiera inconvenientes, preloadestaría habilitado por defecto, así que supongo que hay algunos.

De acuerdo, necesitas un poco más de RAM, pero la mayoría de las personas tienen mucho más RAM que Ubuntu necesita, entonces, ¿cuáles son las desventajas de usar preload?

Paradiesstaub
fuente
66
Gracias por tu útil pregunta. Quiero saber, ¿es un mito?
Saeed Zarinfam
1
El uso de la CPU y la batería pueden ser un inconveniente para algunos ... bugs.launchpad.net/ubuntu/+source/preload/+bug/481861
Mateo
1
Buena pregunta. Algunas distribuciones vienen cargadas con precarga, como el sistema operativo elemental (que es lo que ejecuto en mi computadora portátil porque la gala es mucho más rápida que la unidad de Ubuntu).
1
Solo una suposición: una razón para no incluirlo de forma predeterminada es el hecho de que no se puede usar en todos los sistemas (sus requisitos de hardware pueden ser diferentes de los requisitos estándar).
don.joey
2
brainstorm.ubuntu.com/idea/1122 una publicación aquí sugiere que "se ejecuta como un demonio con privilegios de root". Lo que puede ser un problema de seguridad, también existe esta lluvia de ideas que quiere su inclusión predeterminada brainstorm.ubuntu.com/idea/14092
Mateo

Respuestas:

65

En pocas palabras, Preload no es para todos. Es genial si abres muchas aplicaciones o bibliotecas. Es dañino si carga aplicaciones o bibliotecas solo ocasionalmente. Usaré dos ejemplos de mi uso real (y sí, uso precarga).

Primero, Google Chrome. Ahora se abre un navegador solo una vez por arranque, tal vez dos veces (para mí, soy desarrollador web). Chrome y sus bibliotecas relacionadas permanecen en la memoria porque siempre lo estoy usando. Incluso cuando cierro todas las ventanas de cromo, todavía está en el fondo haciendo lo suyo. Por lo tanto, todo el carnero dedicado a mantener una copia de precarga de Chrome es un desperdicio total y absoluto. Nunca (o rara vez) se descarga. Para el usuario promedio, esto es cierto para una gran cantidad de aplicaciones. Un usuario de Office casi siempre tendrá abierta su aplicación de correo electrónico. Por lo tanto, los pequeños ahorros en el tiempo de inicio se desperdician por completo porque solo abren su aplicación de correo electrónico una vez al día y la dejan abierta.

El segundo ejemplo es el rastrillo. Como desarrollador de ruby ​​que cree en las pruebas, ejecuto rake a TON. el rastrillo se ejecuta, se ejecuta durante un par de segundos, minutos y luego sale. Preload me ayuda a acelerar mi trabajo diario porque carga rake y sus bibliotecas necesarias (que pueden ser muy extensas) con anticipación. Por lo tanto, hay muchos inicios y paradas para la ejecución del rastrillo. El ariete adicional utilizado para acelerar los 400 o 500 lanzamientos de rastrillo en unas pocas horas vale la pena.

Por lo tanto, la razón por la que no está habilitada de manera predeterminada es porque su capacidad para mejorar realmente el rendimiento se basa en gran medida en cómo usa su sistema. Para algunas personas será negativo y para otras positivo.

Por último, tener precargada, incluso si no la está usando, consume RAM. Entonces, si no está iniciando aplicaciones con frecuencia, en realidad podría hacer que todo su sistema sea fraccionalmente más lento al no tener ese ram disponible para otros tipos de almacenamiento en caché. Recuerde, incluso si tiene 32 Gigs de ram, Linux intentará usar la mayor cantidad posible para almacenar datos en caché para que su interacción sea más rápida. Al usar preload, reduce un poco esa memoria libre. Incluso si es solo un poquito, los 2 segundos que guardó al iniciar Chrome 1 vez podrían costarle 60 segundos durante el mes en que permanece en funcionamiento.

coteyr
fuente
1
Además, el uso de precarga ralentiza el arranque. Mientras más cosas estén precargadas, más tiempo llevará poner en funcionamiento su sistema. Ahora, imagine que todo lo que quiere hacer es arrancar, escribir una oración en un memo y cerrar inmediatamente. Esperarás incluso para poder escribir la nota, porque tu sistema está precargando cosas que probablemente no estén relacionadas con esa tarea. Por lo tanto, en cierto modo, la precarga (en general) es una espada de doble filo.
F-3000
1
La precarga no funciona realmente de esa manera ... Le da al kernel pistas como "oye, carga esto en tu caché mientras estás allí, lo necesitaré pronto" y el kernel lo hace. Entonces, en realidad no está usando la RAM como la describe. Dos cosas pueden suceder, sin embargo: la carga en caché elimina las aplicaciones que va a utilizar pronto, lo que resulta en una breve congelación y actividad del disco duro cuando vuelve a la aplicación.
hurikhan77
1
Segundo: si la precarga predice que su patrón de uso es incorrecto (lo cual puede ser el caso si ha cargado constantemente aplicaciones), almacena en caché cosas que luego serán expulsadas de la RAM nuevamente y, a su vez, expulsó la caché de la RAM que puede tener mejor uso para. Pero al final solo "consume" RAM como lo hace el caché vfs, por lo que en realidad es RAM descartable y, por lo tanto, "RAM libre" de alguna manera. Sin embargo, compite con el "caché normal" mientras escribe.
hurikhan77
1
Teniendo en cuenta los retiros anteriores de coteyr y @ hurikhan77, ¿está de acuerdo en que Preload es una forma contra-efectiva para ayudar a mejorar la velocidad percibida en cajas de escritorio antiguas y con poca RAM (~ 800 MB libres al inicio). Para su información, la activación de Preload en esas cajas restauradas le dará mucho trabajo al administrador de memoria virtual del kernel por poca mejora.
tuk0z
2
@lliseil Si esos 800 MB son RAM realmente sin asignar, la precarga puede ayudar ... Pero probablemente funcione mejor con más RAM. Y a su vez eso significa: la precarga entrará en conflicto con las aplicaciones que consumen mucha memoria que puede comenzar más tarde. Puede ser necesario reducir el intercambio aquí, lo que probablemente haga que la precarga sea inútil tan pronto como vaya a usar demasiada RAM.
hurikhan77
21

Pregunta formulada por Bountier Saeed Zarinfam el 5 de septiembre de 2012:

Hola a todos, quiero saber, ¿es un mito? ¿ [Preload] realmente mejora mi rendimiento? ¿Cuáles son los inconvenientes de usarlo? Tengo una computadora portátil con esta especificación (CPU Core i5, 4 GB de RAM, 128 GB de disco duro SSD). Muchas gracias.

  • No hay necesidad real de precarga si tiene un SSD
    • Esto se debe a que los SSD proporcionan tiempos de acceso aleatorio mucho más rápidos que los discos duros, por lo que "binarios / dependencias de" precarga "en la memoria es un desperdicio, en mi opinión
    • La desventaja básica es que la precarga es "usar" memoria adicional sin proporcionar un beneficio tangible.
ish
fuente
20
Esto no cubre la pregunta del OP, ya que hay inconvenientes en el uso de preload? En segundo lugar, formó una opinión, formuló una declaración sobre la "precarga" y luego introdujo "SSD" en la ecuación. ¿En qué momento ibas a responder la pregunta?
Ringtail
12

Preload es un "demonio de lectura adaptable" que se ejecuta en segundo plano en su sistema y observa qué programas usa con más frecuencia, almacenándolos en caché para acelerar el tiempo de carga de la aplicación. Al usar Preload, puede hacer que la RAM no utilizada funcione bien y mejorar el rendimiento general de su sistema de escritorio.

No espere ver un cambio drástico en el rendimiento de inmediato. Además, si solo está abriendo / cerrando aplicaciones de manera repetitiva, su computadora almacenará esos archivos en la memoria caché de todos modos (esto se llama carga "cálida"), por lo que no verá ninguna diferencia en la velocidad allí. Sin embargo, verá una mejora en la velocidad si, por ejemplo, usa un programa de manera intermitente; Estos programas se iniciarán más rápido que sin Preload.

La precarga puede proporcionar una gran mejora en el tiempo de inicio de la aplicación; Como la mayoría de las máquinas modernas tienen una gran cantidad de memoria de sobra, Preload le da un buen uso a esta RAM. 1

Dicho esto, parece que la precarga es una gran utilidad, y podría serlo.

Creo que la razón por la que no está precargado con el sistema operativo es porque el usuario debe saber exactamente qué está haciendo, y tener suficiente experiencia para poder usarlo, y el sistema debe tener suficiente RAM.

En un aspecto más técnico, la precarga funciona al mover datos del disco duro a la RAM, lo que hace que la mayoría del disco duro pase al modo de suspensión si no se usa, y luego tiene que volver a girar cuando sea necesario. Por lo tanto, si gira la unidad hacia arriba o hacia abajo, el recuento del ciclo de carga / descarga y el recuento del tiempo de encendido aumentarán, lo que acortará la vida útil de la unidad.

Diseñamos e implementamos preload, un esquema de captación previa adaptable basado en Markov que funciona en predicciones a nivel de aplicación. Además, la precarga se implementa en el espacio de usuario y no cambia el entorno de tiempo de ejecución de la aplicación en ningún sentido. Este es el primer trabajo que se experimenta con la captación previa del sistema de archivos en este nivel hasta donde sabemos.

Nuestros resultados experimentales muestran mejoras prometedoras en el tiempo de inicio de la aplicación en comparación con los cachés en frío, y una tasa de éxito decente en comparación con un algoritmo de predicción ingenuo.

Sin embargo, estar en el espacio del usuario introduce obstáculos importantes para que la precarga sea una solución competitiva para el problema del tiempo de inicio. En particular, no tener información completa sobre las solicitudes de E / S de las aplicaciones, y la falta de canales de comunicación sólidos con el subsistema de caché de página degrada drásticamente la eficacia de la precarga, especialmente en condiciones de poca memoria.

Otro problema inherente con el diseño de precarga es la alta varianza y la baja confianza de predicción causada por la correlación relativamente floja de los inicios de aplicaciones. Si bien creamos con éxito un modelo para rastrear las correlaciones de las aplicaciones, el hecho de que los lanzamientos de aplicaciones sean eventos muy raros en comparación con la escala de tiempo en la que trabajan las computadoras, un esquema de captación previa a nivel de aplicación está condenado a consumir una gran memoria de captación previa durante períodos de tiempo prácticamente infinitos. Esta memoria se puede usar para mejorar el comportamiento de la memoria caché a corto plazo.

Finalmente, presentamos un conjunto de recomendaciones para desarrolladores de sistemas sobre cómo mejorar el tiempo de arranque, el tiempo de inicio de sesión y el tiempo de inicio de la aplicación sin recurrir a un prefetcher integrado con el subsistema de caché en el núcleo. Por supuesto, un prefetcher basado en archivos en el núcleo puede mejorar además de eso. 2

1 Fuente: techthrob

2 Fuente: Preload - Un Adaptive Prefetching Daemon por Behdad Esfahbod - Una tesis presentada de conformidad con los requisitos para el grado de Maestría en Ciencias - Departamento Graduado de Ciencias de la Computación - Universidad de Toronto Copyright (c) 2006 por Behdad Esfahbod.

Mitch
fuente
1
Gracias por tu respuesta, Mitch. Estos fueron mis pensamientos también. Especialmente en computadoras portátiles, la precarga puede ser un problema. Pero aún así, me encantaría encontrar una fuente / discusión oficial sobre por qué el equipo de Ubuntu decidió no enviar la precarga.
Glutanimate
9

Inconvenientes? ¡No hay ninguno!

Mayor rendimiento en la apertura de aplicaciones por parte del usuario. Lo he usado durante años en mis sistemas, así como "lectura anticipada" y no tengo problemas. La página de errores para la precarga tampoco sugiere inconvenientes.

Preload monitorea las aplicaciones que los usuarios ejecutan y, al analizar estos datos, predice qué aplicaciones podrían ejecutar los usuarios y recupera esos binarios y sus dependencias en la memoria para tiempos de inicio más rápidos.

Aumenta un poco el tiempo de arranque, sin embargo, la velocidad disminuye el tiempo de recuperación de aplicaciones que supera con creces este pequeño problema.

ver articulo

Si usa constantemente aplicaciones comunes como Firefox o Gimp , notará algunos tiempos de carga muy mejorados. Preload es un demonio que se ejecuta discretamente en segundo plano y no interrumpirá su escritorio de ninguna manera. Los usuarios de Ubuntu pueden instalar precarga con:

sudo apt-get install preload

Resultados:

Gráfico que muestra la diferencia entre el inicio normal y el de precarga

árbitro

Cola de anillo
fuente
3
Sé lo que dosifica y leí varios 'HowTos de precarga', pero en ninguna parte pude leer algo sobre los inconvenientes. Si no hubiera inconvenientes, se enviaría de forma predeterminada con muchas distribuciones de Linux, pero que yo sepa, ese no es el caso.
Paradiesstaub
1
El rendimiento no disminuye , sino que aumenta . Ese es el punto de usar precarga. Tal vez es solo un error tipográfico.
Marco
2
Su diagrama se ve muy bien pero carece de información importante. Encajaría al 100% en una presentación de powerpoint de un vendedor, pero es un ejemplo de 'malas estadísticas'. ¿De dónde vienen estas cifras? ¿Qué protocolo se usó para grabarlos? ¿Qué es una instantánea única? ¿Cuántas máquinas participaron en la muestra? ¿Cuál fue el hardware? ¿Cómo se configuró el programa de precarga?
1
@Ringtail: Tienes razón. No eres el autor de ese diagrama. Pero si hace clic en todos los enlaces de los artículos, se encuentra con una página de Techthrob.com que debería haber alojado un artículo escrito por el autor del programa. Pero esa página se ha ido. Entonces solo hay una fuente: la tesis del autor.
2
Uno debería actualizar el hardware si un terminal de gnomo tarda más de 2 segundos en iniciarse ...
Peter y el lobo