monotorrent - writeRate/readRate не работает

Я использую monotorrent, который загружает файл размером 20 ГБ, когда monotorrent создает файлы, в которых память и процессор достигают максимума, что замедляет работу компьютера и даже перегревает его, поэтому я хотел ограничить использование памяти, ограничив скорость записи.

вот что я попробовал:-

, я проверил и обнаружил, что вы можете ограничить скорость чтения / записи двигателя с помощью этого кода:-

EngineSettings engineSettings = new EngineSettings(downloadsPath, port);
                engineSettings.PreferEncryption = true;
                engineSettings.AllowedEncryption = EncryptionTypes.All;
                engineSettings.MaxWriteRate = **maximum write rate in bytes**;
                engineSettings.MaxReadRate = **maximum read rate in bytes**;
                engineSettings.GlobalMaxDownloadSpeed = **max download in bytes**;

скорость загрузки работала, но она не ограничивала использование памяти, поэтому я проверил значение скорости записи во время выполнения, используя этот код

 MessageBox.Show(engine.DiskManager.WriteRate.ToString());

и он вернулся 0поэтому вместо добавления MaxWriteRate к EngineSettings я вошел в EngineSettings.cs и добавил значение по умолчанию для MaxWriteRate изменив этот код:-

public int MaxWriteRate
        {
            get { return 5000; }
            set { maxWriteRate = 5000; }
        }

и это не ограничивало использование памяти также WriteRate значение вернуло 0, поэтому я вошел в DiskManager.cs и добавил значение по умолчанию для WriteRate изменив этот код:-

public int WriteRate
        {
            get { return 5000; }
        }

сейчас WriteRate значение вернуло 5000, но это не ограничивало использование памяти, тогда я застрял и не нашел ничего другого, чтобы измениться,

Кто-нибудь знает, почему это не работает? я думаю что WriteRate даже не об ограничении скорости записи.

0 ответов

При загрузке торрента скорость загрузки ограничена тремя вещами:

1) Максимально допустимая скорость загрузки для TorrentManager 2) Максимально допустимая общая скорость загрузки 3) В памяти хранится не более 4 МБ данных в ожидании записи на диск.

В частности, по третьему пункту, если в памяти хранится более 4 МБ фрагментов, дальнейшие вызовы Socket.Receive производиться не будут, пока эти данные не будут сброшены. https://github.com/mono/monotorrent/blob/caac16cffd95749febe04c3f7cf22567c3e40432/src/MonoTorrent/MonoTorrent.Client/RateLimiters/DiskWriterLimiter.cs

На этом снимке экрана показано, что происходит сегодня, когда вы указываете максимальную скорость записи 2 * 1024 * 1024 (2048 кБ / сек):

Скорость загрузки ограничивается автоматически, поскольку буфер размером 4 МБ заполняется, что означает, что установка максимальной скорости записи на диск приводит к ограничению как скорости загрузки, так и потребления памяти.

Другие вопросы по тегам