Duda sobre memoria en AMD64
He leído algo acerca de la arquitectura del núcleo AMD64 para procesadores de 64 bits, pero no entiendo una cosa específica, que quisiera preguntarle a quien supiera en el foro, para que me explicara, o me diera algo de documentación. No sé cómo buscar, ni dónde.
Instalé anteayer la distribución AMD64 de Debian Wheezy, y al rato de haberla instalado me dí cuenta de que no se comportaba como yo quería. Consumía mucha memoria.
¿Es esto normal en los sistemas de 64 bits? ¿Por qué?
Especifico datos: tengo 1 GB de RAM, de los cuales, cuando tenía Debian x86 solamente se usaba un poco más de la mitad, aún en el peor de los casos. El swap es de 2.5 GB. En el peor de los casos, usaba casi 100 MB de swap.
Ahora, con AMD64 me doy cuenta de que aún cuando no he corrido nada, top me muestra que se está usando más de la mitad de la memoria... 
Esto ha hecho que el computador se ralentice, lo cual es normal cuando hay falta de RAM.
Se preguntarán por qué un tipo con 1 GB de RAM instala AMD64...
La respuesta a esta pregunta es: PURA CURIOSIDAD Y GANAS DE COMPLICARSE LA VIDA
Tengo un computador con procesador AMD Athlon 4800+ de doble núcleo, por si tiene que ver.
Pongo una toma de pantalla de top hecha a los núcleos 2.6.38-2 y 2.6.39-2 para los que quieran verlo:
2.6.38-2 de Debian Testing:

2.6.39-2 de Debian Sid:

PD: El gestor de ventanas es FluxBox, y las tomas de pantalla las hice recién prendido el computador e iniciado el entorno gráfico... 
Gracias por su colaboración.
- Inicie sesión o regístrese para enviar comentarios
- 554 lecturas


Otra pregunta, aunque suene trillada, y superposteada: ¿Vuelvo a instalar el Debian para x86? o podrá ser esto una situación anormal...
Edito: El gestor de ventanas es Openbox, en LXDE, pero lo pongo en comentario, porque no me aparece la opción de editar el "post" de arriba.
Los 64Bit sobre todo están pensados para sistemas de 4 GB para arriba, ahora bien yo he probado amd64 tanto con 1 GB como con 3GB (puse 1 modulo de 2GB) y se nota bastante la diferencia (estoy usando squeeze amd64), es más, apurando pondría el límite en mas de 2 GB.
En cuanto a compatibilidad bueno hay soporte de librerías de 32 bit y había algo similar para nvidia (no los drivers, creo recordar que tenía que ver con la reproducción de vídeo).
Si no piensas ampliar la memoria te recomiendo que vuelvas a la de 32 si piensas hacerlo no está de más recordar que hay una versión del kernel llamada bigmem que sirve para que soporte 4 gb o más.
Los 64Bit sobre todo están pensados para sistemas de 4 GB para arriba, ahora bien yo he probado amd64 tanto con 1 GB como con 3GB (puse 1 modulo de 2GB) y se nota bastante la diferencia (estoy usando squeeze amd64), es más, apurando pondría el límite en mas de 2 GB.
En cuanto a compatibilidad bueno hay soporte de librerías de 32 bit y había algo similar para nvidia (no los drivers, creo recordar que tenía que ver con la reproducción de vídeo).
Si no piensas ampliar la memoria te recomiendo que vuelvas a la de 32 si piensas hacerlo no está de más recordar que hay una versión del kernel llamada bigmem que sirve para que soporte 4 gb o más.
Gracias por comentar.
Sin embargo, eso no responde a mi duda del consumo "inusual" de memoria en mi sistema Debian.
¿Por qué los sistemas de 64 bits consumen más memoria?
Eso es lo que quiero saber.
PD: Ya está decidido que voy a bajar i386, porque no tengo dinero para comprar el módulo de memoria. Estoy bajando la versión i386....
Gracias por comentar.
Sin embargo, eso no responde a mi duda del consumo "inusual" de memoria en mi sistema Debian.
¿Por qué los sistemas de 64 bits consumen más memoria?
Eso es lo que quiero saber.
PD: Ya está decidido que voy a bajar i386, porque no tengo dinero para comprar el módulo de memoria. Estoy bajando la versión i386....
Arquitectura de 64bits
[...]La principal desventaja de las arquitecturas de 64 bits es que, con respecto a las de 32 bits, los mismos datos ocupan ligeramente más espacio en memoria debido al crecimiento de los punteros y posiblemente otros tipos y al relleno para alineamiento (dependiendo del tipo de programa, algunos pueden multiplicar su tamaño). Esto incrementa los requisitos de memoria de un proceso dado y puede tener implicaciones para el uso eficiente de la caché del procesador.[...]
Pues no se que deciros, yo estoy con gnome 3 que gasta solo gnome-shell 135 Mb pero en totoal y con el navegadro chromium abierto me gasta 705 Mg Tengo 4 nucleos en un AMD y utilizo un escritorio mas pesado que el tuyo, por lo que tu escritorio no deberia de pasar de los 500 Mb.
¿Por qué los sistemas de 64 bits consumen más memoria?
Creo que la respuesta la tienes delante de tus narices.
menuda ayuda proporciona tu cometario
podrias dar alguna explicación como por ejemplo que si usas 64bit para representar 1 bit estas desaprovechando 63
o al menos colocar un enlace donde lo expliquen
el problema es que no siempre se usa la memora asignada a una variable por lo que la parte no usada y asiganda queda vacía y no disponible
saludos
menuda ayuda proporciona tu cometario
podrias dar alguna explicación como por ejemplo que si usas 64bit para representar 1 bit estas desaprovechando 63
o al menos colocar un enlace donde lo expliquen
¡Huy una pataleta!
Qué el nene quiere un enlace para tan obvia pregunta. Venga sí, haré algo mejor emulando al fantástico Olivier Lepape, voy a rescatar una idea genuina suya. Cómo cuentan las CPU los números y como direccionan la memoria pero en lugar de bits usaremos dedos. Es algo burdo pero muy gráfico.
Pongamos que eres una CPU Intel que usa el juego de instrucciones IA32, es decir que tienes 32 dedos para hacer todas tus operaciones y tú memoria para ser direccionada tiene un bus 32 dedos, para guardar por ejemplo en una pila las referencias a tus variables en memoria necesitas usar 32 dedos también pues coincide con el tamaño del bus de direcciones, una pila no es otra cosa que eso una lista ordenada llena de dedos agrupados de 32 en 32 que apuntarían en este caso a posiciones de memoria donde están tus variables (sea estas del tamaño de dedos que prefiráis).
Ahora pongamos que eres una CPU AMD que soporte el juego de instrucciones AMD64. ¿Cuántos dedos ocuparán cada una de las referencias a tus variables en memoria en un pila similar? ¿32 dedos ó 64 dedos? Supongo que 64 dedos, por que de lo contrario tu sistema operativo se quejaría. ¿No? ¿Cuál de las dos pilas ocuparía más, la que guarda referencias de direcciones de 32 dedos o de 64 dedos?
La respuesta la dejo en el aire. Que conteste el que quiera...
Como dije antes, esto es un ejemplo burdo, Olivier Lepape lo habría hecho mejor, pero yo sólo soy un triste aprendiz al lado suyo. Para quién no conozca a Lepape, mis condolencias, que lo busque en internet o compre alguno de sus libros publicados en la década de los 80, hay más dedos en algunos de sus libros que deleitarán a cualquier aprendiz de hacker.
el problema es que no siempre se usa la memora asignada a una variable por lo que la parte no usada y asiganda queda vacía y no disponible
Venga si, tu si que eres grande. Eso ocurre en cualquier sistema, hasta ocurre en mi calculadora y seguramente en nuestros cerebros, y no por ello explique de por qué un sistema de 64 consuma más memoria que el mismo recompilado a 32 bits. Simplemente indica lo ineficientemente que es un programa en la gestión de la memoria independientemente de si corre en un sistema de 8, 16, 32, 64 o 128 dedos.
saludos
Nos leemos...
Bueno, yo estoy perfectamente de acuerdo con nervet y es que con la experiencia que tengo como electronico, he programado muchos chips con C ( compilados ) y el consumo de memoria es muy alto por ejemplo comparado con la programación en esamblador. Si en esamblador, ese lenguaje nemotecnico que esneñan cuando aprendes sobre mictroncontroladores, microprocesadores, accesos a memoria, bus de direcciones, bus de datos, de instrucciones, pila, etc. Todo está organizado en el formato más pequeño que puede manejar una instruccion, el byte y para control el bit. ¿ Preguntas qué consume más memoria ? puedes contestarte a ti mismo preguntándote ¿cuántos cartones de docena de huevos tienes que guardar en una caja para llenarla independientemente de los huevos ocupen todas la capacidad del cartón?. Si un programa usa 3 Mgbytes Singifica que esos 3 megabytes son llenos y no hay datos vacios, porque lo que yo se se guardan las direcciones a un dato de 8, 16 ,32,64 , etc. Si el programa guardó por ejemplo guardó 93750 direcciones o posiciones de memoria de 32 bytes cada una podemos calcular que son 32x93750 que son 3 MegaBytes.Calcula entonces para el mismo número de posiciones 93750 pero esta vez para 64 bytes.... creo que se dobla.....