Re: [PATCH 1/2] NUMA emulation x86_64: numa=fake parameter forcustom nodes distance
From: Andrew Morton
Date: Fri Nov 18 2011 - 14:53:38 EST
On Fri, 18 Nov 2011 12:55:07 +0100
Petr Holasek <pholasek@xxxxxxxxxx> wrote:
> As default, when numa emulation is turned on, node distance table
> uses physical distance, so for 4 nodes emulated on 1 physical table is
>
> node 0 1 2 3
> 0: 10 10 10 10
> 1: 10 10 10 10
> 2: 10 10 10 10
> 3: 10 10 10 10
>
> This patch adds new [distance] argument to
>
> numa=fake=<number/size of nodes>[,distance]
>
> When distance argument is used, it sets linear distance between nodes
> like that:
>
> __distance__
> ___|___ ____|___ ________ ________
> | | | | | | | |
> | node1 |---| node 2 |---| node 3 |---| node 4 |
> |_______| |________| |________| |________|
> | | |
> | | |
> |____distance * 2________| |
> | |
> |____________distance * 3______________|
>
> This feature might be useful for testing some numa awareness features in
> both user and kernel spaces.
>
"might" is a red flag. We don't merge things which might be useful!
*Is* it useful? If so then please tell us why and explain how it might
be useful to others.
> @@ -404,6 +406,17 @@ void __init numa_emulation(struct numa_meminfo *numa_meminfo, int numa_dist_cnt)
> if (emu_nid_to_phys[i] == NUMA_NO_NODE)
> emu_nid_to_phys[i] = dfl_phys_nid;
>
> + /* load distance level parameter */
> + dist_level = -1;
> + c = strchr(emu_cmdline, ',');
> + if (c) {
> + c++;
> + ret = kstrtoul(c, 10, &dist_level);
> + if (ret < 0 || dist_level < LOCAL_DISTANCE ||
> + dist_level * max_emu_nid > ULONG_MAX)
> + dist_level = -1;
If this happens, the user goofed and we should tell them, with a printk.
[patch 2/2] adds the documentation for the feature and should be
included in the same patch as the implementation.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/