Sorry, not "rsync" but "fsync"....
Regards, Rei Odaira 2017-11-02 15:57 GMT-05:00 大平怜 <rei.oda...@gmail.com>: > Hello Michael, > > The page size of the flash is 4KiB. I have to ask someone else about > the exact specification of the write endurance, but we have two products; > as a backend flash device, one uses Samsung's PM963 M.2 NVMe SSD, > and the other uses FibreChannel-attached IBM FlashSystem 840/900. > > Each write is guaranteed to be flushed to the backend flash device > when it returns, so there is no API like rsync. The power loss protection > depends on what the backend flash devices guarantee. For example, > IBM FlashSystem buffers writes in its internal DRAM (as I understand), > but it provides high redundancy in the power units and also includes > batteries. > > In the current implementation, we must write at least 4KiB for each > mutation. > We can change it to merge multiple mutations, much like the batch commit. > > > Thanks, > Rei Odaira > > > 2017-11-01 16:47 GMT-05:00 Michael Kjellman <mkjell...@internalcircle.com> > : > >> Awesome!! You're two steps ahead ;) >> >> Not sure if you're allowed to share, but can you highlight any details on >> endurance and performance? Are the pages 4kb or 16kb? How many writes do >> you expect to handle over a 1 year window of the device? I assume because >> you're directly accessing the hardware as a block device there are >> different rules in regards to fsync and how things are flushed? Any power >> loss protection features etc? If you write a commit log segment that's like >> 20 bytes (for example), will you post-pad the entire thing internally and >> still need to write 4kb (or whatever the physical page size is)? >> >> Thanks! >> >> best, >> kjellman >> >> > On Nov 1, 2017, at 2:40 PM, 大平怜 <rei.oda...@gmail.com> wrote: >> > >> > Hi Michael, >> > >> > Yes, testing is always a problem, and that is exactly why we would like >> to >> > release >> > our code as a plugin, outside of the main source tree, so that the >> project >> > won't >> > need to test the hardware-dependent code. >> > The pluggable CommitLog will allow this approach. >> > >> > Actually, we have already released another plugin for CAPI-Flash-based >> > RowCache, >> > which takes advantage of the pluggable RowCache mechanism. >> > https://github.com/ppc64le/capi-rowcache >> > We would just like to repeat this approach in CommitLog. >> > >> > >> > Thanks, >> > Rei Odaira >> > >> > >> > 2017-11-01 16:30 GMT-05:00 Michael Kjellman < >> mkjell...@internalcircle.com>: >> > >> >> Rei: >> >> >> >> One thing that comes up when these type of conversations occur is how >> the >> >> project can test hardware dependent code. In the case of the PPC64 >> stuff, >> >> hardware actually got donated to the ASF so Jenkins runs could be done >> to >> >> check that things work. Any thoughts on this aspect? Might be a bit >> >> pre-mature, but I thought I'd at least mention it... On the flip side: >> if >> >> CommitLog becomes pluggable enough, shipping an implementation >> compatible >> >> with the hardware out of tree might also be viable too. >> >> >> >> best, >> >> kjellman >> >> >> >>> On Nov 1, 2017, at 2:25 PM, 大平怜 <rei.oda...@gmail.com> wrote: >> >>> >> >>> Hi Ariel, >> >>> >> >>> CommitLogSegment assumes commit log files stored on a regular file >> >> system. >> >>> Our CAPI Flash system bypasses OS and directly accesses flash, >> >>> so we cannot use the current framework of CommitLogSegment as it is. >> >>> Intel's SPDK also bypasses a file system, so we think this kind of >> >>> requirement >> >>> is not uncommon. >> >>> >> >>> It would not be easy to reuse AbstractCommitLogSegmentManager, >> either, >> >>> because the archiving and synchronization logics have to be decoupled. >> >>> It would require major rework, and we don't think we should affect >> >>> the existing implementation so much. >> >>> >> >>> We do not change any existing format of CommitLog. Our plugin will >> use >> >>> its own format, as it must manage commit logs on the >> 4KB-block-oriented >> >>> address spaces of flash devices. >> >>> >> >>> >> >>> Regards, >> >>> Rei Odaira >> >>> >> >>> >> >>> 2017-10-31 15:38 GMT-05:00 Ariel Weisberg <ar...@weisberg.ws>: >> >>> >> >>>> Hi, >> >>>> >> >>>> There are pluggable elements to the commit log such as those used to >> >>>> support mmap or compressed. >> >>>> >> >>>> Can you describe at a high level what a new implementation would look >> >>>> like and why it can't be a mode of the existing implementation? >> >>>> >> >>>> You are not proposing changing the format correct? >> >>>> >> >>>> Regards, >> >>>> Ariel >> >>>> >> >>>> On Tue, Oct 31, 2017, at 04:09 PM, 大平怜 wrote: >> >>>>> Hello, >> >>>>> >> >>>>> We are developing a Cassandra plugin to store CommitLog on our >> >>>>> low-latency >> >>>>> Flash device (CAPI-Flash). To do that, the original CommitLog >> >> interface >> >>>>> must be changed to allow plugins. Anyone has any thoughts about it? >> >> We >> >>>>> have our codebase ready, but we think we should start with >> high-level >> >>>>> discussion. >> >>>>> >> >>>>> The runtime overhead will be minimal. The only overhead will be >> >> changing >> >>>>> method invocations to CommitLog#add(), >> CommitLog#getCurrentPosition(), >> >>>>> etc. >> >>>>> into interface invocations. >> >>>>> >> >>>>> Synching to CommitLog is one of the performance bottlenecks in >> >> Cassandra >> >>>>> especially with batch commit. I think the pluggable CommitLog will >> >> allow >> >>>>> other interesting alternatives, such as one using SPDK. Appreciate >> any >> >>>>> comments. >> >>>>> >> >>>>> >> >>>>> Regards, >> >>>>> Rei Odaira >> >>>> >> >>>> ------------------------------------------------------------ >> --------- >> >>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org >> >>>> For additional commands, e-mail: dev-h...@cassandra.apache.org >> >>>> >> >>>> >> >> >> >> >> >> >