You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, each write transaction causes the following sequence of disk writes:
at least one data block write
at least one LBA block write
a metablock write
The first two have to complete before the metablock can be written. It would be nice if we could do one of these two things to speed up the process:
Reduce the number of different blocks that need to be written
Optimize how these blocks are written to reduce random seeks on rotational drives
2 can be complicated. I favour the following proposal made by @srh to tackle 1:
In a hard-durability setting, we usually change only a very small number of LBA entries. We could allocate a fixed-size area in the metablock to store these recent LBA changes, instead of writing them into a block of their own. Only when the area gets full, we flush those changes out to a specialized LBA block in the LBA extent. This would eliminate step 2 for the majority of transactions.
The text was updated successfully, but these errors were encountered:
This is implemented in branch daniel_inline_lba . I'm doing some additional testing now.
I've increased the size of the metablock back to 4 KB so it can contain a higher number of inlined LBA entries. Writing 4 KB instead of 512 bytes should make virtually no difference performance-wise. Is anyone aware of negative side-effects that I'm forgetting?
This can be part of a solution to #1080.
Currently, each write transaction causes the following sequence of disk writes:
The first two have to complete before the metablock can be written. It would be nice if we could do one of these two things to speed up the process:
2 can be complicated. I favour the following proposal made by @srh to tackle 1:
In a hard-durability setting, we usually change only a very small number of LBA entries. We could allocate a fixed-size area in the metablock to store these recent LBA changes, instead of writing them into a block of their own. Only when the area gets full, we flush those changes out to a specialized LBA block in the LBA extent. This would eliminate step 2 for the majority of transactions.
The text was updated successfully, but these errors were encountered: