I'm using NILFS2 on an OCZ SSD as a spool for high definition video in a scientific application. I need around 32GB of FAST storage that can handle sustained writes of 60MB/s, so NILFS on an SSD works quite nicely.

In my application I have to run many capture sets- as many as 1000, with each being as large as about 28GB. After a capture completes, I can move it off the spool storage and onto a slower mechanical hard disc. This is intended to free up space on the SSD for the next capture set.

But because the NILFS garbage collection is very slow, the space does not become available for some time. And when I tweak the cleanerd.conf to run more quickly, it negatively impacts the performance during capture.

Is there any way to run nilfs_cleanerd in a manual mode where the daemon doesn't execute and you run it to do a full garbage collection and exit? Or maybe some type of control socket or /proc device to tell it to run a full GC pass?

I know what you're thinking- a RAM drive is really what I need, and I agree. But a $150 SSD is cheaper than a server-class motherboard and 32GB of ram to use for a ram drive. So I'm working within a budget and an SSD with NILFS works fine, except for when I need to delete the files and reclaim space.

I hate to integrate root privileged operations in this application too. For instance, I could reformat the SSD on every pass, or kill cleanerd and start it with aggressive conf parameters when I want to run garbage collection and monitor the free space to see when its finished- but those aren't ideal.

I like NILFS a lot. But if I can't get it to free up the space on- demand I don't see how it can be a workable solution. I'll likely need to mmap the SSD block device and manage the data myself rather than messing with killing/starting the cleanerd on demand.

Byron

 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
users mailing list
[email protected]
https://www.nilfs.org/mailman/listinfo/users

Reply via email to