[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 1/2] numa: introduce numa_auto_assign_ram() f
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH v2 1/2] numa: introduce numa_auto_assign_ram() function in MachineClass |
Date: |
Thu, 27 Apr 2017 11:09:41 -0300 |
User-agent: |
Mutt/1.8.0 (2017-02-23) |
On Thu, Apr 27, 2017 at 12:12:58PM +0200, Laurent Vivier wrote:
> We need to change the way we distribute the memory across
> the nodes. To keep compatibility between machine type version
> introduce a machine type dependent function.
>
> Signed-off-by: Laurent Vivier <address@hidden>
[...]
> +static void numa_auto_assign_ram(MachineClass *mc, NodeInfo *nodes,
> + int nb_nodes, ram_addr_t size)
> +{
> + int i;
> + uint64_t usedmem = 0;
> +
> + if (mc->numa_auto_assign_ram) {
> + uint64_t *mem = g_new(uint64_t, nb_nodes);
> +
> + mc->numa_auto_assign_ram(mem, nb_nodes, size);
> +
> + for (i = 0; i < nb_nodes; i++) {
> + nodes[i].node_mem = mem[i];
> + }
> +
> + g_free(mem);
> +
> + return;
> + }
> +
> + /* Align each node according to the alignment
> + * requirements of the machine class
> + */
> +
> + for (i = 0; i < nb_nodes - 1; i++) {
> + nodes[i].node_mem = (size / nb_nodes) &
> + ~((1 << mc->numa_mem_align_shift) - 1);
> + usedmem += nodes[i].node_mem;
> + }
> + nodes[i].node_mem = size - usedmem;
> +}
I would prefer to make your new algorithm the default, and move
this code to a legacy_auto_assign_ram() function set by the 2.9
machine-types.
> +
> void parse_numa_opts(MachineClass *mc)
> {
> int i;
> @@ -336,17 +368,7 @@ void parse_numa_opts(MachineClass *mc)
> }
> }
> if (i == nb_numa_nodes) {
> - uint64_t usedmem = 0;
> -
> - /* Align each node according to the alignment
> - * requirements of the machine class
> - */
> - for (i = 0; i < nb_numa_nodes - 1; i++) {
> - numa_info[i].node_mem = (ram_size / nb_numa_nodes) &
> - ~((1 << mc->numa_mem_align_shift) -
> 1);
> - usedmem += numa_info[i].node_mem;
> - }
> - numa_info[i].node_mem = ram_size - usedmem;
> + numa_auto_assign_ram(mc, numa_info, nb_numa_nodes, ram_size);
> }
>
> numa_total = 0;
> --
> 2.9.3
>
--
Eduardo