Hi,
First of all I've been using forum for over 3 years - but this is my first post, since I really try to do my research before posting new threads. Thanks to all of you for valuable insights and sharing knowledge!
My question is the following: I have 2 sata ssd's (~500MB/s read speed, ~300 MB/s write speed, 256gb and 128gb drives) that I'd like to improve performance of my main server (setup in description). Here's what I'm considering:
Option 1: Just put one or 2 of them as L2arc stripe
Option 2: Mirror them as metadata / small file storage in existing pool (Fusion pool)
In both cases I'd attach each to it's own SATA 6gbps port directly on mainboard.
In your opinion what would give me better results? My usage case is as follows:
I mostly care about video editing performance. Currently in my workflow I dump ~40-50 GB of new video files on the server and edit it straight away. Out of that ~15-20GB are files that end up in final video and I keep working with them, and rest are bad takes - I just watch them once or twice, but they are not used much after that. I guess due to size of my ARC most of project files should end up in RAM and be served straight from there.
Also mind that while the workload seems to be sequential, there are functionalities of my software that run on all project files at once and read just tiny bits of it (e.g. to generate media thumbnails / audio waveforms). Speed of these processes is important to me as well. Usually I have 50-120 files in each project.
However some projects I work with are much bigger, and in their case "hot data" may be in excess of 80GB. I also open older projects to re-use some of the footage/animations, and due to that I guess some additional unnecessary files may be loaded to L2arc in the process taking up space. I do experience occasional lag while working, that I'd like to eliminate. I guess increasing L2arc would help in that case (and increasing it's fill-rate to e.g. 100-200MB/s, I'm not that concerned with SSD longetivity since I don't edit all the time and from my calculation it should be fine for at least 5-6 years). There's also higher chance that when I have a break waiting for customer feedback for 5-6 days, the project will still be in L2arc and will work better when I get back to it, especially for media thumbnail generation I mentioned.
I believe in that case increasing RAM wouldn't help much, since it already fits majority of "RED-HOT" files, and I'm more concerned with "fairly warm" files - so I'm happy to sacrifice some "max performance" for having "high performance" more often. L2arc size in that case would be ~240GB (twice size of smaller drive).
There's also one more consideration. My editing software (Davinci Resolve) creates it's own "Disk database" with all project information - just a bunch of files organized in folder structure. Since it auto-save every 5-minutes, I want those saves to be as quick as possible, since it stutters software for a couple of seconds. Currently my main database is ~1.5GB, and average file size is ~1.5MB. Here to my best understanding ZIL will not help at all (async writes), and I guess L2arc will not help either (I believe it is for reads only).
And here come the Fusion pools. My thinking is the following:
Metadata on SSD improves access time to video file on HDD's. That would help with responsiveness for files, that are not yet in ARC. It would also help with medie thumbnails generation, since access to each file would be faster. It would also help with directory listing speed, which also helps quite a bit.
Also what I'd do is setting it up small file storage on SSD's as well - to accelerate opening&saving project files in my editing software - as far as I understand that is doable with fusion pools. Since average project size is 1.5MB, I'd set it to store files smaller than 2MB. Majority of project files should fall into that category.
Currently I have 1 014 837 files on my NAS taking up ~12TB. Out of that I can eliminate large video files, photos (mostly>3MB) what leaves me at ~870000 files and ~1.8TB (average size: 2,2MB). A lot of those are 3-7MB photographs
Assuming 1/2 of those files is under 256kB, 1/4 of those files is under 256kB, another 1/6 of them under 1 MB, and 1/8 under 2 MB it adds up to ~460 GB of data eligible for SSD storage as of now. I'm not planning to re-create data, so old data wouldn't go to SSD storage immediately, but rather new files would start filling it up. However considering planned server storage will be twice current and at some point I will most likely recreate the pool from backup (e.g. while adding new vdev), I need to take it under consideration and plan for ~1TB per 24TB of HDD storage (after RAIDZ2 "losses").
So while for current usage I can just mirror 2 ssd's I have currently (giving me ~120GB of storage), I have to plan for exchanging them for 500GB-1TB drives in not-so-far future, which becomes fairly costly. Or decrease max file size, what would not help that much with my editing software saves&loads, but I guess would make system snappier thanks to metadata storage on SSD.
Sorry for long analysis, but I hope on one hand it explains situation fairly well, on the other gives some food for thought to people considering Fusion / metadata pools. What I believe would be even more beneficial is the discussion that (hopefully) will emerge below.
Final question to those experienced with L2arc and/or Fusion pools: Is my thinking solid, or did I miss any important factors? What real impact I can expect in both scenarios and which one would you choose: L2arc or Fusion? How do you define SSD vdev size compared to HDD storage and what file size limit did you set? What is your actual SSD vdev usage?
Or maybe do you suggest SSD vdev of 2x120GB SSD drives + 250GB SSD L2arc? But wouldn't single SSD L2arc device slow down max throughput of the pool (SSD max speed ~500MB/s, while pool delivers ~800MB/s)?
From my side if there's anybody with similar use case - I'm more than happy to share my experiences, although I'm certainly not a pro in this area
First of all I've been using forum for over 3 years - but this is my first post, since I really try to do my research before posting new threads. Thanks to all of you for valuable insights and sharing knowledge!
My question is the following: I have 2 sata ssd's (~500MB/s read speed, ~300 MB/s write speed, 256gb and 128gb drives) that I'd like to improve performance of my main server (setup in description). Here's what I'm considering:
Option 1: Just put one or 2 of them as L2arc stripe
Option 2: Mirror them as metadata / small file storage in existing pool (Fusion pool)
In both cases I'd attach each to it's own SATA 6gbps port directly on mainboard.
In your opinion what would give me better results? My usage case is as follows:
I mostly care about video editing performance. Currently in my workflow I dump ~40-50 GB of new video files on the server and edit it straight away. Out of that ~15-20GB are files that end up in final video and I keep working with them, and rest are bad takes - I just watch them once or twice, but they are not used much after that. I guess due to size of my ARC most of project files should end up in RAM and be served straight from there.
Also mind that while the workload seems to be sequential, there are functionalities of my software that run on all project files at once and read just tiny bits of it (e.g. to generate media thumbnails / audio waveforms). Speed of these processes is important to me as well. Usually I have 50-120 files in each project.
However some projects I work with are much bigger, and in their case "hot data" may be in excess of 80GB. I also open older projects to re-use some of the footage/animations, and due to that I guess some additional unnecessary files may be loaded to L2arc in the process taking up space. I do experience occasional lag while working, that I'd like to eliminate. I guess increasing L2arc would help in that case (and increasing it's fill-rate to e.g. 100-200MB/s, I'm not that concerned with SSD longetivity since I don't edit all the time and from my calculation it should be fine for at least 5-6 years). There's also higher chance that when I have a break waiting for customer feedback for 5-6 days, the project will still be in L2arc and will work better when I get back to it, especially for media thumbnail generation I mentioned.
I believe in that case increasing RAM wouldn't help much, since it already fits majority of "RED-HOT" files, and I'm more concerned with "fairly warm" files - so I'm happy to sacrifice some "max performance" for having "high performance" more often. L2arc size in that case would be ~240GB (twice size of smaller drive).
There's also one more consideration. My editing software (Davinci Resolve) creates it's own "Disk database" with all project information - just a bunch of files organized in folder structure. Since it auto-save every 5-minutes, I want those saves to be as quick as possible, since it stutters software for a couple of seconds. Currently my main database is ~1.5GB, and average file size is ~1.5MB. Here to my best understanding ZIL will not help at all (async writes), and I guess L2arc will not help either (I believe it is for reads only).
And here come the Fusion pools. My thinking is the following:
Metadata on SSD improves access time to video file on HDD's. That would help with responsiveness for files, that are not yet in ARC. It would also help with medie thumbnails generation, since access to each file would be faster. It would also help with directory listing speed, which also helps quite a bit.
Also what I'd do is setting it up small file storage on SSD's as well - to accelerate opening&saving project files in my editing software - as far as I understand that is doable with fusion pools. Since average project size is 1.5MB, I'd set it to store files smaller than 2MB. Majority of project files should fall into that category.
Currently I have 1 014 837 files on my NAS taking up ~12TB. Out of that I can eliminate large video files, photos (mostly>3MB) what leaves me at ~870000 files and ~1.8TB (average size: 2,2MB). A lot of those are 3-7MB photographs
Assuming 1/2 of those files is under 256kB, 1/4 of those files is under 256kB, another 1/6 of them under 1 MB, and 1/8 under 2 MB it adds up to ~460 GB of data eligible for SSD storage as of now. I'm not planning to re-create data, so old data wouldn't go to SSD storage immediately, but rather new files would start filling it up. However considering planned server storage will be twice current and at some point I will most likely recreate the pool from backup (e.g. while adding new vdev), I need to take it under consideration and plan for ~1TB per 24TB of HDD storage (after RAIDZ2 "losses").
So while for current usage I can just mirror 2 ssd's I have currently (giving me ~120GB of storage), I have to plan for exchanging them for 500GB-1TB drives in not-so-far future, which becomes fairly costly. Or decrease max file size, what would not help that much with my editing software saves&loads, but I guess would make system snappier thanks to metadata storage on SSD.
Sorry for long analysis, but I hope on one hand it explains situation fairly well, on the other gives some food for thought to people considering Fusion / metadata pools. What I believe would be even more beneficial is the discussion that (hopefully) will emerge below.
Final question to those experienced with L2arc and/or Fusion pools: Is my thinking solid, or did I miss any important factors? What real impact I can expect in both scenarios and which one would you choose: L2arc or Fusion? How do you define SSD vdev size compared to HDD storage and what file size limit did you set? What is your actual SSD vdev usage?
Or maybe do you suggest SSD vdev of 2x120GB SSD drives + 250GB SSD L2arc? But wouldn't single SSD L2arc device slow down max throughput of the pool (SSD max speed ~500MB/s, while pool delivers ~800MB/s)?
From my side if there's anybody with similar use case - I'm more than happy to share my experiences, although I'm certainly not a pro in this area
Last edited: