Messages in this thread | | | Date | Wed, 8 Oct 2003 18:09:19 +0200 | From | Magnus Andersson <> | Subject | 2.4.22 O_DIRECT memory leak?!? |
| |
Hello!
If I open one file a lot of times using the flag O_DIRECT, memory seems to be be lost and never given back to the system. This is happening on some kernels, see below for which ones I tried.
Attached program will produce this behavior, also attached is the output from vmstat while running the program.
Affected: 2.4.22 2.4.22-ac4 2.4.23-pre6
Not affected: 2.4.22-aa1 2.6.0-test6
/Magnus #define _GNU_SOURCE
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h>
#define NFDS 1000
#define ERR(args...) fprintf(stderr, args);
int main() { int i, fds[NFDS];
for(i = 0; i < NFDS; i++) { if((fds[i] = open("./file", O_RDONLY | O_DIRECT)) < 0) { ERR("main(): open(): %s\n", strerror(errno)); exit(1); } } for(i = 0; i < NFDS; i++) { if(close(fds[i]) < 0) { ERR("main(): close(): %s\n", strerror(errno)); exit(1); } } } procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 498324 916 7632 0 0 54 9 109 22 1 19 80 0 0 0 0 498320 916 7632 0 0 0 0 101 2 0 0 100 0 0 0 0 498320 916 7632 0 0 0 0 101 2 0 0 100 0 0 0 0 498320 916 7632 0 0 0 0 101 2 0 0 100 0 0 0 0 498320 916 7632 0 0 0 0 101 2 0 0 100 0 1 0 0 485072 916 7632 0 0 0 0 104 11 0 6 94 0 0 0 0 386276 916 7632 0 0 0 0 116 7 0 41 59 0 0 0 0 386276 916 7632 0 0 0 0 101 2 0 0 100 0 0 0 0 386276 916 7632 0 0 0 0 101 2 0 0 100 0 0 0 0 386276 916 7632 0 0 0 0 101 2 0 0 100 0
| |