memory-management - segmentacion - gestion de memoria pdf
¿Cómo usar la memoria contigua en Linux kernel? (1)
Creo que lo que está viendo se debe a la opción de intercalar para la asignación de memoria bajo NUMA. Hay un documento muy bueno que habla de NUMA bajo Linux.
Sin los detalles del hardware que está utilizando, es muy difícil adivinar cómo se puede deshabilitar la opción de entrelazado de memoria. También debe profundizar en la utilidad numactl para ver si tiene alguna configuración que pueda usar en un sistema en ejecución. También hay algunas publicaciones de blog que mencionan el cambio de la configuración del BIOS para controlar la opción de intercalación de memoria y es posible que tenga que hacer lo mismo. (no es elegible para dar 2 enlaces en este momento: / pero una simple búsqueda en Google para deshabilitar el entrelazado de memoria en el BIOS debería resultar útil para usted)
Encontré que la memoria física se divide en rangos de la siguiente manera (intercalado de memoria):
rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ...
rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ...
rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-...
rank3: [1536KB-2048KB] [3584KB-4096KB] ...
El kernel de Linux está obteniendo esta memoria intercalada. Entonces, la memoria física vista por Linux kernel no es contigua. Corrígeme si estoy equivocado sobre esto.
He estado buscando el código fuente del kernel de Linux para mi trabajo de curso.
Al crear sysfs (/ sys / devices / system / memory), Linux kernel crea las secciones (memory0, memory1, ...) de cierto tamaño (128 MB en mi sistema) de estas memorias físicas disponibles. Utilizando archivos de estado en estos directorios puedo hacer secciones fuera de línea / en línea. ( Memoria Hotplug )
Entonces, la memoria física representada por estas secciones está dispersa. Entonces, si configuro alguna de las secciones fuera de línea, esa memoria dispersa indicará que no está disponible.
Quiero hacer que estas secciones se refieran a la memoria contigua. algo como esto :
memory0 : 0-128 MB
memory1 : 128-256 MB
....
Entonces, cuando desconecto una sección, la memoria física contigua relacionada con esa sección deja de estar disponible. Entonces, ¿puedo hacer que Linux kernel vea la memoria física como contigua en lugar de intercalada?
Corrígeme si estoy equivocado sobre algo de esto.
Gracias.