make the RelayMemory faq entry actually provide useful tips
Roger Dingledine

Roger Dingledine commited on 2010-02-24 07:04:43
Zeige 1 geänderte Dateien mit 36 Einfügungen und 38 Löschungen.

... ...
@@ -904,44 +904,42 @@ a little bit of bandwidth, then flip a coin. Thanks for volunteering!
904 904
 <h3><a class="anchor" href="#RelayMemory">Why is my Tor relay using so
905 905
 much memory?</a></h3>
906 906
 
907
-<p>There are three reasons for this.
908
-</p>
909
-
910
-<p>The first is that Tor uses threads, so many of the measurements (such
911
-as the output of top or ps) are inaccurate: they add up all the library
912
-memory used by each thread, so the total "virtual" memory size will be
913
-much larger than the actual amount of ram Tor is using. So this isn't
914
-actually a problem &mdash; looking at the "resident" memory size instead should
915
-be much more accurate (unless you're swapping a lot). (Note that on <a
916
-href="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#RelayOS">OpenBSD,
917
-NetBSD, and old FreeBSD</a>, Tor uses a separate process for each thread,
918
-since threading is broken on these platforms, so in these cases it
919
-actually <i>is</i> using this much memory!)
920
-</p>
921
-
922
-<p>The second reason is that Tor relays really do use quite a bit of
923
-memory. Each connection that you hold open has a pair of memory buffers
924
-that it uses for reading and writing from the network, and when many
925
-connections are active at once, these buffers might grow quite large. We
926
-used to have them shrink again immediately once they weren't full, but we
927
-found that was using too much CPU &mdash; so now they stick around for a short
928
-amount of time in case we need to use them again soon after. It is not
929
-unusual for a fast exit relay to use several hundred megabytes of memory
930
-(i.e.: you need about 768 MB RAM for a 10 MBit connected dedicated exit
931
-node on Linux with Tor 0.1.2.14).
932
-</p>
933
-
934
-<p>The third reason is that we may have some bugs somewhere. They fall
935
-into the categories of "things we keep around in memory that are big
936
-and we should probably get rid of", and "actual memory leaks". We're
937
-working on these, but we'd love some help. We believe the 0.1.1.x stable
938
-release was pretty good about this, but 0.1.2.x and 0.2.0.x are so far
939
-quite bad. Please help!
940
-</p>
941
-
942
-<p>Many linux users have found that in the 0.2.0.x series, <tt>configure
943
---enable-openbsd-malloc</tt> fixes many of the linux malloc fragmentation
944
-bugs.
907
+<p>If your Tor relay is using more memory than you'd like, here are some
908
+tips for reducing its footprint:
909
+</p>
910
+
911
+<ol>
912
+<li>If you're on Linux, you may be encountering memory fragmentation
913
+bugs in glibc's malloc implementation. That is, when Tor releases memory
914
+back to the system, the pieces of memory are fragmented so they're hard
915
+to reuse. The Tor tarball ships with OpenBSD's malloc implementation,
916
+which doesn't have as many fragmentation bugs (but the tradeoff is higher
917
+CPU load). You can tell Tor to use this malloc implementation instead:
918
+<tt>./configure --enable-openbsd-malloc</tt></li>
919
+
920
+<li>If you're running a fast relay, meaning you have many TLS connections
921
+open, you are probably losing a lot of memory to OpenSSL's internal
922
+buffers (38KB+ per socket). We've patched OpenSSL to release unused buffer
923
+memory more aggressively. If you update to OpenSSL 1.0.0-beta5, Tor's
924
+build process will automatically recognize and use this feature.</li>
925
+
926
+<li>If you're running on Solaris, OpenBSD, NetBSD, or
927
+old FreeBSD, Tor is probably forking separate processes
928
+rather than using threads. Consider switching to a <a
929
+href="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#RelayOS">better
930
+operating system</a>.</li>
931
+
932
+<li>If you still can't handle the memory load, consider reducing the
933
+amount of bandwidth your relay advertises. Advertising less bandwidth
934
+means you will attract fewer users, so your relay shouldn't grow
935
+as large. See the <tt>MaxAdvertisedBandwidth</tt> option in the man
936
+page.</li>
937
+
938
+</ol>
939
+
940
+<p>
941
+All of this said, fast Tor relays do use a lot of ram. It is not unusual
942
+for a fast exit relay to use 500-1000 MB of memory.
945 943
 </p>
946 944
 
947 945
 <hr />
948 946