-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stream performance enhancements #87
Comments
I can confirm that streaming performance across the board is signifcantly slower than with standard HTTP and a fraction of what we get via sftp and gridftp. This seems to remain true, but vary in degree based on the target resources. Even when running everything locally in docker containers there is a noticeable discrepancy between protocols. |
Yes we know and as soon as we can resolve restarts will address. This is
|
That would be awesome. We’re bottlenecked by stream performance and will have to drop use of jargon in Agave if we can’t get around this issue. Really would rather not do that. —
|
Will revisit the tuning/buffer sizes here to see what first-order improvements I can get client-side only, may end up creating a secondary ticket linked to the iRODS core server when we can address this issue holistically with the C code. |
If that doesn't yield results, a chunked streaming interface and / or concat support would let us fake better streaming input. FWIW, I ran buffer tests at 4k blocks up to 10mb and got best results at 2mb. That is after adjusting my local tcp window size. Rion ----- Reply message ----- Will revisit the tuning/buffer sizes here to see what first-order improvements I can get client-side only, may end up creating a secondary ticket linked to the iRODS core server when we can address this issue holistically with the C code. Reply to this email directly or view it on GitHub: |
Yes, I think I've extracted about as much as I can get on the client. A big difference here is that each 'write()' operation to the output stream This is one critical piece, and making larger buffer sizes can amortize the I +1 the chunking, as it needs to be in the REST API. If we can get I suppose we'd need some default rules to quash postProc operations for MC On Tue, Apr 21, 2015 at 11:26 AM, Rion Dooley [email protected]
|
.. and cleanup, failure rules. And proper namespacing for concurrent writes. And logic for partial reads and writes. And first class support (long overdue) for denoting files in flight via write or replication. And configurable buffer and window size. And restart support per chunk and across chunks... IMHO, This needs to go into core, NOT into microservices. I would also argue the REST API should roll in as a distinct server component rather as part of jargon so it can natively talk to the server and optimize behavior. Rion ----- Reply message ----- Yes, I think I've extracted about as much as I can get on the client. A big difference here is that each 'write()' operation to the output stream This is one critical piece, and making larger buffer sizes can amortize the I +1 the chunking, as it needs to be in the REST API. If we can get I suppose we'd need some default rules to quash postProc operations for MC On Tue, Apr 21, 2015 at 11:26 AM, Rion Dooley [email protected]
Reply to this email directly or view it on GitHub: |
Writing to
IRODSFileOutputStream
is terribly slow. Even when not optimized and using multiple concurrent connections I would at least expect performance similar to a plain HTTP connection.The text was updated successfully, but these errors were encountered: