diff options
author | Feross Aboukhadijeh <feross@feross.org> | 2021-03-18 03:37:18 +0300 |
---|---|---|
committer | Feross Aboukhadijeh <feross@feross.org> | 2021-03-18 03:37:18 +0300 |
commit | 687decc4a8cabd8f35fd5a8ef8be7ab86fa411b1 (patch) | |
tree | 29eeb1128d5b44547f5ce66ecec84312ed39f84c /lib/torrent.js | |
parent | e52dc7187a085b0121e132224fb7be3f9002c5ae (diff) |
Change filesystem concurrency to number of cpus
Makes the EventEmitter warning show up less often, and avoids running potentially 100s or 1000s of chunkStore.get() calls concurrently in _verifyPieces
Diffstat (limited to 'lib/torrent.js')
-rw-r--r-- | lib/torrent.js | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/torrent.js b/lib/torrent.js index 970eab4..db3bebe 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -3,6 +3,7 @@ const addrToIPPort = require('addr-to-ip-port') const BitField = require('bitfield').default const ChunkStoreWriteStream = require('chunk-store-stream/write') +const cpus = require('cpus') const debug = require('debug')('webtorrent:torrent') const Discovery = require('torrent-discovery') const EventEmitter = require('events').EventEmitter @@ -19,13 +20,13 @@ const parseTorrent = require('parse-torrent') const path = require('path') const Piece = require('torrent-piece') const pump = require('pump') +const queueMicrotask = require('queue-microtask') const randomIterate = require('random-iterate') const sha1 = require('simple-sha1') const speedometer = require('speedometer') const utMetadata = require('ut_metadata') -const utPex = require('ut_pex') // browser exclude const utp = require('utp-native') // browser exclude -const queueMicrotask = require('queue-microtask') +const utPex = require('ut_pex') // browser exclude const File = require('./file') const Peer = require('./peer') @@ -44,8 +45,8 @@ const PIPELINE_MAX_DURATION = 1 const RECHOKE_INTERVAL = 10000 // 10 seconds const RECHOKE_OPTIMISTIC_DURATION = 2 // 30 seconds -// IndexedDB chunk stores used in the browser benefit from maximum concurrency -const FILESYSTEM_CONCURRENCY = process.browser ? Infinity : 2 +// IndexedDB chunk stores used in the browser benefit from high concurrency +const FILESYSTEM_CONCURRENCY = process.browser ? cpus().length : 2 const RECONNECT_WAIT = [1000, 5000, 15000] |