All of lore.kernel.org
 help / color / mirror / Atom feed
* Creating large numbers of files
       [not found] <1105395827.2871.ezmlm@namesys.com>
@ 2005-01-10 22:34 ` Dan Labute
  2005-01-10 23:18   ` Andreas Dilger
  0 siblings, 1 reply; 3+ messages in thread
From: Dan Labute @ 2005-01-10 22:34 UTC (permalink / raw)
  To: reiserfs-list

Hi all,

I'm a developer trying to create large numbers of *empty* files 
(~100000).  What is the fastest way to perform such an operation other 
than a simple open().  Will using multiple threads to perform concurrent 
operations help significantly, or am I just awell-off using a single thread?

Are there any extensions that could be used?  What about writing my own 
filesystem plugin?

Similarly, I'd like to create and destroy large numbers of hard & soft 
links.  What are my options?

(Apologies if these questions have been asked in other thread.)

Thanks,

Dan


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

* Re: Creating large numbers of files
  2005-01-10 22:34 ` Creating large numbers of files Dan Labute
@ 2005-01-10 23:18   ` Andreas Dilger
  2005-01-11 21:34     ` Dan Labute
  0 siblings, 1 reply; 3+ messages in thread
From: Andreas Dilger @ 2005-01-10 23:18 UTC (permalink / raw)
  To: Dan Labute; +Cc: reiserfs-list

[-- Attachment #1: Type: text/plain, Size: 645 bytes --]

On Jan 10, 2005  17:34 -0500, Dan Labute wrote:
> I'm a developer trying to create large numbers of *empty* files 
> (~100000).  What is the fastest way to perform such an operation other 
> than a simple open().  Will using multiple threads to perform concurrent 
> operations help significantly, or am I just awell-off using a single thread?

If you call 'mknod("/path/to/file", S_IFREG | 0666, 0)' from a program
it avoids the overhead of doing both an open and a close.

Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://members.shaw.ca/adilger/             http://members.shaw.ca/golinux/


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: Creating large numbers of files
  2005-01-10 23:18   ` Andreas Dilger
@ 2005-01-11 21:34     ` Dan Labute
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Labute @ 2005-01-11 21:34 UTC (permalink / raw)
  To: Andreas Dilger; +Cc: reiserfs-list

Andreas Dilger wrote:
> On Jan 10, 2005  17:34 -0500, Dan Labute wrote:
> 
>>I'm a developer trying to create large numbers of *empty* files 
>>(~100000).  What is the fastest way to perform such an operation other 
>>than a simple open().  Will using multiple threads to perform concurrent 
>>operations help significantly, or am I just awell-off using a single thread?
> 

> If you call 'mknod("/path/to/file", S_IFREG | 0666, 0)' from a program
> it avoids the overhead of doing both an open and a close.

Thanks Andreas.  I just the change and had minimal results.  Regardless, 
it's the right call to make.

I also tried to use multiple threads (from separate test programs), and 
found that the performance went downhill.  I'm assuming that this would 
indicate that multi-threading the mknod() operations within the same 
executable would yield similar results.  I'm surprised that the combined 
performance was actually worse.

As for link() and unlink() (and mknod), I see no options but to use 
filesystem-specific ioctl() calls.  Does ReiserFS provide any 
batch-operation calls that would yield better performance?
If not, would it be worthwhile to invest in a plug-in?

Any thoughts from the Reiser crew?

Regards,

Dan


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

end of thread, other threads:[~2005-01-11 21:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1105395827.2871.ezmlm@namesys.com>
2005-01-10 22:34 ` Creating large numbers of files Dan Labute
2005-01-10 23:18   ` Andreas Dilger
2005-01-11 21:34     ` Dan Labute

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.