network: ~N
-memory footprint: N/K*S
+memory footprint: S
when the file is not already uploaded
-------------------------------------
cpu: 2*~A
-network: ~N + ~A
+network: N/K*A
memory footprint: N/K*S
Publishing an ``A``-byte mutable file
=====================================
+cpu: ~A + a large constant for RSA keypair generation
+
network: A
memory footprint: N/K*A
-cpu: ~A + a large constant for RSA keypair generation
-
notes: Tahoe-LAFS generates a new RSA keypair for each mutable file that it
publishes to a grid. This takes up to 1 or 2 seconds on a typical desktop PC.
Downloading ``B`` bytes of an ``A``-byte immutable file
=======================================================
-network: B
+cpu: ~B
-cpu: ~A
+network: B
notes: When Tahoe-LAFS 1.8.0 or later is asked to read an arbitrary
range of an immutable file, only the S-byte segments that overlap the
Downloading ``B`` bytes of an ``A``-byte mutable file
=====================================================
+cpu: ~A
+
network: A
memory footprint: A
Modifying ``B`` bytes of an ``A``-byte mutable file
===================================================
+cpu: ~A
+
network: A
memory footprint: N/K*A
Inserting/Removing ``B`` bytes in an ``A``-byte mutable file
============================================================
+cpu: ~A
+
network: A
memory footprint: N/K*A
Adding an entry to an ``A``-entry directory
===========================================
+cpu: ~A
+
network: ~A
-memory footprint: N/K*A
+memory footprint: N/K*~A
notes: In Tahoe-LAFS, directories are implemented as specialized mutable
files. So adding an entry to a directory is essentially adding B
Listing an ``A`` entry directory
================================
+cpu: ~A
+
network: ~A
-memory footprint: N/K*A
+memory footprint: N/K*~A
notes: Listing a directory requires that the mutable file storing the
directory be downloaded from the grid. So listing an A entry
Performing a file-check on an ``A``-byte file
=============================================
-network: ~G, where G is the number of servers on your grid
+cpu: ~G
+
+network: ~G
memory footprint: negligible
Performing a file-verify on an ``A``-byte file
==============================================
+cpu: ~N/K*A
+
network: N/K*A
memory footprint: N/K*S
notes: To verify a file, Tahoe-LAFS downloads all of the ciphertext
-shares that were originally uploaded to the grid and integrity
-checks them. This is, for well-behaved grids, likely to be more
-expensive than downloading an A-byte file, since only a fraction
-of these shares are necessary to recover the file.
+shares that were originally uploaded to the grid and integrity checks
+them. This is (for well-behaved grids) more expensive than downloading
+an A-byte file, since only a fraction of these shares are necessary to
+recover the file.
Repairing an ``A``-byte file (mutable or immutable)
===================================================
-network: variable; up to around ~A
+cpu: variable, between ~A and ~N/K*A
+
+network: variable; between A and N/K*A
-memory footprint: from S to (1+N/K)*S
+memory footprint: (1+N/K)*S
-notes: To repair a file, Tahoe-LAFS downloads the file, and generates/uploads
-missing shares in the same way as when it initially uploads the file.
-So, depending on how many shares are missing, this can be about as
-expensive as initially uploading the file in the first place.
+notes: To repair a file, Tahoe-LAFS downloads the file, and
+generates/uploads missing shares in the same way as when it initially
+uploads the file. So, depending on how many shares are missing, this
+can cost as little as a download or as much as a download followed by
+a full upload.