Hi Nikita -
This looks excellent, except that I don''t feel we have a good basis for
the estimates yet.
This has major architectural value as it gives a component breakdown and
should be recorded as such on the architecture wiki. When you do these
component breakdowns it is important to identify what interfaces are
offered and used by the components (this is the static aspect of the
interface). It is also useful to make interaction diagrams showing how
the components use each other to execute use cases (this is the dynamic
aspect).
- Peter -
Nikita Danilov wrote:> Hello,
>
> below is a tentative list of tasks into which WBC effort can be
> sub-divided. I also provided a less exact list for the EPOCH component,
> and an incomplete list for the STL component.
>
> WBC tasks are estimated in lines-of-code with the total of (9100 + 3000)
> LOC, where LOC is a non-comment, non-whitespace line of the source
> file. I believe it is too early to estimate all EPOCH tasks, hopefully
> there will be more clear understanding of the situation during next
> week. I tried to estimate the EPOCH tasks that are absolutely necessary
> during the early stages of WBC development.
>
> Vladimir is the best person to complete the list of STL tasks,
> together with the estimations.
>
> C-* tasks are for the client, S-* tasks are for the server.
>
> ESTIMATION
>
> scope
effort
>
loc
> WBC
>
> C-VFS-MM integration with vfs: inodes, dentries, memory
2500
> pressure. Executing operation effects locally.
>
> C-ops-caching tracking operations: list vs. fragments. Tracking
2500
> dependencies.
>
> C-write-out policy deciding when to write-out cached state
1000
> updates, and with what granularity: age, amount,
> max-in-flight
>
> C-dir-pages caching of directory pages and using them for local
1000
> lookups
>
> C-new-files creation of new files locally
200
>
> C-new-objects creation of new objects locally
200
>
> C-DLM invoking reintegration on a lock cancel, lock
200
> weighting
>
> C-data dependencies between cached data and meta-data
200
>
> C-IO switching between whole-file mds-based locking and
250
> extent locking
>
> C-grants unified resource range leasing mechanism
250
>
> S-grants unified resource range leasing mechanism
250
>
> C-misc sync, fsync, compatibility flag, mount option
200
>
> S-misc compatibility flags
100
>
> STL
>
> C-policy track usage statistics and use them to decide when to
> ask for an STL
>
> S-policy track usage statistics and use them to decide when to
> grant an STL
>
> EPOCHS
>
> formalization formal reintegration model with "proofs" of
recovery
> correctness and concurrency control description
>
> C-reintegration reintegration, including concurrency control,
1000
> integration with ptlrpc
>
> S-compound implementation of the compound operations on
1000
> the server
>
> S-reintegration reintegration of batches on the server, thread
1000
> scheduling
>
> S-undo keeping undo logs
>
> S-cuts implementation of the CUTs algorithm
>
> C-gc garbage collection: when to discard cached batches
>
> S-gc garbage collection: when to discard undo logs
>
> C-recovery replay, including optional optimistic
"pre-replay"
>
> S-recovery-0 roll-back of the uncommitted epochs
>
> S-recovery-1 roll-forward from the clients
>
> EXTERNAL DEPENDENCIES
>
> ost-fid ost understanding fids, and granting fid sequences
> to the clients
> Nikita.
>
</div>