No of threads

Vino vino.bheeman at hotmail.com
Fri Dec 22 00:00:27 UTC 2017


On Wednesday, 20 December 2017 at 17:31:20 UTC, Ali Çehreli wrote:
> On 12/20/2017 05:41 AM, Vino wrote:
>
> > auto TL = dFiles.length;
> > auto TP = new TaskPool(TL);
>
> I assume dFiles is large. So, that's a lot of threads there.
>
> > foreach (d; TP.parallel(dFiles[],1))
>
> You tried with larger work unit sizes, right? More importantly, 
> I think all these threads are working on the same disk. If the 
> access is serialized by the OS or a lower entity, then all 
> threads necessarily wait for each other, making the whole 
> exercise serial.
>
> > auto SdFiles = Array!ulong(dirEntries(d,
> SpanMode.depth).map!(a =>
> > a.size).fold!((a,b) => a + b) (x))[].filter!(a => a  > Size);
> > Thread.sleep(5.seconds);
>
> You don't need that at all. I had left it in there just to give 
> me a chance to examine the number of threads the program was 
> using.
>
> Ali

Hi Ali,

Below are the answers.

"I think all these threads are working on the same disk. If the 
access is serialized by the OS or a lower entity, then all 
threads necessarily wait for each other, making the whole  
exercise serial."

    The File system that is used here to scan and find the folder 
size is an NetApp File system mapped on Windows 2008. The file 
system is exported using NFS v3 so you are right that the disk 
access is serialized.

The no of folders are from 2 NetApp file system and no of folders 
in each file system is as below

File system 1 : 76 folders and File system 2: 77 folders.

> You don't need that at all. I had left it in there just to give 
> me a chance to examine the number of threads the program was 
> using.

We have not update your main code yet, it was a test that we 
performed on test server.

From,
Vino.B


More information about the Digitalmars-d-learn mailing list