mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2026-04-25 13:26:00 +03:00
[GH-ISSUE #935] readdir performance regression since 1.84 #530
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#530
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?
Originally created by @gaul on GitHub (Jan 28, 2019).
Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/935
Using the goofys benchmark script, I observe much slower
ls_filesperformance in master than 1.84 (results are time, lower is better):1.84:
master:
We should analyze this before releasing 1.85. The script reveals other interesting results including improvements to bulk read and write performance.
@gaul commented on GitHub (Jan 28, 2019):
46d79c5bc2introduced the regression, which improvedreaddirtimes in my tests.@ggtakec commented on GitHub (Jan 28, 2019):
@gaul Thanks for the report.
I will concentrate and check it this week.
@gaul commented on GitHub (Jan 28, 2019):
The benchmark script may have an issue. I observe a 25% improvement when running the same test manually:
without
46d79c5bc2:with
46d79c5bc2:@gaul commented on GitHub (Jan 29, 2019):
It appears
46d79c5bc2increases CPU usage partially frommalloc_trim. Still investigating...@gaul commented on GitHub (Feb 6, 2019):
I suspect that s3fs is not reusing HTTPS connections and the CPU overhead comes from the initial handshake. Using HTTP does not show this regression.
@ggtakec commented on GitHub (Feb 11, 2019):
@gaul I confirmed that the session was not reused and HTTPS(TLS) handshake was running.
I will immediately check the contents of the code.
@ggtakec commented on GitHub (Feb 17, 2019):
The session with S3 has been disconnected from the server in around 5 seconds and it is CLOSE_WAIT.
Now I can not control this with the CURL option.
(I tried the CURLOPT_TCP_KEEPALIVE option etc.)
I will examine it in succession.
@ggtakec commented on GitHub (Feb 17, 2019):
One reason why the socket is closed was that we received 400 errors in the HEAD request(ex. ls < dir > ).
In case of 400 error, "Connection: close" is received and closed with libcurl.
By specifying CURLOPT_KEEP_SENDING_ON_ERROR by curl_easy_setopt, closing at HEAD request seems to be avoidable.
I'll continue to check about multipart upload.
@ggtakec commented on GitHub (Feb 27, 2019):
I merged #965 .
It does not set the CURLOPT_KEEP_SENDING_ON_ERROR option.
So, renegotiation of SSL may occur at HEAD request.
However, I reviewed the pool of curl handles with that PR and reviewed the processing of multipart request.
As a result, renegotiation of SSL does not occur in multipart POST/GET.
Please see #965 comments for detail.
@gaul commented on GitHub (Mar 9, 2019):
Fixed by #965.