Ticket #1398: update-performance.rst.darcs.patch

File update-performance.rst.darcs.patch, 12.8 KB (added by zooko, at 2011-05-08T12:44:11Z)
Line 
11 patch for repository zooko@dev.allmydata.org:/home/darcs/tahoe/trunk:
2
3Sun May  8 06:42:28 MDT 2011  zooko@zooko.com
4  * docs: fix several imprecise or inaccurate values in performance.rst
5  add cpu values for each operation
6  sort the list of values into the same order in each operation
7  refs #1398
8
9New patches:
10
11[docs: fix several imprecise or inaccurate values in performance.rst
12zooko@zooko.com**20110508124228
13 Ignore-this: f1ecc5cb32eebec9760c8fc437799eb4
14 add cpu values for each operation
15 sort the list of values into the same order in each operation
16 refs #1398
17] {
18hunk ./docs/performance.rst 50
19 
20 network: ~N
21 
22-memory footprint: N/K*S
23+memory footprint: S
24 
25 when the file is not already uploaded
26 -------------------------------------
27hunk ./docs/performance.rst 65
28 
29 cpu: 2*~A
30 
31-network: ~N + ~A
32+network: N/K*A
33 
34 memory footprint: N/K*S
35 
36hunk ./docs/performance.rst 72
37 Publishing an ``A``-byte mutable file
38 =====================================
39 
40+cpu: ~A + a large constant for RSA keypair generation
41+
42 network: A
43 
44 memory footprint: N/K*A
45hunk ./docs/performance.rst 78
46 
47-cpu: ~A + a large constant for RSA keypair generation
48-
49 notes: Tahoe-LAFS generates a new RSA keypair for each mutable file that it
50 publishes to a grid. This takes up to 1 or 2 seconds on a typical desktop PC.
51 
52hunk ./docs/performance.rst 89
53 Downloading ``B`` bytes of an ``A``-byte immutable file
54 =======================================================
55 
56-network: B
57+cpu: ~B
58 
59hunk ./docs/performance.rst 91
60-cpu: ~A
61+network: B
62 
63 notes: When Tahoe-LAFS 1.8.0 or later is asked to read an arbitrary
64 range of an immutable file, only the S-byte segments that overlap the
65hunk ./docs/performance.rst 104
66 Downloading ``B`` bytes of an ``A``-byte mutable file
67 =====================================================
68 
69+cpu: ~A
70+
71 network: A
72 
73 memory footprint: A
74hunk ./docs/performance.rst 117
75 Modifying ``B`` bytes of an ``A``-byte mutable file
76 ===================================================
77 
78+cpu: ~A
79+
80 network: A
81 
82 memory footprint: N/K*A
83hunk ./docs/performance.rst 134
84 Inserting/Removing ``B`` bytes in an ``A``-byte mutable file
85 ============================================================
86 
87+cpu: ~A
88+
89 network: A
90 
91 memory footprint: N/K*A
92hunk ./docs/performance.rst 153
93 Adding an entry to an ``A``-entry directory
94 ===========================================
95 
96+cpu: ~A
97+
98 network: ~A
99 
100hunk ./docs/performance.rst 157
101-memory footprint: N/K*A
102+memory footprint: N/K*~A
103 
104 notes: In Tahoe-LAFS, directories are implemented as specialized mutable
105 files. So adding an entry to a directory is essentially adding B
106hunk ./docs/performance.rst 166
107 Listing an ``A`` entry directory
108 ================================
109 
110+cpu: ~A
111+
112 network: ~A
113 
114hunk ./docs/performance.rst 170
115-memory footprint: N/K*A
116+memory footprint: N/K*~A
117 
118 notes: Listing a directory requires that the mutable file storing the
119 directory be downloaded from the grid. So listing an A entry
120hunk ./docs/performance.rst 180
121 Performing a file-check on an ``A``-byte file
122 =============================================
123 
124-network: ~G, where G is the number of servers on your grid
125+cpu: ~G
126+
127+network: ~G
128 
129 memory footprint: negligible
130 
131hunk ./docs/performance.rst 194
132 Performing a file-verify on an ``A``-byte file
133 ==============================================
134 
135+cpu: ~N/K*A
136+
137 network: N/K*A
138 
139 memory footprint: N/K*S
140hunk ./docs/performance.rst 201
141 
142 notes: To verify a file, Tahoe-LAFS downloads all of the ciphertext
143-shares that were originally uploaded to the grid and integrity
144-checks them. This is, for well-behaved grids, likely to be more
145-expensive than downloading an A-byte file, since only a fraction
146-of these shares are necessary to recover the file.
147+shares that were originally uploaded to the grid and integrity checks
148+them. This is (for well-behaved grids) more expensive than downloading
149+an A-byte file, since only a fraction of these shares are necessary to
150+recover the file.
151 
152 Repairing an ``A``-byte file (mutable or immutable)
153 ===================================================
154hunk ./docs/performance.rst 209
155 
156-network: variable; up to around ~A
157+cpu: variable, between ~A and ~N/K*A
158+
159+network: variable; between A and N/K*A
160 
161hunk ./docs/performance.rst 213
162-memory footprint: from S to (1+N/K)*S
163+memory footprint: (1+N/K)*S
164 
165hunk ./docs/performance.rst 215
166-notes: To repair a file, Tahoe-LAFS downloads the file, and generates/uploads
167-missing shares in the same way as when it initially uploads the file.
168-So, depending on how many shares are missing, this can be about as
169-expensive as initially uploading the file in the first place.
170+notes: To repair a file, Tahoe-LAFS downloads the file, and
171+generates/uploads missing shares in the same way as when it initially
172+uploads the file.  So, depending on how many shares are missing, this
173+can cost as little as a download or as much as a download followed by
174+a full upload.
175}
176
177Context:
178
179[munin tahoe_files plugin: fix incorrect file count
180francois@ctrlaltdel.ch**20110428055312
181 Ignore-this: 334ba49a0bbd93b4a7b06a25697aba34
182 fixes #1391
183]
184[docs: FTP-and-SFTP.rst: fix a minor error and update the information about which version of Twisted fixes #1297
185zooko@zooko.com**20110428055232
186 Ignore-this: b63cfb4ebdbe32fb3b5f885255db4d39
187]
188[Fix a test failure in test_package_initialization on Python 2.4.x due to exceptions being stringified differently than in later versions of Python. refs #1389
189david-sarah@jacaranda.org**20110411190738
190 Ignore-this: 7847d26bc117c328c679f08a7baee519
191]
192[tests: add test for including the ImportError message and traceback entry in the summary of errors from importing dependencies. refs #1389
193david-sarah@jacaranda.org**20110410155844
194 Ignore-this: fbecdbeb0d06a0f875fe8d4030aabafa
195]
196[allmydata/__init__.py: preserve the message and last traceback entry (file, line number, function, and source line) of ImportErrors in the package versions string. fixes #1389
197david-sarah@jacaranda.org**20110410155705
198 Ignore-this: 2f87b8b327906cf8bfca9440a0904900
199]
200[remove unused variable detected by pyflakes
201zooko@zooko.com**20110407172231
202 Ignore-this: 7344652d5e0720af822070d91f03daf9
203]
204[allmydata/__init__.py: Nicer reporting of unparseable version numbers in dependencies. fixes #1388
205david-sarah@jacaranda.org**20110401202750
206 Ignore-this: 9c6bd599259d2405e1caadbb3e0d8c7f
207]
208[update FTP-and-SFTP.rst: the necessary patch is included in Twisted-10.1
209Brian Warner <warner@lothar.com>**20110325232511
210 Ignore-this: d5307faa6900f143193bfbe14e0f01a
211]
212[control.py: remove all uses of s.get_serverid()
213warner@lothar.com**20110227011203
214 Ignore-this: f80a787953bd7fa3d40e828bde00e855
215]
216[web: remove some uses of s.get_serverid(), not all
217warner@lothar.com**20110227011159
218 Ignore-this: a9347d9cf6436537a47edc6efde9f8be
219]
220[immutable/downloader/fetcher.py: remove all get_serverid() calls
221warner@lothar.com**20110227011156
222 Ignore-this: fb5ef018ade1749348b546ec24f7f09a
223]
224[immutable/downloader/fetcher.py: fix diversity bug in server-response handling
225warner@lothar.com**20110227011153
226 Ignore-this: bcd62232c9159371ae8a16ff63d22c1b
227 
228 When blocks terminate (either COMPLETE or CORRUPT/DEAD/BADSEGNUM), the
229 _shares_from_server dict was being popped incorrectly (using shnum as the
230 index instead of serverid). I'm still thinking through the consequences of
231 this bug. It was probably benign and really hard to detect. I think it would
232 cause us to incorrectly believe that we're pulling too many shares from a
233 server, and thus prefer a different server rather than asking for a second
234 share from the first server. The diversity code is intended to spread out the
235 number of shares simultaneously being requested from each server, but with
236 this bug, it might be spreading out the total number of shares requested at
237 all, not just simultaneously. (note that SegmentFetcher is scoped to a single
238 segment, so the effect doesn't last very long).
239]
240[immutable/downloader/share.py: reduce get_serverid(), one left, update ext deps
241warner@lothar.com**20110227011150
242 Ignore-this: d8d56dd8e7b280792b40105e13664554
243 
244 test_download.py: create+check MyShare instances better, make sure they share
245 Server objects, now that finder.py cares
246]
247[immutable/downloader/finder.py: reduce use of get_serverid(), one left
248warner@lothar.com**20110227011146
249 Ignore-this: 5785be173b491ae8a78faf5142892020
250]
251[immutable/offloaded.py: reduce use of get_serverid() a bit more
252warner@lothar.com**20110227011142
253 Ignore-this: b48acc1b2ae1b311da7f3ba4ffba38f
254]
255[immutable/upload.py: reduce use of get_serverid()
256warner@lothar.com**20110227011138
257 Ignore-this: ffdd7ff32bca890782119a6e9f1495f6
258]
259[immutable/checker.py: remove some uses of s.get_serverid(), not all
260warner@lothar.com**20110227011134
261 Ignore-this: e480a37efa9e94e8016d826c492f626e
262]
263[add remaining get_* methods to storage_client.Server, NoNetworkServer, and
264warner@lothar.com**20110227011132
265 Ignore-this: 6078279ddf42b179996a4b53bee8c421
266 MockIServer stubs
267]
268[upload.py: rearrange _make_trackers a bit, no behavior changes
269warner@lothar.com**20110227011128
270 Ignore-this: 296d4819e2af452b107177aef6ebb40f
271]
272[happinessutil.py: finally rename merge_peers to merge_servers
273warner@lothar.com**20110227011124
274 Ignore-this: c8cd381fea1dd888899cb71e4f86de6e
275]
276[test_upload.py: factor out FakeServerTracker
277warner@lothar.com**20110227011120
278 Ignore-this: 6c182cba90e908221099472cc159325b
279]
280[test_upload.py: server-vs-tracker cleanup
281warner@lothar.com**20110227011115
282 Ignore-this: 2915133be1a3ba456e8603885437e03
283]
284[happinessutil.py: server-vs-tracker cleanup
285warner@lothar.com**20110227011111
286 Ignore-this: b856c84033562d7d718cae7cb01085a9
287]
288[upload.py: more tracker-vs-server cleanup
289warner@lothar.com**20110227011107
290 Ignore-this: bb75ed2afef55e47c085b35def2de315
291]
292[upload.py: fix var names to avoid confusion between 'trackers' and 'servers'
293warner@lothar.com**20110227011103
294 Ignore-this: 5d5e3415b7d2732d92f42413c25d205d
295]
296[refactor: s/peer/server/ in immutable/upload, happinessutil.py, test_upload
297warner@lothar.com**20110227011100
298 Ignore-this: 7ea858755cbe5896ac212a925840fe68
299 
300 No behavioral changes, just updating variable/method names and log messages.
301 The effects outside these three files should be minimal: some exception
302 messages changed (to say "server" instead of "peer"), and some internal class
303 names were changed. A few things still use "peer" to minimize external
304 changes, like UploadResults.timings["peer_selection"] and
305 happinessutil.merge_peers, which can be changed later.
306]
307[storage_client.py: clean up test_add_server/test_add_descriptor, remove .test_servers
308warner@lothar.com**20110227011056
309 Ignore-this: efad933e78179d3d5fdcd6d1ef2b19cc
310]
311[test_client.py, upload.py:: remove KiB/MiB/etc constants, and other dead code
312warner@lothar.com**20110227011051
313 Ignore-this: dc83c5794c2afc4f81e592f689c0dc2d
314]
315[test: increase timeout on a network test because Francois's ARM machine hit that timeout
316zooko@zooko.com**20110317165909
317 Ignore-this: 380c345cdcbd196268ca5b65664ac85b
318 I'm skeptical that the test was proceeding correctly but ran out of time. It seems more likely that it had gotten hung. But if we raise the timeout to an even more extravagant number then we can be even more certain that the test was never going to finish.
319]
320[docs/configuration.rst: add a "Frontend Configuration" section
321Brian Warner <warner@lothar.com>**20110222014323
322 Ignore-this: 657018aa501fe4f0efef9851628444ca
323 
324 this points to docs/frontends/*.rst, which were previously underlinked
325]
326[web/filenode.py: avoid calling req.finish() on closed HTTP connections. Closes #1366
327"Brian Warner <warner@lothar.com>"**20110221061544
328 Ignore-this: 799d4de19933f2309b3c0c19a63bb888
329]
330[Add unit tests for cross_check_pkg_resources_versus_import, and a regression test for ref #1355. This requires a little refactoring to make it testable.
331david-sarah@jacaranda.org**20110221015817
332 Ignore-this: 51d181698f8c20d3aca58b057e9c475a
333]
334[allmydata/__init__.py: .name was used in place of the correct .__name__ when printing an exception. Also, robustify string formatting by using %r instead of %s in some places. fixes #1355.
335david-sarah@jacaranda.org**20110221020125
336 Ignore-this: b0744ed58f161bf188e037bad077fc48
337]
338[Refactor StorageFarmBroker handling of servers
339Brian Warner <warner@lothar.com>**20110221015804
340 Ignore-this: 842144ed92f5717699b8f580eab32a51
341 
342 Pass around IServer instance instead of (peerid, rref) tuple. Replace
343 "descriptor" with "server". Other replacements:
344 
345  get_all_servers -> get_connected_servers/get_known_servers
346  get_servers_for_index -> get_servers_for_psi (now returns IServers)
347 
348 This change still needs to be pushed further down: lots of code is now
349 getting the IServer and then distributing (peerid, rref) internally.
350 Instead, it ought to distribute the IServer internally and delay
351 extracting a serverid or rref until the last moment.
352 
353 no_network.py was updated to retain parallelism.
354]
355[TAG allmydata-tahoe-1.8.2
356warner@lothar.com**20110131020101]
357Patch bundle hash:
358c186bd210fda18a13b86d75683e3bd8ca0b7c2df