首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单流-写率/读率不起作用

单流-写率/读率不起作用
EN

Stack Overflow用户
提问于 2018-08-02 12:55:47
回答 1查看 91关注 0票数 0

我使用的是下载20 to ~文件的单数据流,当单数据流创建文件时,内存和CPU达到最大值,从而减缓计算机的速度,甚至过热,所以我想通过限制写入速率来限制内存的使用。

,这是我尝试过的:-

,我检查了一下,发现您可以使用以下代码限制引擎的读/写速率:

代码语言:javascript
运行
复制
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**;

下载速度正常,但它没有限制内存的使用,所以我使用以下代码在运行时检查了写速率值

代码语言:javascript
运行
复制
 MessageBox.Show(engine.DiskManager.WriteRate.ToString());

它返回0,所以我没有将MaxWriteRate添加到EngineSettings中,而是进入EngineSettings.cs并通过更改以下代码向MaxWriteRate添加了一个默认值:-

代码语言:javascript
运行
复制
public int MaxWriteRate
        {
            get { return 5000; }
            set { maxWriteRate = 5000; }
        }

并且它没有限制内存的使用-- WriteRate值也返回0,所以我进入DiskManager.cs并通过更改以下代码向WriteRate添加了一个默认值:-

代码语言:javascript
运行
复制
public int WriteRate
        {
            get { return 5000; }
        }

现在WriteRate值返回了5000,但是它并没有限制内存的使用,然后我坚持了下来,没有找到任何需要更改的地方,

有人知道为什么不起作用吗?我认为WriteRate甚至不是限制写作速度。

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 15:56:10

下载急流时,下载速度受到以下三项限制:

1) TorrentManager的最大允许下载速度2)总体上允许的最大下载速度3)在等待写入磁盘时存储在内存中的数据不超过4MB。

特别是在第三点上,如果内存中有超过4MB的片段,那么在数据刷新之前不会再进行Socket.Receive调用。https://github.com/mono/monotorrent/blob/caac16cffd95749febe04c3f7cf22567c3e40432/src/MonoTorrent/MonoTorrent.Client/RateLimiters/DiskWriterLimiter.cs#L43-L46

这个屏幕截图显示了当您指定最大写入速率为2* 1024 * 1024 (2,048 kB/秒)时,今天会发生什么:

下载速率自动限制,因为4MB缓冲区被填满,这意味着设置最大磁盘写入速率最终会限制下载速率和内存消耗。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51654248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档