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 МБ заполняется, что означает, что установка максимальной скорости записи на диск приводит к ограничению как скорости загрузки, так и потребления памяти.