[PATCH RFCv2 0/4] mm/memory_hotplug: Introduce memory block types

David Hildenbrand david at redhat.com
Thu Dec 20 23:58:16 AEDT 2018


On 30.11.18 18:59, David Hildenbrand wrote:
> This is the second approach, introducing more meaningful memory block
> types and not changing online behavior in the kernel. It is based on
> latest linux-next.
> 
> As we found out during dicussion, user space should always handle onlining
> of memory, in any case. However in order to make smart decisions in user
> space about if and how to online memory, we have to export more information
> about memory blocks. This way, we can formulate rules in user space.
> 
> One such information is the type of memory block we are talking about.
> This helps to answer some questions like:
> - Does this memory block belong to a DIMM?
> - Can this DIMM theoretically ever be unplugged again?
> - Was this memory added by a balloon driver that will rely on balloon
>   inflation to remove chunks of that memory again? Which zone is advised?
> - Is this special standby memory on s390x that is usually not automatically
>   onlined?
> 
> And in short it helps to answer to some extend (excluding zone imbalances)
> - Should I online this memory block?
> - To which zone should I online this memory block?
> ... of course special use cases will result in different anwers. But that's
> why user space has control of onlining memory.
> 
> More details can be found in Patch 1 and Patch 3.
> Tested on x86 with hotplugged DIMMs. Cross-compiled for PPC and s390x.
> 
> 
> Example:
> $ udevadm info -q all -a /sys/devices/system/memory/memory0
> 	KERNEL=="memory0"
> 	SUBSYSTEM=="memory"
> 	DRIVER==""
> 	ATTR{online}=="1"
> 	ATTR{phys_device}=="0"
> 	ATTR{phys_index}=="00000000"
> 	ATTR{removable}=="0"
> 	ATTR{state}=="online"
> 	ATTR{type}=="boot"
> 	ATTR{valid_zones}=="none"
> $ udevadm info -q all -a /sys/devices/system/memory/memory90
> 	KERNEL=="memory90"
> 	SUBSYSTEM=="memory"
> 	DRIVER==""
> 	ATTR{online}=="1"
> 	ATTR{phys_device}=="0"
> 	ATTR{phys_index}=="0000005a"
> 	ATTR{removable}=="1"
> 	ATTR{state}=="online"
> 	ATTR{type}=="dimm"
> 	ATTR{valid_zones}=="Normal"
> 
> 
> RFC -> RFCv2:
> - Now also taking care of PPC (somehow missed it :/ )
> - Split the series up to some degree (some ideas on how to split up patch 3
>   would be very welcome)
> - Introduce more memory block types. Turns out abstracting too much was
>   rather confusing and not helpful. Properly document them.
> 
> Notes:
> - I wanted to convert the enum of types into a named enum but this
>   provoked all kinds of different errors. For now, I am doing it just like
>   the other types (e.g. online_type) we are using in that context.
> - The "removable" property should never have been named like that. It
>   should have been "offlinable". Can we still rename that? E.g. boot memory
>   is sometimes marked as removable ...
> 


Any feedback regarding the suggested block types would be very much
appreciated!


-- 

Thanks,

David / dhildenb


More information about the Linuxppc-dev mailing list