Skip to content
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

JointWriter: Allow shard file appending #775

Open
janEbert opened this issue Sep 5, 2024 · 2 comments
Open

JointWriter: Allow shard file appending #775

janEbert opened this issue Sep 5, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@janEbert
Copy link

janEbert commented Sep 5, 2024

I am working on a file system that loves few huge files and hates many small files. To this end, I would simply set size_limit=None when creating a dataset using a JointWriter. However, shards are only flushed (data written to disk and freed from RAM) once the size_limit is reached. This means I cannot create shards greater than my RAM (because the data in RAM keeps growing and is never flushed). This becomes especially apparent when I write using multiple processes on the same node.

I'd love it if, even with an unlimited shard_size, shard files could be partially written so that I can create shards larger than RAM. I would personally be fine with only MDSWriter and limited compressions supporting this. It seems like its encode_joint_to_shard implementation could support this.

Is this a feature you would accept contributions for or would it create too much maintenance workload with regard to various settings (compression etc.)?

@janEbert janEbert added the bug Something isn't working label Sep 5, 2024
@XiaohanZhangCMU
Copy link
Collaborator

@janEbert thanks for bringing the issue up. what fs are you using? You may want to create a new Writer subclass for this particular use case.

And yes, a feature contribution like this is always welcome!

@janEbert
Copy link
Author

janEbert commented Sep 5, 2024

It's a GPFS. Thanks for the idea to maybe subclass the MDSWriter! Probably the simplest solution in both implementation and maintenance. :)
Cheers for the openness to contributions!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants