SCIENTIFIC-LINUX-USERS Archives

June 2010

SCIENTIFIC-LINUX-USERS@LISTSERV.FNAL.GOV

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Stephan Wiesand <[log in to unmask]>
Reply To:
Stephan Wiesand <[log in to unmask]>
Date:
Mon, 21 Jun 2010 17:56:11 +0200
Content-Type:
multipart/signed
Parts/Attachments:
text/plain (1944 bytes) , smime.p7s (4 kB)

On Jun 21, 2010, at 3:12, Khoa To wrote:

> I observed a memory leak (about 20 bytes per iteration) when I ran this 
> 
> simple program on my Scientific Linux 5.4 box (kernel version 2.6.18-
> 128.1.1.e15).

Pretty old kernel (the one from the 5.3 initial release). What's the AFS client version? (output of "rxdebug localhost 7001 -v")

> What I did was noting the output of "free -m" before and after I ran the 
> 
> program (which loops for 300000). I observed a 6MB increase in memory use
> d.  
> No error was printed during the run.
> 
> If I comment out the 2 fseek statements, then I don't see any memory 
> increase.

Check the amount of memory used for afs_inode_cache before and after the run (using slabtop). Does the difference account for the "leak"?
> 
> The file size is about 700KB.
> 
> I was wondering if someone can tell me if this is a known issue or if I'm
> 
> doing something wrong.

Well, the code below is not what you're actually running since amp is undefined. And the whole test for the while() loop doesn't make too much sense to me (although the first statement could probably simply be omitted).

Regards,
	Stephan

> 
> Thanks,
> Khoa.
> 
> ======Source file, compiled with gcc=========
> 
> #include <stdio.h>
> #include <errno.h>
> 
> int main()
> {
>   FILE * ptr = NULL;
>   int count = 0;
> 
>   ptr = fopen("myBinaryFile","r");
>   while (ptr != NULL &&amp; count++ < 300000)
>   {
>        usleep(1000);
> 
>        if (fseek(ptr, 0, SEEK_END))
>                printf("Error 1: %d\n", errno);
>        if (fseek(ptr, 0, SEEK_SET))
>                printf("Error 2: %d\n", errno);
> 
>        if (fclose(ptr))
>                break;
> 
>        usleep(10000);
> 
>        ptr = fopen("myBinaryFile","r");
>   }
> 
>    fclose(ptr);
> 
>    if (count >= 300000)
>       print("Success\n");
> 
>    return 0;
> }

-- 
Stephan Wiesand
DESY -DV-
Platanenallee 6
15738 Zeuthen, Germany






ATOM RSS1 RSS2