Skip to contentSkip to conversation

2.4.9/2.4.18 max kernel allocation size

DISCUSSION Ofer Raz 4 participants 6 messages Oct 8, 2002 – Oct 9, 2002 1 message not in the archive

lore
Share & tools
lore

Ofer Raz

author
#0 lore raw

-----Original Message-----
From: Ofer Raz [mailto:[email protected]]
Sent: Tuesday, October 08, 2002 2:19 PM
To: '[email protected]'
Subject: 2.4.9/2.4.18 max kernel allocation size

I'm trying to obtain the largest kernel allocation possible using vmalloc.

I have tested both Linux 2.4.9-7 and 2.4.18-10 max kernel allocation using vmalloc on Intel platform with different physical memory configurations.

Quoted 1 line

From my experience, playing with the Virtual/Physical memory split issues

different results (which makes sense)

Following are the results on 2.4.9-7 when the 4GB highmem config option is set:

Config Option Physical Memory Max Allocation
CONFIG_1GB 512MB 400

			1024MB		900
			1536MB		1400
			2048MB		981

CONFIG_2GB 512MB 400

			1024MB		900
			1536MB		461
			2048MB		VFS Panic on boot

CONFIG_3GB 512MB 400
1024MB 85
1536MB VFS Panic on boot
2048MB VFS Panic on boot

Please note that CONFIG_3GB is the default and results 85MB max allocation for 1GB machine.

For my surprise, I have discovered that the CONFIG_1GB/CONFIG_2GB/CONFIG_3GB configuration options were removed from 2.4.18-10, it seems that the kernel is set for the CONFIG_3GB option (by looking at the PAGE_OFFSET mask (0xc0000000)).

Any idea how can I make the kernel allocation on 2.4.18-10 larger than 85MB on 1GB machine?

Cheers,
Ofer

#1 lore raw
Quoted 10 lines · Ofer Raz

-----Original Message-----
From: Ofer Raz [mailto:[email protected]]
Sent: Tuesday, October 08, 2002 2:19 PM
To: '[email protected]'
Subject: 2.4.9/2.4.18 max kernel allocation size

I'm trying to obtain the largest kernel allocation possible using vmalloc

anything you can get > 64Mb on x86 is pure luck (eg you are lucky in your choice of PCI cards)

Quoted 4 lines

Any idea how can I make the kernel allocation on 2.4.18-10 larger than 85MB on 1GB machine?

Please give a pointer to the source of your code so that everybody here can see what you are trying to do and how to fix it to do it different

A message that is not in the archive (sent off-list or not yet received): [email protected]

#3 lore raw
Quoted 2 lines · Ofer Raz

The following code was used in kernel module & called from IOCTL context in order to test the max allocation size possible:

I think you misunderstood. I was asking for the source
of the PROBLEM you
were having, not the test. You are doing something wrong for needing such a huge vmalloc area, but without the source (it
is gpl code, right?) nobody can do suggestions on how to improve your code.

Quoted 4 lines

#define BLOCK_SIZE xxx

for (size = BLOCK_SIZE; size; size--)

Quoted 11 lines
{
    tmp = vmalloc(size * 1024 * 1024);

    if (tmp)
    {
        printk("Allocation of %dMB bytes succeeded!\n", size);
        vfree(tmp);
        break;
    }
}

y

author
#4 lore raw

I've done some additional testing.
In order to avoid huge allocations, I've tried allocating 100 blocks of 3MB each on 2.4.18-10 using vmalloc.

On 1GB physical memory machine I can allocate only 80MB. When adding memory limit to grub.conf (mem=999M) I get 900MB.

- Ofer

-----Original Message-----
From: [email protected] [mailto:[email protected]]On Behalf Of Arjan van de Ven
Sent: Tuesday, October 08, 2002 6:19 PM
To: Ofer Raz
Cc: 'Arjan van de Ven'; [email protected]; [email protected]
Subject: Re: FW: 2.4.9/2.4.18 max kernel allocation size

Quoted 1 line · Ofer Raz

The following code was used in kernel module & called from IOCTL context

in

Quoted 1 line

order to test the max allocation size possible:

I think you misunderstood. I was asking for the source
of the PROBLEM you
were having, not the test. You are doing something wrong for needing such a huge vmalloc area, but without the source (it
is gpl code, right?) nobody can do suggestions on how to improve your code.

Quoted 4 lines

#define BLOCK_SIZE xxx

for (size = BLOCK_SIZE; size; size--)

Quoted 11 lines
{
    tmp = vmalloc(size * 1024 * 1024);

    if (tmp)
    {
        printk("Allocation of %dMB bytes succeeded!\n", size);
        vfree(tmp);
        break;
    }
}

y
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

#5 lore raw
In reply to Ofer Raz

I might be thinking of something totally different than what you're talking about, but here it goes:

Change line 18 of mmzone.h from:

	#define MAX_ORDER 10
	to
	#define MAX_ORDER 24

This allows larger contiguous chunks of memory to be allocated, up to 32GB.

I'd be very appreciative if you could send me back whatever statistics you get as a result of this change. (To be honest, I'm not a good kernel hacker, and I wanted to gather statistics on this for some time but don't know how.)

Thanks in advance.

Joseph Wagner

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Ofer Raz
Sent: Tuesday, October 08, 2002 10:19 AM
To: [email protected]
Subject: FW: 2.4.9/2.4.18 max kernel allocation size

-----Original Message-----
From: Ofer Raz [mailto:[email protected]]
Sent: Tuesday, October 08, 2002 2:19 PM
To: '[email protected]'
Subject: 2.4.9/2.4.18 max kernel allocation size

I'm trying to obtain the largest kernel allocation possible using vmalloc.

I have tested both Linux 2.4.9-7 and 2.4.18-10 max kernel allocation using
vmalloc on Intel platform with different physical memory configurations.

Quoted 1 line

From my experience, playing with the Virtual/Physical memory split

issues
different results (which makes sense)

Following are the results on 2.4.9-7 when the 4GB highmem config option is
set:

Config Option Physical Memory Max Allocation
CONFIG_1GB 512MB 400

			1024MB		900
			1536MB		1400
			2048MB		981

CONFIG_2GB 512MB 400

			1024MB		900
			1536MB		461
			2048MB		VFS Panic on boot

CONFIG_3GB 512MB 400
1024MB 85
1536MB VFS Panic on boot
2048MB VFS Panic on boot

Please note that CONFIG_3GB is the default and results 85MB max allocation
for 1GB machine.

For my surprise, I have discovered that the CONFIG_1GB/CONFIG_2GB/CONFIG_3GB
configuration options were removed from 2.4.18-10, it seems that the kernel
is set for the CONFIG_3GB option (by looking at the PAGE_OFFSET mask (0xc0000000)).

Any idea how can I make the kernel allocation on 2.4.18-10 larger than 85MB
on 1GB machine?

Cheers,
Ofer

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

#6 lore raw
Quoted 10 lines · Joseph D. Wagner

I might be thinking of something totally different than what you're talking about, but here it goes:

Change line 18 of mmzone.h from:

	#define MAX_ORDER 10
	to
	#define MAX_ORDER 24

This allows larger contiguous chunks of memory to be allocated, up to 32GB.

He's using vmalloc, so I assume he doesn't need physically contiguous memory, rather virtually contigous. This code won't change a thing for his vmalloc() calls AFAICS.

Signature · 3 lines
// Gianni Tedesco (gianni at ecsc dot co dot uk)
lynx --source www.scaramanga.co.uk/gianni-at-ecsc.asc | gpg --import
8646BE7D: 6D9F 2287 870E A2C9 8F60 3A3C 91B5 7669 8646 BE7D