mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2026-04-25 05:16:00 +03:00
[PR #2623] [MERGED] change the way to get existing fdentity to optimize concurrent IO performance #2674
Labels
No labels
bug
bug
dataloss
duplicate
enhancement
feature request
help wanted
invalid
need info
performance
pull-request
question
question
testing
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/s3fs-fuse#2674
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/s3fs-fuse/s3fs-fuse/pull/2623
Author: @fangqianan
Created: 12/18/2024
Status: ✅ Merged
Merged: 2/28/2025
Merged by: @ggtakec
Base:
master← Head:fangqianan_lock📝 Commits (5)
d47ad2achange the way to get existing fdentity1e1432dfix compiling err for ver > 1.911342dafMerge branch 'master' into fangqianan_lock804f95cuse GetROPath instead of GetPathfa0c9fbcompare FdEntity::ro_path first in FdEntity::GetFdEntityHasLock()📊 Changes
2 files changed (+34 additions, -23 deletions)
View changed files
📝
src/fdcache.cpp(+32 -22)📝
src/fdcache_entity.cpp(+2 -1)📄 Description
Relevant Issue (if applicable)
https://github.com/s3fs-fuse/s3fs-fuse/issues/2617
Details
Change the way to get existing fdentity to better conccurent IO's performance.
Instead of traversing the fent map and only compare the pseudo fd, which needs to hold every fdentity 's lock, I look for the fdentity with path at first and then verify the pseudo fd, which only needs to hold the right fdentity's lock.
I started 20 processes to read/write 500 files of 1MB in total concurrently. For ver 1.91, the RW performance is twice of that of the old code. And for ver 1.95, the performance is 20% better after this fix.
P.S. v1.95 performs worse than v1.91 (just half) according to my test (without this fix). This is another topic though. I will try to figure out the reason too and maybe you can also have a look into it.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.