lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 03 Jun 2008 05:37:25 +0200
From:	Eric Dumazet <dada1@...mosbay.com>
To:	KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	Christoph Lameter <clameter@....com>,
	Nick Piggin <nickpiggin@...oo.com.au>,
	Hugh Dickins <hugh@...itas.com>,
	linux kernel <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] vmallocinfo: Add NUMA informations

KOSAKI Motohiro a écrit :
> Hi
>
>   
>> Christoph recently added /proc/vmallocinfo file to get information about 
>> vmalloc allocations.
>>
>> This patch adds NUMA specific information, giving number of pages 
>> allocated on each memory node.
>>
>> This should help to check that vmalloc() is able to respect NUMA policies.
>>     
>
> good patch :)
>
>
>   
>> +static void show_numa_infos(struct seq_file *m, struct vm_struct *v)
>> +{
>> +	if (NUMA_BUILD) {
>> +		unsigned int *counters, nr;
>> +
>> +		counters = kzalloc(MAX_NUMNODES * sizeof(unsigned int),
>> +				   GFP_KERNEL);
>> +		if (!counters)
>> +			return;
>> +
>> +		for (nr = 0; nr < v->nr_pages; nr++)
>> +			counters[page_to_nid(v->pages[nr])]++;
>> +
>> +		for (nr = 0; nr < MAX_NUMNODES; nr++)
>> +			if (counters[nr])
>> +				seq_printf(m, " N%u=%u", nr, counters[nr]);
>> +
>>     
>
> for_each_node_state(n, N_HIGH_MEMORY) is better?
> because MAX_NUMNODES has offten very large value.
>
>
>
>   
Yes, good idea, thank you.

I also used nr_node_ids instead of MAX_NUMNODES in this second version :

[PATCH] vmallocinfo: Add NUMA informations

Christoph recently added /proc/vmallocinfo file to get information about 
vmalloc allocations.

This patch adds NUMA specific information, giving number of pages 
allocated on each memory node.

This should help to check that vmalloc() is able to respect NUMA policies.

Example of output on a four nodes machine (one cpu per node)

1) network hash tables are evenly spreaded on four nodes (OK)
  (Same point for inodes and dentries hash tables)
2) iptables tables (x_tables) are correctly allocated on each cpu node 
(OK).
3) sys_swapon() allocates its memory from one node only.
4) each loaded module is using memory on one node.

Sysadmins could tune their setup to change points 3) and 4) if necessary.

grep "pages="  /proc/vmallocinfo
0xffffc20000000000-0xffffc20000201000 2101248 
alloc_large_system_hash+0x204/0x2c0 pages=512 vmalloc N0=128 N1=128 
N2=128 N3=128
0xffffc20000201000-0xffffc20000302000 1052672 
alloc_large_system_hash+0x204/0x2c0 pages=256 vmalloc N0=64 N1=64 N2=64 
N3=64
0xffffc2000031a000-0xffffc2000031d000   12288 
alloc_large_system_hash+0x204/0x2c0 pages=2 vmalloc N1=1 N2=1
0xffffc2000031f000-0xffffc2000032b000   49152 
cramfs_uncompress_init+0x2e/0x80 pages=11 vmalloc N0=3 N1=3 N2=2 N3=3
0xffffc2000033e000-0xffffc20000341000   12288 sys_swapon+0x640/0xac0 
pages=2 vmalloc N0=2
0xffffc20000341000-0xffffc20000344000   12288 
xt_alloc_table_info+0xfe/0x130 [x_tables] pages=2 vmalloc N0=2
0xffffc20000344000-0xffffc20000347000   12288 
xt_alloc_table_info+0xfe/0x130 [x_tables] pages=2 vmalloc N1=2
0xffffc20000347000-0xffffc2000034a000   12288 
xt_alloc_table_info+0xfe/0x130 [x_tables] pages=2 vmalloc N2=2
0xffffc2000034a000-0xffffc2000034d000   12288 
xt_alloc_table_info+0xfe/0x130 [x_tables] pages=2 vmalloc N3=2
0xffffc20004381000-0xffffc20004402000  528384 
alloc_large_system_hash+0x204/0x2c0 pages=128 vmalloc N0=32 N1=32 N2=32 
N3=32
0xffffc20004402000-0xffffc20004803000 4198400 
alloc_large_system_hash+0x204/0x2c0 pages=1024 vmalloc vpages N0=256 
N1=256 N2=256 N3=256
0xffffc20004803000-0xffffc20004904000 1052672 
alloc_large_system_hash+0x204/0x2c0 pages=256 vmalloc N0=64 N1=64 N2=64 
N3=64
0xffffc20004904000-0xffffc20004bec000 3047424 sys_swapon+0x640/0xac0 
pages=743 vmalloc vpages N0=743
0xffffffffa0000000-0xffffffffa000f000   61440 
sys_init_module+0xc27/0x1d00 pages=14 vmalloc N1=14
0xffffffffa000f000-0xffffffffa0014000   20480 
sys_init_module+0xc27/0x1d00 pages=4 vmalloc N0=4
0xffffffffa0014000-0xffffffffa0017000   12288 
sys_init_module+0xc27/0x1d00 pages=2 vmalloc N0=2
0xffffffffa0017000-0xffffffffa0022000   45056 
sys_init_module+0xc27/0x1d00 pages=10 vmalloc N1=10
0xffffffffa0022000-0xffffffffa0028000   24576 
sys_init_module+0xc27/0x1d00 pages=5 vmalloc N3=5
0xffffffffa0028000-0xffffffffa0050000  163840 
sys_init_module+0xc27/0x1d00 pages=39 vmalloc N1=39
0xffffffffa0050000-0xffffffffa0052000    8192 
sys_init_module+0xc27/0x1d00 pages=1 vmalloc N1=1
0xffffffffa0052000-0xffffffffa0056000   16384 
sys_init_module+0xc27/0x1d00 pages=3 vmalloc N1=3
0xffffffffa0056000-0xffffffffa0081000  176128 
sys_init_module+0xc27/0x1d00 pages=42 vmalloc N3=42
0xffffffffa0081000-0xffffffffa00ae000  184320 
sys_init_module+0xc27/0x1d00 pages=44 vmalloc N3=44
0xffffffffa00ae000-0xffffffffa00b1000   12288 
sys_init_module+0xc27/0x1d00 pages=2 vmalloc N3=2
0xffffffffa00b1000-0xffffffffa00b9000   32768 
sys_init_module+0xc27/0x1d00 pages=7 vmalloc N0=7
0xffffffffa00b9000-0xffffffffa00c4000   45056 
sys_init_module+0xc27/0x1d00 pages=10 vmalloc N3=10
0xffffffffa00c6000-0xffffffffa00e0000  106496 
sys_init_module+0xc27/0x1d00 pages=25 vmalloc N2=25
0xffffffffa00e0000-0xffffffffa00f1000   69632 
sys_init_module+0xc27/0x1d00 pages=16 vmalloc N2=16
0xffffffffa00f1000-0xffffffffa00f4000   12288 
sys_init_module+0xc27/0x1d00 pages=2 vmalloc N3=2
0xffffffffa00f4000-0xffffffffa00f7000   12288 
sys_init_module+0xc27/0x1d00 pages=2 vmalloc N3=2

Signed-off-by: Eric Dumazet <dada1@...mosbay.com>
---
 mm/vmalloc.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+)



View attachment "vmallocinfo_numa.patch" of type "text/plain" (944 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ