darksch escribió:y cerca de 1Gb en inactivo
Insisto,
inactive=free pero más eficiente, si un SO es capaz de llenar la caché es mejor, en caso de necesitarse es exactamente igual que la memoria libre.
.
Memoria Inactiva = memoria ocupada, pero no usada.De ahí que se llame memoria inactiva, por que sino se llamaría libre. Si estuviera usándose esa memoria, se llamaría memoria activa o wired.
Memoria Free = memoria libre cuyo origen viene de haber liberado memoria activa y/o inactiva (o ambas) y no se usa.
Memoria activa = es el fragmento de memoria que están usando el o los programas cargados en ese momento.
La memoria Wired = es la memoria destinada al sistema base, que puede ser usada por el sistema base o por programas del sistema base (incluyendo procesos y subprocesos del sistema base).
Un programa que se carga de 0, se carga en memoria libre y ese fragmento se distingue como memoria activa desde ese momento.
Cuando un programa deja de usarse y se cierra en MacOSX, parte de ese programa se conserva en memoria aun que no se use, pero ni mucho menos carga 1Gb si el programa carga como activa 100Mb. Por tanto memoria inactiva es un fragmento de la memoria total que ha sido ocupada, pero que en ningún momento está siendo usada.
¿Y por que se queda como inactiva?, simplemente para acelerar una segunda carga del programa si en todo caso el usuario vuelve a ejecutarlo. Se le podría llamar "cache", se podría, pero no si no tienes programas en uso en ningún momento o si los programas que tienes no consumen mas de lo necesario no le veo necesidad.
Para mi sigue siendo una mala administración de ram.
El problema es que sin programas cargados, MacOSX Lion llena memoria y la marca como inactiva, así, por las buenas, o con un programa de uso muy liviano para el sistema que no consume mas de 150Mb de ram en memoria activa, pasa a "cachear" 1Gb y la deja como inactiva (sin uso), algo bastante insólito. Eso NO es normal. Si fuera normal, MacOSX llenaría la memoria Wired que es el fragmento que usa el S.O. para el sistema y ciertos programas del sistema y que viene a tener un tamaño medio de 250Mb, no de varios Gb. O en todo caso cargaría el programa en memoria y la marcaría como activa si el programa se estuviera usando.
Por ejemplo, un caso que me acaba de pasar ahora.
Tengo el EyeTV reproduciendo un vídeo de 2 horas y media aprox. con un tamaño de 5,3Gb (aprox.).
Sin ir mas lejos, tengo 1Gb libre de ram, y 80Mb de memoria inactiva.
Sin venir a cuento de nada, solamente con el EyeTV cargado, sin ningún otro programa, el sistema a empezado a "cachear" (como tu lo llamas) el Gb libre que tenía, dejando como resultado 15Mb de memoria libre.
He usado el Free Memory 2 y he liberado la memoria inactiva, es decir, he liberado el Gb de ram.
Según tú deducción o interpretación del uso de la ram por parte de MacOSX Lion como una "cache", el EyeTV me debería haber ido a saltos por que he borrado la "cache" del programa (y gran parte del sistema). Y eso amigo mio es totalmente falso. He continuado viendo el vídeo de forma muy fluida pero con 1Gb de memoria libre que antes la tenía como inactiva. Y por si no lo he dicho, el sistema estaba recién reiniciado, nada salvo el EyeTV (y los procesos del propio sistema operativo) se había cargado.
teesala escribió:A caso no tiene mas sentido que si solo esta chrome abierto ocupe 1GB que no 100MB?
Tampoco entiendo porque das por sentado que un sql server puede ocupar toda la ram cuando su base es la de no necesitar el ocupar memoria. Simplemente la ocupa porque el acceso a un mismo dato en ram es mas rapido que en disco.
Yo no es que no le de sentido a que un programa chupe ram, lo que no le doy sentido es que si tienes un programa cargado, o incluso ninguno, el sistema Lion deje 1Gb como inactivo por las buenas, lo que se traduce como una mala administración de la memoria, que como ya he dicho es una memoria que no se usa, pero que si que tiene datos cargados.
En cualquier caso, si un programa requiere acceder a varias instrucciones muy habitualmente, el sistema, es decir, la máquina en si no solo tira de RAM, la RAM es una de las memorias mas rápidas que hay, pero no es la única que existe. Como decía, si un programa requiere procesar las mismas instrucciones de forma muy repetida en un corto espacio de tiempo, estas se cargan en la memoria cache de la CPU, y es la CPU la que carga estas instrucciones cuando lo necesita, por que la cache de la CPU es un tipo de memoria que no es accesible de ningún modo por el usuario, ni siquiera por el programador.
Y el sistema de base, se chupa 700Mb de ram como poco, sumando la Wired y la Activa, lo cual de 2Gb de total, debería dejar 1200Mb libres, suponiendo que tuviera 100Mb inactivos.
teesala escribió:FALSO. Como ya he comentado anteriormente, el coste de liberar ram es justo el doble del de substituir su contenido.
Esto es como cuando borras archivos del disco duro, en verdad no se borran, solo se "marcan como invisibles" y seran substituidos cuando otro utilice esos bloques. O a caso cada dia borras otra vez con algun programa los archivos que ya has borrado?
Partiendo de que la memoria debería estar libre. El proceso según tu sería el mismo, no el doble.
Por que con la ram libre, el programa solo debería asignar un tamaño y llenarlo.
Mientras que con la ram ocupada, el programa solo debería asignar un espacio y llenarlo (con la salvedad que, con el proceso de llenado los datos antiguos se sobre escribirían).
Bien, esto no es correcto.
El problema es que la memoria es finita, y por tanto también se debe "reasignar" el espacio ya asignado de antes.
Por tanto, en el proceso de "sobre escribir" datos en la ram, se requiere también "reasignar" la memoria cedida a otros programas para que una parte de ella, pueda ser otorgada al programa nuevo para seguidamente sobre escribirla. Teniendo memoria libre de por si, el proceso de "reasignar" memoria para (no solo el programa que quieres cargar, sino todos los demás programas que también hacen uso de esa memoria") es innecesario.
Un ejemplo de ello sería (que sería algo similar pero no igual) es tienes un disco duro de 500Gb y tienes dos particiones de 250Gb cada una. Si tu quieres agregar una tercera partición, primero deberás reconfigurar las dos primeras para que liberen espacio en el disco para esa tercera partición.
Liberar memoria es un proceso inevitable, sino ni siquiera se marcaría como libre, no es que no hubiera, sino que el sistema nada mas cargar cargaría todo el espacio restante "libre" como inactivo, y lo único que tendría que hacer es "reasignar y sobreescribir". La "memoria libre" no saldría ni en el quesito del monitor de actividad.
¿Y Por que existe la memoria libre?, yo creo es interceden varios factores para que exista y se determine un espacio como memoria libre, o se procese la instrucción de "liberarla" pudiendo emplear mejor el "sobre escribirla" ahorrando (ahi si) una instrucción de "sobra" (sarcasmo: pff... ¿que te ahorrarías, 1
microsegundo?). Por tanto tener memoria libre es fundamental para que un sistema operativo funcione de forma correcta. Tener muy poca hace que el sistema operativo tenga que "pelearse" con los programas que ya la tengan ocupada.
teesala escribió:Por otro lado, linux hace exactamente lo mismo. Aún recuerdo cuando mi XP ocupaba 300mb en ram y mi linux 1GB todo en inactivo
Windows y Linux administran la ram de forma diferente, en general, Linux siempre ha consumido mucha menos ram que Windows, pero vamos, yo nunca he tenido 1Gb en inactivo en Linux.
P.S. Chrome "engaña" un poco al usuario, no consume "de base" con una sola pestaña TANTO como Safari, pero cada vez que carga una pestaña, vuelve a cargar el motor de renderizado, y por tanto son otros 50Mb (de media) de mas que chupa. Sin contar los complementos para flash player o Shockwave que van a parte.
Si quieres ver el consumo de RAM que hace chrome, tienes que sumar la ram de todos los procesos.
P.P.S. Luego si queréis os explico el tema de la memoria inactiva. Por ejemplo, en que se usa, por que se llena, y por que se libera.