[[PageOutline(1-3,,inline)]] = Current state of Deluge (v1.3) = Deluge v1.3 handles hundreds of torrents fairly well. The GTKUI uses a lot of CPU to render the torrent list, so to keep CPU usage at a minimum it is a good idea to run in deamon/client mode and only connect with to the daemon when you need. When the torrent list reaches 1000 torrents, the CPU usage gets more and more noticable, the more torrents the slower it gets. Improvements are needed for Deluge to handle thousands of torrents! = State of git-master (To be v1.4) = git-master has been tested and works well with 2-3000 torrents. Currently the biggest problem is that to make libtorrent v0.16.X handle that many active torrents, the settings ''active_dht_limit'', ''active_tracker_limit'', ''active_lsd_limit'' must be set. This is currently not implemented in git-master, but applying the patch proposed in #2257 should solve this. The following patches have already been applied which improves the speed of Deluge with many torrents greatly: * [http://dev.deluge-torrent.org/ticket/2255 Speed optimizations to the daemon (#2255)], [http://git.deluge-torrent.org/deluge/commit/?id=8c106ce8c4c0794ddd63e8e8f98b097221a56a52 master] (Daemon) * [http://dev.deluge-torrent.org/ticket/2246 Speedup set_prioritize_first_last in torrent.py (#2246)], [http://git.deluge-torrent.org/deluge/commit/?id=6313ff19b322a2801c633324bb0d77dc4f59b9a1 master] (Daemon, mainly on startup) * [http://dev.deluge-torrent.org/ticket/2184 Speed optimizations to the torrentview in GTKUI (#2184)], [http://git.deluge-torrent.org/deluge/commit/?id=b4f5e78a775503a5501e2eba7eee73dfa0e1955a master] (GTKUI) * [http://dev.deluge-torrent.org/ticket/2248 Cache tracker icons in gtkui (#2248)] ([http://git.deluge-torrent.org/deluge/commit/?id=463ac0c07eda1b33b145e1b9be7edbc0981815a99 master]) ([http://git.deluge-torrent.org/deluge/commit/?h=1.3-stable&id=36a78d8f219f 1.3-stable)] (GTKUI) * [http://dev.deluge-torrent.org/ticket/2259 Small (but significant) speed optimizations to the torrentview in GTKUI (#2259)], [http://git.deluge-torrent.org/deluge/commit/?h=1.3-stable&id=a0ae3ebfce826980d08f6e75ec62a48e39cd5b41 1.3-stable] (GTKUI, smaller version of #2184 for 1.3 branch) * [http://dev.deluge-torrent.org/ticket/2116 Application layer protocol for transfering RPC messages + utf8 decoding error (#2116)], [http://git.deluge-torrent.org/deluge/commit/?id=8e7432e71c80a47c96bf48c07535ec1991efe1d9 master] (RPC communication between daemon and clients) Proposed patches: * [http://dev.deluge-torrent.org/ticket/2285 Speed optimizations to sessionproxy (#2285)] (GTKUI) * [http://dev.deluge-torrent.org/ticket/2250 Speedup removing multiple torrents from core (#2250)] (GTKUI) * [http://dev.deluge-torrent.org/ticket/2257 Allow setting of active_dht_limit, active_tracker_limit and active_lsd_limit. Fix bugs. (#2257)] (Daemon) Other issues that need investigation: * Adding multiple torrents is very slow. This is because when adding many torrents, one call is made to core.add_torrent_file for each torrent. * Pausing/resuming multiple torrents is very slow. This is probably because when a torrent changes state, a lot of operations are done (event listeners in GUI presumable), so with hundreds of torrents changing state the result is too much work needing to be done. * CPU usage on an idle daemon can still be around 5%. One possible cause for this is because each torrent class creates a LoopingCall which causes twisted to do a lot of checking when there are a lot of torrents in the session. * Add caching to the data-funcs in torrentview.py/listview.py to reduce unecessary computation (Patch development: [https://github.com/bendikro/deluge/commits/master-torrentview-data-funcs-cache])