All of lore.kernel.org
 help / color / mirror / Atom feed
* Reiser4 unlink performance
@ 2006-02-22 14:33 Alec H. Peterson
       [not found] ` <200602262342.23069.zam@namesys.com>
  0 siblings, 1 reply; 12+ messages in thread
From: Alec H. Peterson @ 2006-02-22 14:33 UTC (permalink / raw)
  To: reiserfs-list

Hi all,

I have a scenario where large numbers of unlinks spread across 256  
directories with 20,000 files in each directory results in these  
kernel messages:

Feb 22 09:00:19 ecbuild-10 kernel: <4>reiser4[umount(13646)]:  
commit_current_atom (fs/reiser4/txnmgr.c:1092)[nikita-3176]:
Feb 22 09:00:19 ecbuild-10 kernel: WARNING: Flushing like mad: 16384

When this happens the filesystem blocks for a rather long period of  
time.

Interestingly, when I reduce the number of directories to 120 and  
increase the number of files in each directory to 40,000 the  
performance improves remarkably, although I do still get some of  
those kernel messages, albeit fewer of them.

I am curious if there are tunable parameters (either compile-time or  
mount-time) that I can modify to help alleviate this problem, or if  
there are any other suggestions.

Thanks!

Alec


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
       [not found] ` <200602262342.23069.zam@namesys.com>
@ 2006-02-28 14:51   ` Alec H. Peterson
  2006-02-28 19:11     ` Hans Reiser
  0 siblings, 1 reply; 12+ messages in thread
From: Alec H. Peterson @ 2006-02-28 14:51 UTC (permalink / raw)
  To: Alexander Zarochentsev; +Cc: reiserfs-list

Hi Alexander,

On Feb 26, 2006, at 13:42, Alexander Zarochentsev wrote:

>
> Which kernel version and reiser4 patches were used?

2.6.15.4r4 kernel,
reiser4-for-2.6.15-1.patch

> Is the system SMP?

Yes.

>
> No, "Flushing like mad" usually indicates a bug.

Good to know.

Thanks!

Alec



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 14:51   ` Alec H. Peterson
@ 2006-02-28 19:11     ` Hans Reiser
  2006-02-28 19:19       ` Alec H. Peterson
  2006-02-28 19:48       ` Alexander Zarochentsev
  0 siblings, 2 replies; 12+ messages in thread
From: Hans Reiser @ 2006-02-28 19:11 UTC (permalink / raw)
  To: Alexander Zarochentsev; +Cc: Alec H. Peterson, reiserfs-list

Alec H. Peterson wrote:

> Hi Alexander,
>
> On Feb 26, 2006, at 13:42, Alexander Zarochentsev wrote:
>
>>
>> Which kernel version and reiser4 patches were used?
>
>
> 2.6.15.4r4 kernel,
> reiser4-for-2.6.15-1.patch
>
>> Is the system SMP?
>
>
> Yes.
>
>>
>> No, "Flushing like mad" usually indicates a bug.
>
>
Please describe it in more detail.

> Good to know.
>
> Thanks!
>
> Alec
>
>
>
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 19:11     ` Hans Reiser
@ 2006-02-28 19:19       ` Alec H. Peterson
  2006-02-28 19:43         ` Hans Reiser
  2006-03-01 15:27         ` Alexander Zarochentsev
  2006-02-28 19:48       ` Alexander Zarochentsev
  1 sibling, 2 replies; 12+ messages in thread
From: Alec H. Peterson @ 2006-02-28 19:19 UTC (permalink / raw)
  To: Hans Reiser; +Cc: Alexander Zarochentsev, reiserfs-list

Hi Hans,

On Feb 28, 2006, at 12:11, Hans Reiser wrote:

> Please describe it in more detail.

Well, the error I'm getting is this:

Feb 21 13:10:22 ecbuild-10 kernel: WARNING: Flushing like mad: 16384

The C program I'm running to do the test is this:

main(int argc, char **argv)
{
   char buf[1024];
   char dir[1024];
   int i,j,k;
   int ret;
   int fd;
   int *sequence;
   struct timeval start, unlinktime, end;

   if(argc != 2)
   {
     fprintf(stderr, "Usage: %s <base directory>\n", argv[0]);
     exit(1);
   }

   strncpy(dir, argv[1], 1024);

   if(chdir(dir))
   {
     perror("chdir");
     exit(1);
   }

   for(i = 0; i < 256; i++)
   {
     snprintf(buf, 1024, "%d", i);
     ret = mkdir(buf, S_IRWXU);
     if(ret && (errno != EEXIST))
     {
       perror("mkdir");
       exit(1);
     }
   }


   {
     sequence = sequence20000;
     gettimeofday(&start, NULL);
     fprintf(stderr, "Starting %d run %d.%d.\n",
             256 * 20000, start.tv_sec, start.tv_usec);

     for(i = 0; i < 256; i++)
     {
       for(j = 0; j < 20000; j++)
       {
         snprintf(buf, 1024, "%d/%d", i, j);
         fd = open(buf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
         if(fd == -1)
         {
           perror("open");
           exit(1);
         }
         close(fd);
       }
       fprintf(stderr, "Done %d\n", i);
     }

     gettimeofday(&unlinktime, NULL);
     fprintf(stderr, "Starting %d unlink %d.%d, elapsed time was %d.\n",
             256 * 20000, unlinktime.tv_sec, unlinktime.tv_usec,
             unlinktime.tv_sec - start.tv_sec);

     for(i = 0; i < 20000; i++)
     {
       for(j = 0; j < 256; j++)
       {
         snprintf(buf, 1024, "%d/%d", j, sequence[i]);
         unlink(buf);
         if(fd == -1)
         {
           perror("unlink");
           exit(1);
         }
       }
       fprintf(stderr, "Done %d\n", i);
     }

     gettimeofday(&end, NULL);
     fprintf(stderr, "Done with %d unlink %d.%d, elapsed time was %d. 
\n",
             20000 * 256, end.tv_sec, end.tv_usec,
             end.tv_sec - unlinktime.tv_sec);
   }

   exit(0);
}

sequence20000 is an array which contains a sequence from 1 to 20000  
randomly ordered.

Alec


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 19:19       ` Alec H. Peterson
@ 2006-02-28 19:43         ` Hans Reiser
  2006-03-01 15:27         ` Alexander Zarochentsev
  1 sibling, 0 replies; 12+ messages in thread
From: Hans Reiser @ 2006-02-28 19:43 UTC (permalink / raw)
  To: Alec H. Peterson; +Cc: Alexander Zarochentsev, reiserfs-list

I meant for Zam to describe it in more detail, sorry about that.  :-/

Hans

Alec H. Peterson wrote:

> Hi Hans,
>
> On Feb 28, 2006, at 12:11, Hans Reiser wrote:
>
>> Please describe it in more detail.
>
>
> Well, the error I'm getting is this:
>
> Feb 21 13:10:22 ecbuild-10 kernel: WARNING: Flushing like mad: 16384
>
> The C program I'm running to do the test is this:
>
> main(int argc, char **argv)
> {
>   char buf[1024];
>   char dir[1024];
>   int i,j,k;
>   int ret;
>   int fd;
>   int *sequence;
>   struct timeval start, unlinktime, end;
>
>   if(argc != 2)
>   {
>     fprintf(stderr, "Usage: %s <base directory>\n", argv[0]);
>     exit(1);
>   }
>
>   strncpy(dir, argv[1], 1024);
>
>   if(chdir(dir))
>   {
>     perror("chdir");
>     exit(1);
>   }
>
>   for(i = 0; i < 256; i++)
>   {
>     snprintf(buf, 1024, "%d", i);
>     ret = mkdir(buf, S_IRWXU);
>     if(ret && (errno != EEXIST))
>     {
>       perror("mkdir");
>       exit(1);
>     }
>   }
>
>
>   {
>     sequence = sequence20000;
>     gettimeofday(&start, NULL);
>     fprintf(stderr, "Starting %d run %d.%d.\n",
>             256 * 20000, start.tv_sec, start.tv_usec);
>
>     for(i = 0; i < 256; i++)
>     {
>       for(j = 0; j < 20000; j++)
>       {
>         snprintf(buf, 1024, "%d/%d", i, j);
>         fd = open(buf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
>         if(fd == -1)
>         {
>           perror("open");
>           exit(1);
>         }
>         close(fd);
>       }
>       fprintf(stderr, "Done %d\n", i);
>     }
>
>     gettimeofday(&unlinktime, NULL);
>     fprintf(stderr, "Starting %d unlink %d.%d, elapsed time was %d.\n",
>             256 * 20000, unlinktime.tv_sec, unlinktime.tv_usec,
>             unlinktime.tv_sec - start.tv_sec);
>
>     for(i = 0; i < 20000; i++)
>     {
>       for(j = 0; j < 256; j++)
>       {
>         snprintf(buf, 1024, "%d/%d", j, sequence[i]);
>         unlink(buf);
>         if(fd == -1)
>         {
>           perror("unlink");
>           exit(1);
>         }
>       }
>       fprintf(stderr, "Done %d\n", i);
>     }
>
>     gettimeofday(&end, NULL);
>     fprintf(stderr, "Done with %d unlink %d.%d, elapsed time was %d. \n",
>             20000 * 256, end.tv_sec, end.tv_usec,
>             end.tv_sec - unlinktime.tv_sec);
>   }
>
>   exit(0);
> }
>
> sequence20000 is an array which contains a sequence from 1 to 20000 
> randomly ordered.
>
> Alec
>
>
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 19:11     ` Hans Reiser
  2006-02-28 19:19       ` Alec H. Peterson
@ 2006-02-28 19:48       ` Alexander Zarochentsev
  2006-02-28 19:56         ` Hans Reiser
  1 sibling, 1 reply; 12+ messages in thread
From: Alexander Zarochentsev @ 2006-02-28 19:48 UTC (permalink / raw)
  To: reiserfs-list; +Cc: Hans Reiser, Alec H. Peterson

On Tuesday 28 February 2006 22:11, Hans Reiser wrote:
> Alec H. Peterson wrote:
> > Hi Alexander,
> >
> > On Feb 26, 2006, at 13:42, Alexander Zarochentsev wrote:
> >> Which kernel version and reiser4 patches were used?
> >
> > 2.6.15.4r4 kernel,
> > reiser4-for-2.6.15-1.patch
> >
> >> Is the system SMP?
> >
> > Yes.
> >
> >> No, "Flushing like mad" usually indicates a bug.
>
> Please describe it in more detail.
>

The flush algorithm designed to make progress in any iteration.  
"flushing like mad" messages usually indicates that the flush can't 
make progress.

> > Good to know.
> >
> > Thanks!
> >
> > Alec
>
> !DSPAM:4404a06b108681480917376!

-- 
Alex.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 19:48       ` Alexander Zarochentsev
@ 2006-02-28 19:56         ` Hans Reiser
  2006-02-28 20:06           ` Alexander Zarochentsev
  0 siblings, 1 reply; 12+ messages in thread
From: Hans Reiser @ 2006-02-28 19:56 UTC (permalink / raw)
  To: Alexander Zarochentsev; +Cc: reiserfs-list, Alec H. Peterson

Alexander Zarochentsev wrote:

>On Tuesday 28 February 2006 22:11, Hans Reiser wrote:
>  
>
>>Alec H. Peterson wrote:
>>    
>>
>>>Hi Alexander,
>>>
>>>On Feb 26, 2006, at 13:42, Alexander Zarochentsev wrote:
>>>      
>>>
>>>>Which kernel version and reiser4 patches were used?
>>>>        
>>>>
>>>2.6.15.4r4 kernel,
>>>reiser4-for-2.6.15-1.patch
>>>
>>>      
>>>
>>>>Is the system SMP?
>>>>        
>>>>
>>>Yes.
>>>
>>>      
>>>
>>>>No, "Flushing like mad" usually indicates a bug.
>>>>        
>>>>
>>Please describe it in more detail.
>>
>>    
>>
>
>The flush algorithm designed to make progress in any iteration.  
>"flushing like mad" messages usually indicates that the flush can't 
>make progress.
>  
>
Yet more detail please.

>  
>
>>>Good to know.
>>>
>>>Thanks!
>>>
>>>Alec
>>>      
>>>
>>!DSPAM:4404a06b108681480917376!
>>    
>>
>
>  
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 19:56         ` Hans Reiser
@ 2006-02-28 20:06           ` Alexander Zarochentsev
  2006-02-28 20:42             ` Hans Reiser
  0 siblings, 1 reply; 12+ messages in thread
From: Alexander Zarochentsev @ 2006-02-28 20:06 UTC (permalink / raw)
  To: Hans Reiser; +Cc: reiserfs-list, Alec H. Peterson

On Tuesday 28 February 2006 22:56, Hans Reiser wrote:
> Alexander Zarochentsev wrote:
> >On Tuesday 28 February 2006 22:11, Hans Reiser wrote:
> >>Alec H. Peterson wrote:
> >>>Hi Alexander,
> >>>
> >>>On Feb 26, 2006, at 13:42, Alexander Zarochentsev wrote:
> >>>>Which kernel version and reiser4 patches were used?
> >>>
> >>>2.6.15.4r4 kernel,
> >>>reiser4-for-2.6.15-1.patch
> >>>
> >>>>Is the system SMP?
> >>>
> >>>Yes.
> >>>
> >>>>No, "Flushing like mad" usually indicates a bug.
> >>
> >>Please describe it in more detail.
> >
> >The flush algorithm designed to make progress in any iteration.
> >"flushing like mad" messages usually indicates that the flush can't
> >make progress.
> Yet more detail please.

the algorithm does not work as designed, it is a design bug or an 
implementation bug ;)

> >>>Good to know.
> >>>
> >>>Thanks!
> >>>
> >>>Alec

-- 
Alex.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 20:06           ` Alexander Zarochentsev
@ 2006-02-28 20:42             ` Hans Reiser
  2006-02-28 21:22               ` Alexander Zarochentsev
  0 siblings, 1 reply; 12+ messages in thread
From: Hans Reiser @ 2006-02-28 20:42 UTC (permalink / raw)
  To: Alexander Zarochentsev; +Cc: reiserfs-list, Alec H. Peterson

Alexander Zarochentsev wrote:

>On Tuesday 28 February 2006 22:56, Hans Reiser wrote:
>  
>
>>Alexander Zarochentsev wrote:
>>    
>>
>>>On Tuesday 28 February 2006 22:11, Hans Reiser wrote:
>>>      
>>>
>>>>Alec H. Peterson wrote:
>>>>        
>>>>
>>>>>Hi Alexander,
>>>>>
>>>>>On Feb 26, 2006, at 13:42, Alexander Zarochentsev wrote:
>>>>>          
>>>>>
>>>>>>Which kernel version and reiser4 patches were used?
>>>>>>            
>>>>>>
>>>>>2.6.15.4r4 kernel,
>>>>>reiser4-for-2.6.15-1.patch
>>>>>
>>>>>          
>>>>>
>>>>>>Is the system SMP?
>>>>>>            
>>>>>>
>>>>>Yes.
>>>>>
>>>>>          
>>>>>
>>>>>>No, "Flushing like mad" usually indicates a bug.
>>>>>>            
>>>>>>
>>>>Please describe it in more detail.
>>>>        
>>>>
>>>The flush algorithm designed to make progress in any iteration.
>>>"flushing like mad" messages usually indicates that the flush can't
>>>make progress.
>>>      
>>>
>>Yet more detail please.
>>    
>>
>
>the algorithm does not work as designed, it is a design bug or an 
>implementation bug ;)
>
>  
>
I seem to remember vs saying this message could be ignored safely at
times in the past, which is why I am asking you for more details.

Hans

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 20:42             ` Hans Reiser
@ 2006-02-28 21:22               ` Alexander Zarochentsev
  0 siblings, 0 replies; 12+ messages in thread
From: Alexander Zarochentsev @ 2006-02-28 21:22 UTC (permalink / raw)
  To: Hans Reiser; +Cc: reiserfs-list, Alec H. Peterson

On Tuesday 28 February 2006 23:42, Hans Reiser wrote:
> Alexander Zarochentsev wrote:
> >On Tuesday 28 February 2006 22:56, Hans Reiser wrote:
> >>Alexander Zarochentsev wrote:
> >>>On Tuesday 28 February 2006 22:11, Hans Reiser wrote:
> >>>>Alec H. Peterson wrote:
> >>>>>Hi Alexander,
> >>>>>
> >>>>>On Feb 26, 2006, at 13:42, Alexander Zarochentsev wrote:
> >>>>>>Which kernel version and reiser4 patches were used?
> >>>>>
> >>>>>2.6.15.4r4 kernel,
> >>>>>reiser4-for-2.6.15-1.patch
> >>>>>
> >>>>>>Is the system SMP?
> >>>>>
> >>>>>Yes.
> >>>>>
> >>>>>>No, "Flushing like mad" usually indicates a bug.
> >>>>
> >>>>Please describe it in more detail.
> >>>
> >>>The flush algorithm designed to make progress in any iteration.
> >>>"flushing like mad" messages usually indicates that the flush
> >>> can't make progress.
> >>
> >>Yet more detail please.
> >
> >the algorithm does not work as designed, it is a design bug or an
> >implementation bug ;)
>
> I seem to remember vs saying this message could be ignored safely at
> times in the past, which is why I am asking you for more details.

We have improved handling of truncate/flush races, especially if 
formatted nodes are deleted.  Now I think that any truncate/flush race 
can be resolved w/o having those too many useless iterations of 
jnode_flush.

> Hans

-- 
Alex.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-02-28 19:19       ` Alec H. Peterson
  2006-02-28 19:43         ` Hans Reiser
@ 2006-03-01 15:27         ` Alexander Zarochentsev
  2006-03-01 15:34           ` Alec H. Peterson
  1 sibling, 1 reply; 12+ messages in thread
From: Alexander Zarochentsev @ 2006-03-01 15:27 UTC (permalink / raw)
  To: reiserfs-list; +Cc: Alec H. Peterson, Hans Reiser

On Tuesday 28 February 2006 22:19, Alec H. Peterson wrote:
> Hi Hans,
>
> On Feb 28, 2006, at 12:11, Hans Reiser wrote:
> > Please describe it in more detail.
>
> Well, the error I'm getting is this:
>
> Feb 21 13:10:22 ecbuild-10 kernel: WARNING: Flushing like mad: 16384
>
> The C program I'm running to do the test is this:

All files created by the program below have zero lentgh, correct?
Is it the same program as which triggered 'flushing like mad' ?
 
>
> main(int argc, char **argv)
> {
>    char buf[1024];
>    char dir[1024];
>    int i,j,k;
>    int ret;
>    int fd;
>    int *sequence;
>    struct timeval start, unlinktime, end;
>
>    if(argc != 2)
>    {
>      fprintf(stderr, "Usage: %s <base directory>\n", argv[0]);
>      exit(1);
>    }
>
>    strncpy(dir, argv[1], 1024);
>
>    if(chdir(dir))
>    {
>      perror("chdir");
>      exit(1);
>    }
>
>    for(i = 0; i < 256; i++)
>    {
>      snprintf(buf, 1024, "%d", i);
>      ret = mkdir(buf, S_IRWXU);
>      if(ret && (errno != EEXIST))
>      {
>        perror("mkdir");
>        exit(1);
>      }
>    }
>
>
>    {
>      sequence = sequence20000;
>      gettimeofday(&start, NULL);
>      fprintf(stderr, "Starting %d run %d.%d.\n",
>              256 * 20000, start.tv_sec, start.tv_usec);
>
>      for(i = 0; i < 256; i++)
>      {
>        for(j = 0; j < 20000; j++)
>        {
>          snprintf(buf, 1024, "%d/%d", i, j);
>          fd = open(buf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
>          if(fd == -1)
>          {
>            perror("open");
>            exit(1);
>          }
>          close(fd);
>        }
>        fprintf(stderr, "Done %d\n", i);
>      }
>
>      gettimeofday(&unlinktime, NULL);
>      fprintf(stderr, "Starting %d unlink %d.%d, elapsed time was
> %d.\n", 256 * 20000, unlinktime.tv_sec, unlinktime.tv_usec,
> unlinktime.tv_sec - start.tv_sec);
>
>      for(i = 0; i < 20000; i++)
>      {
>        for(j = 0; j < 256; j++)
>        {
>          snprintf(buf, 1024, "%d/%d", j, sequence[i]);
>          unlink(buf);
>          if(fd == -1)
>          {
>            perror("unlink");
>            exit(1);
>          }
>        }
>        fprintf(stderr, "Done %d\n", i);
>      }
>
>      gettimeofday(&end, NULL);
>      fprintf(stderr, "Done with %d unlink %d.%d, elapsed time was %d.
> \n",
>              20000 * 256, end.tv_sec, end.tv_usec,
>              end.tv_sec - unlinktime.tv_sec);
>    }
>
>    exit(0);
> }
>
> sequence20000 is an array which contains a sequence from 1 to 20000
> randomly ordered.
>
> Alec
>

-- 
Alex.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Reiser4 unlink performance
  2006-03-01 15:27         ` Alexander Zarochentsev
@ 2006-03-01 15:34           ` Alec H. Peterson
  0 siblings, 0 replies; 12+ messages in thread
From: Alec H. Peterson @ 2006-03-01 15:34 UTC (permalink / raw)
  To: Alexander Zarochentsev; +Cc: reiserfs-list, Hans Reiser

Hi Hans,

On Mar 1, 2006, at 8:27, Alexander Zarochentsev wrote:

>
> All files created by the program below have zero lentgh, correct?
> Is it the same program as which triggered 'flushing like mad' ?

Correct.

I would be happy to modify it and re-run it however you like.  You  
are correct though that that isn't a real use case for us (0 length  
files).

Alec


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2006-03-01 15:34 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-22 14:33 Reiser4 unlink performance Alec H. Peterson
     [not found] ` <200602262342.23069.zam@namesys.com>
2006-02-28 14:51   ` Alec H. Peterson
2006-02-28 19:11     ` Hans Reiser
2006-02-28 19:19       ` Alec H. Peterson
2006-02-28 19:43         ` Hans Reiser
2006-03-01 15:27         ` Alexander Zarochentsev
2006-03-01 15:34           ` Alec H. Peterson
2006-02-28 19:48       ` Alexander Zarochentsev
2006-02-28 19:56         ` Hans Reiser
2006-02-28 20:06           ` Alexander Zarochentsev
2006-02-28 20:42             ` Hans Reiser
2006-02-28 21:22               ` Alexander Zarochentsev

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.