La memoria RAM es barata y mucho más rápida que las SSD. Es simplemente volátil. Entonces, ¿por qué las computadoras no tienen MUCHA RAM, y cuando se encienden, cargan todo en la RAM desde el disco duro / SSD y simplemente ejecutan todo desde allí, asumiendo que no hay necesidad real de conservar algo fuera de la memoria? ¿No serían las computadoras mucho más rápidas?
Por supuesto, es posible que el sistema operativo actual no admita esto en absoluto, pero ¿existe alguna razón para que la RAM no se use de esta manera?
Respuestas:
Hay algunas razones por las que RAM no se usa de esa manera:
Dicho esto: Sí, los discos RAM sí existen. Como llano Placa PCI con zócalos DIMM y como electrodomésticos para IOps muy altos. (Se utiliza principalmente en bases de datos corporativas antes de que los SSD se conviertan en una opción). Estas cosas son no es barato aunque.
Aquí hay dos ejemplos de tarjetas de disco RAM de gama baja que se convirtieron en producción:
Tenga en cuenta que hay más formas de hacerlo que simplemente creando un Disco RAM En la memoria de trabajo común.
Usted puede:
Estoy seguro de que hay mucho más que describir, desde Amiga RAD: restablecer los discos RAM sobrevivientes a IOPS, nivelación de desgaste y D-D sabe qué. Sin embargo, voy a cortar este breve y solo enumerar un elemento más:
Precios DDR3 (DRAM actual) frente a precios SSD:
fuente
RAM loses its contents when powered off.
Para ser exactos, solo la RAM volátil lo hace pero RAM no volátil mantiene todo incluso cuando está apagado, como por ejemplo Chips de flash . En ese sentido, la SSD no es diferente de la RAM sino de un subtipo de la misma.Los sistemas operativos ya lo hacen, con la caché de página :
Cuando lees una página de un disco, tu sistema operativo cargará esos datos en la memoria y los dejará allí hasta que tenga un mejor uso para esa memoria. Si tiene suficiente memoria, su sistema operativo solo leerá cada página una vez y luego la usará de la memoria. La única razón por la que el sistema operativo realizará una E / S de disco real es si necesita leer una página que aún no está en la memoria, o si se escribe una página (en cuyo caso, es probable que desee guardarla en el disco).
Una ventaja de hacer las cosas de esta manera es que no tiene que cargar todo el disco duro en la memoria, lo cual es útil si no encaja, y también significa que no pierde el tiempo leyendo archivos que sus aplicaciones no necesitar. Otra ventaja es que la memoria caché se puede descartar siempre que el sistema operativo necesite más memoria (es mejor que la próxima lectura del disco sea un poco más lenta que que los programas se bloqueen porque no tienen memoria). Además, es útil que los usuarios no tengan que decidir manualmente lo que debería estar en el disco ram o no: lo que use con más frecuencia se guardará automáticamente en la memoria principal.
Si tiene mucha memoria, pero sus aplicaciones no se ejecutan tan rápido como cabría esperar, hay muchas posibilidades de que sean más lentas porque se ejecutan de forma segura. Por ejemplo, SQLite es más rápido en órdenes de magnitud si le dice que no espere a que se completen las escrituras, pero su base de datos se romperá completamente si no se cierra de forma limpia.
También,
/tmp
suele ser un ramdisk en las distribuciones de Linux, porque está bien si los datos se pierden. Todavía hay cierto debate sobre si es una buena idea, porque si se escriben demasiados datos/tmp
, puedes quedarte sin memoria.fuente
Como señala Alan Shutko en su comentario sobre la pregunta, la memoria RAM no es realmente barata.
Aquí hay algunos puntos de datos. Cuando busco en Google 4 GB RAM, 64 GB SSD y 1 TB HDD (disco duro mecánico), aquí están los costos que veo (esto es para el 25 de agosto de 2013):
4 GB de RAM = $ 32 - $ 36 = & gt; RAM = ~ $ 8 por GB
64 GB SSD = $ 69 - $ 76 = & gt; SSD = ~ $ 1 por GB
HDD de 1 TB = $ 80 = & gt; HDD = $ 0.08 por GB
Whoa! ¡Los discos duros son 100 veces más baratos que la memoria RAM! Y los SSD son 8 veces más baratos que la memoria RAM.
(Además, como se señaló en otras respuestas, la RAM es intrínsecamente volátil, por lo que necesita otra forma de almacenamiento persistente).
fuente
Realizo todas mis operaciones inmediatas de lectura / escritura para la generación de contenido en discos RAM en mi máquina local. También almaceno allí mis carpetas de diario MongoDB, así como mis compiladores, intérpretes de Python y biblioteca estándar. Este disco se guarda al apagarse y se restaura al iniciar. El segundo disco RAM que uso es de 64 megabytes y todas las carpetas de caché de mi navegador de Internet apuntan allí; ese se pierde cuando se apaga, y se vacía cuando está lleno.
Usar las herramientas adecuadas para el trabajo, supongo, sería la respuesta que te ofrezco. Estoy generando datos 30-1000x más rápido usando un disco RAM que en mi Western Digital de 7200 rpm.
Este es el programa que estoy usando: http://www.romexsoftware.com/en-us/primo-ramdisk/
... y cuando 32gigs of Ram es menos de $ 200, no veo por qué esto no se está volviendo más común.
fuente
Sí, esta es la premisa de muchas bases de datos en memoria que están saliendo al mercado. Un ejemplo es SAP HANA. La idea es que la memoria RAM sea barata y, desde el punto de vista del rendimiento, las operaciones de lectura / escritura en la memoria RAM sean 1000 veces más rápidas que las operaciones de disco. Así que la mayoría de los datos se guardan en la RAM y luego se define una estrategia de envejecimiento de los datos mediante la cual los datos antiguos se reciclan de nuevo al almacenamiento en frío (es decir, disco).
fuente
Breve explicación :
La primera vez que se ejecuta una aplicación, se transfiere desde el disco duro o la red a la RAM. Entonces, no te preocupes, ya lo haces.
Pero, por lo general, no hay un solo archivo de aplicación / proceso y hay algunas operaciones de E / S dirigidas al disco duro o la red (otros archivos de la aplicación u otras operaciones de E / S con el sistema, etc.), que pueden ralentizar su solicitud. Es posible que se dirijan al disco RAM, pero debe considerar que el disco RAM se borra al apagarse y debe llenarse nuevamente al inicio.
Y la memoria RAM no es tan barata como se presenta en la pregunta. Debe contar no solo el costo de la RAM, sino también el costo de la RAM de trabajo, incluidos los sockets de su placa base (que son limitados / raros y, por lo tanto, más valiosos) y el costo de la pérdida de datos, cuando la alimentación eléctrica disminuye.
Por ejemplo, una computadora con disco duro de 1TB se puede comprar a bajo costo y se trata de computación doméstica, una computadora con 1TB de RAM está en rangos de supercomputadores. (Pero Intel está trabajando en algo de rango medio: http://vr-zone.com/articles/more-on-xeon-e5-terabyte-of-ram-even-at-midrange-/14366.html )
fuente
Esta es una GRAN pregunta y las respuestas me parecen fascinantes. Voy a comentar sobre esto como un DBA de Oracle y mis respuestas son ESPECÍFICAS a la base de datos de Oracle. Este es un gran error que mucha gente comete al trabajar con Oracle. No estoy seguro si esto se aplica a otras aplicaciones también. Esto no pretende ser fuera de tema, pero está pensado como una respuesta especializada.
Cuando ajusta el rendimiento con Oracle, realmente está buscando aclarar cuellos de botella. Aunque la mayoría de nosotros no lo decimos, se basa en la Teoría de las restricciones: https://en.wikipedia.org/wiki/Theory_of_constraints
La memoria puede no ser su cuello de botella. Oracle tiene mecanismos complejos para administrar la memoria y solo aumentar la memoria puede ralentizar las cosas si otras áreas están donde está el cuello de botella. Déjame darte un ejemplo que es MUY común.
Las consultas parecen ser lentas. El consenso es que si aumentamos la RAM, deberíamos aumentar el tiempo de respuesta de las consultas, ya que la memoria es más rápida que el disco. Bueno ... Así es como Oracle maneja la administración de memoria para datos. Oracle tiene una variedad de ubicaciones de memoria que están asignadas a tareas específicas. Así que puedes aumentar estos recuerdos. El área utilizada para los datos se llama 'caché de búfer'. Esta es una serie de listas vinculadas (el número de ellas tiende a aumentar con cada versión). Cada vez que se encuentra un bloque en el disco durante una consulta, se ejecuta un algoritmo hash para determinar en qué lista se debe pegar. El lugar donde se incluye en la lista se basa en un algoritmo de conteo táctil (explicado en el sitio de soporte de Oracle así que tienes que pagar para conseguirlo ... no es realmente importante).
SIN EMBARGO, cuando ejecuta una consulta, Oracle saca un pestillo en la cadena de búfer que busca en ese momento. Este LATCH (nota: esto no es un bloqueo. Google "traba" si no conoce la diferencia) bloquea todas las demás operaciones en esa cadena durante la duración de su lectura. Por lo tanto, bloquea las lecturas Y las escrituras (esto es completamente diferente a los reclamos de Oracle que no bloquean las lecturas).
Esto es necesario porque al leer el bloque en la cadena, Oracle lo mueve en función de la frecuencia con la que se "solicita". Los bloques solicitados con más frecuencia se mueven a la parte superior y los bloques solicitados con menos frecuencia se dejan en la parte inferior y se envejecen. No puede tener 2 sesiones leyendo una lista enlazada y moviendo bloques o golpeará los punteros que apuntan a ubicaciones inexistentes.
Cuando aumenta el tamaño de la memoria, aumenta el tamaño de cada lista vinculada. Esto aumenta el tiempo que lleva leer la lista. Una sola consulta deficiente o una consulta compleja puede hacer decenas de miles o incluso millones de lecturas de listas enlazadas. Cada lectura es rápida, pero la cantidad de ellos lleva a los cierres que se toman y estos bloquearán otras sesiones. Oracle llama a esto un 'IO lógico' (u obtención de búfer o alguna otra cosa. Esta jerga es específica de Oracle y puede significar algo más en otras partes de TI)
Por lo tanto, si la lista es más larga y tiene un SQL muy malo, entonces las sentencias de SQL mantendrán sus latches más tiempo. El aumento de la memoria puede ocasionalmente reducir el rendimiento. La mayoría de las veces, esto no sucederá. La gente gastará mucho dinero y no verá ningún beneficio. Dicho esto, hay ocasiones en que necesita más memoria en la memoria caché del búfer, pero debe identificar correctamente el cuello de botella para saber si esto es apropiado. No puedo discutir cómo analizar esto en este post. Ver los foros de DBA. Algunas personas lo discuten allí. Es bastante complejo.
¿Alguien tiene ejemplos específicos con otras piezas de software donde esto pueda suceder? Hay un excelente libro de negocios llamado 'The Goal' que discute el alivio de las restricciones en una fábrica. Este proceso es muy similar a lo que hacen los DBA de Oracle al evaluar los problemas de rendimiento. A menudo es la lectura estándar en los programas de MBA. Es muy valioso leer para profesiones de TI.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt
fuente
La memoria RAM puede ser barata pero no tan barata como el almacenamiento tradicional.
Tengo un disco duro de 3TB ($ 99): Cotizacion HDD
Y necesitará 48 de estos para 3TB a ($ 719) cada uno: Cita de RAM
Eso totalizaría $ 34,512 vs $ 99. Sin mencionar el precio del hardware requerido para ejecutar 3TB de RAM.
fuente
En realidad se hace en algunos escenarios. Si tiene un sistema operativo / pila de aplicaciones lo suficientemente pequeño, puede ejecutarlo completamente en RAM. Por supuesto, tiene todas las desventajas que tiene la respuesta aceptada. Pero es posible y sucede.
Echa un vistazo a Puppy Linux, una popular distribución de Linux. Su página de cómo funciona habla de correr desde RAM: http://puppylinux.org/wikka/howPuppyWorks
fuente
Creo que la respuesta se puede responder parcialmente de la siguiente manera:
Premisa:
Dado el número limitado de ranuras de memoria, una solución importante viene en forma de chips de memoria más altos con dimensiones internas más pequeñas y / o apilamiento 3D. Ambos procesos progresaron como se esperaba en los últimos 36 meses o más.
Así que la pregunta es: " Tamaño máximo de memoria DDR3 "o semánticamente:" DDR3 ¿Por qué no hay módulos de memoria mayores de 16GB? "
Y la respuesta es:
El estándar DDR3 permite capacidades de chip de 512 megabits a 8 gigabits, permitiendo efectivamente un tamaño máximo de módulo de memoria de 16 gigabytes ( src )
DDR4 cambiará esto, como se describe en este mapa tecnológico:
Resultado:
Algunas advertencias a Hennessy a través del post:
pkr298
supone que todo el sistema operativo y los programas están cargados en la memoria RAM, no que deban abolir el disco duro / SSDfuente
De hecho, tiene razón. En un futuro próximo, todo el almacenamiento y la memoria estarán en la forma de nano ram. NRAM es básicamente interruptores "mecánicos" que tienen unos pocos átomos de ancho. No necesita corriente para mantener el estado, por lo que es energéticamente eficiente y no necesita ser enfriado y debido a que los interruptores son tan pequeños, la densidad es muy alta y Esto es bueno por dos razones, una es que el acceso a la memoria es muy rápido y podrá tener terabytes de datos en dispositivos pequeños como el teléfono celular. Si quieres leer más ve esto: http://www.nantero.com/mission.html y esto http://en.wikipedia.org/wiki/Nano-RAM
fuente
Como han dicho otros, la RAM es volátil y algo así como 10 veces el costo de los SSD.
Sin embargo, hay ES un producto que se acerca mucho a lo que estás describiendo, desafortunadamente no recuerdo el nombre.
Lo que es es una unidad basada en RAM (IIRC máx. 64 gb) junto con una tarjeta CF y una batería. Cuando lo enciende, el sistema copia el contenido de la tarjeta CF a la RAM (creo que estoy sirviendo las solicitudes de la tarjeta CF si aún no se han cargado). En el cierre, el contenido de la RAM se copia en la tarjeta CF- -la batería es lo suficientemente grande como para permitir que esto termine antes de que se agote.
No es barato
fuente