Messages in this thread | | | Date | Thu, 15 Apr 1999 15:03:01 -0400 (EDT) | From | "Richard B. Johnson" <> | Subject | Version 2.2.5 memory allocation strategy |
| |
Hello,
Linux 2.2.5 seems to have a strange memory allocation strategy that results in memory not being available when, in fact, it is.
If I use kernel memory, kmalloced with GFP_KERNEL, allocated in variable-length bunches (not less than 512 bytes nor more than 4096 bytes), then kfree in the same order as allocated, the result is often not enough user memory for fork(), etc., even though it was all freed.
If I free memory in the reverse order in which it was allocated, (not easy when you need data in FIFO order), everything seems just fine.
An associate mentioned that vmalloc() night work better because it doesn't fragment as badly. Is this true? The application is a driver, but this buffering is not realtime, although it must allocate kernel memory for buffering.
In any event, I continue to hear about 'out of memory' errors killing off processes, refusing to fork, etc. Is anybody working on this problem?
Cheers, Dick Johnson ***** FILE SYSTEM WAS MODIFIED ***** Penguin : Linux version 2.2.5 on an i686 machine (400.59 BogoMips). Warning : It's hard to remain at the trailing edge of technology.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |