Skip to content

Parallelize readdir() reading and stat().#19

Open
james-antill wants to merge 3 commits into
a8m:masterfrom
james-antill:a8m-para
Open

Parallelize readdir() reading and stat().#19
james-antill wants to merge 3 commits into
a8m:masterfrom
james-antill:a8m-para

Conversation

@james-antill

Copy link
Copy Markdown
Contributor

This is a port of the parallel node.Visit() code from my fork. It spawns upto 32 goroutines to do a node.Visit() and when it reaches the limit each goroutine will fall back to processing them directly. The code should work identically if the global semWait is set to 0.

It does work, however there are currently four test failures that only happen when semWait is set all due to of the same root problem ... the nodes are added to the directory in the semi random order they are received from the channel (see line 513). The way each test "sorts" is a noop, so the original order is kept.

In theory you can "fix" some of this with:

  • Part of this patch which sorts by name/mtime/etc. as well as directory, when we do dir. sorts: james-antill@d27032a

  • This patch which sorts by name as well as size/ctime/mtime when we sort by those: james-antill@ff168c2

  • and in a similar situation, sort directory sizes by printed size: james-antill@76d027f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant