Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/webtorrent/webtorrent.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFeross Aboukhadijeh <feross@feross.org>2021-03-18 03:37:18 +0300
committerFeross Aboukhadijeh <feross@feross.org>2021-03-18 03:37:18 +0300
commit687decc4a8cabd8f35fd5a8ef8be7ab86fa411b1 (patch)
tree29eeb1128d5b44547f5ce66ecec84312ed39f84c
parente52dc7187a085b0121e132224fb7be3f9002c5ae (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
-rw-r--r--lib/torrent.js9
-rw-r--r--package.json1
2 files changed, 6 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]
diff --git a/package.json b/package.json
index d660477..851696d 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,7 @@
"bittorrent-protocol": "^3.2.0",
"chrome-net": "^3.3.4",
"chunk-store-stream": "^4.2.0",
+ "cpus": "^1.0.3",
"create-torrent": "^4.4.4",
"debug": "^4.3.1",
"end-of-stream": "^1.4.4",