~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/performance-use-case-analysis.txt

  • Committer: John Arbash Meinel
  • Date: 2008-10-04 14:10:13 UTC
  • mto: This revision was merged to the branch mainline in revision 3805.
  • Revision ID: john@arbash-meinel.com-20081004141013-yskxjlwtuy2k18ue
Playing around with expanding requests for btree index nodes into neighboring nodes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
.. This document describes _how_ to do use case analyses and what we want
2
2
.. to get out of them; for the specific cases see the files referenced by
3
 
.. performance-roadmap.txt
 
3
.. performance-roadmap.txt 
4
4
 
5
5
Analysing a specific use case
6
6
=============================
38
38
be constant time. Retrieval of the annotated text should be roughly
39
39
constant for any text of the same size regardless of the number of
40
40
revisions contributing to its content. Mapping of the revision ids to
41
 
dotted revnos could be done as the text is retrieved, but it's completely
 
41
dotted revnos could be done as the text is retrieved, but its completely
42
42
fine to post-process the annotated text to obtain dotted-revnos.'
43
43
 
44
44
What factors should be considered?
55
55
- scaling: how does performance change when any of the follow aspects
56
56
  of the system are ratcheted massively up or down:
57
57
 
58
 
   - number of files/dirs/symlinks/subtrees in a tree (both working and
 
58
   - number of files/dirs/symlinks/subtrees in a tree (both working and 
59
59
     revision trees)
60
60
   - size of any particular file
61
61
   - number of elements within a single directory
77
77
   - bandwidth when performing semantic operations.
78
78
 
79
79
- locality of reference: If an operation requires data that is located
80
 
  within a small region at any point, we often get better performance
 
80
  within a small region at any point, we often get better performance 
81
81
  than with an implementation of the same operation that requires the
82
 
  same amount of data but with a lower locality of reference. It's
 
82
  same amount of data but with a lower locality of reference. Its 
83
83
  fairly tricky to add locality of reference after the fact, so I think
84
84
  its worth considering up front.
85
85
 
89
89
measurements, in an ideal world there would be no more than one round
90
90
trip for each semantic operation. What there must not be is one round
91
91
trip per revision involved in the revisionid->dotted number mapping, nor
92
 
per each revision id attributed to a line in the text.
 
92
per each revision id attributed to a line in the text. 
93
93
 
94
94
Not all the items mentioned above are created equal. The analysis should
95
95
include the parameters considered and the common case values for each - the
102
102
file-level operation latency considerations.
103
103
 
104
104
Many performance problems only become visible when changing the scaling knobs
105
 
upwards to large trees. On small trees it's our baseline performance that drives
106
 
incremental improvements; on large trees it's the amount of processing per item
 
105
upwards to large trees. On small trees its our baseline performance that drives
 
106
incremental improvements; on large trees its the amount of processing per item
107
107
that drives performance. A significant goal therefore is to keep the amount of
108
108
data to be processed under control. Ideally we can scale in a sublinear fashion
109
109
for all operations, but we MUST NOT scale even linearly for operations that