迅维网

查看: 1811|回复: 20
打印 上一主题 下一主题
[求助中]

下载速度超过10MB/s系统会卡是机械硬盘的问题吗?

[复制链接]
跳转到指定楼层
1#
发表于 2018-5-14 13:48:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: LAN 来自 LAN

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
下载速度超过10MB/s系统会卡是机械硬盘的问题吗?

2#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
既然题目关键字包含迅雷,那么可以肯定是机械硬盘问题。


先看几个技术指标:
    迅雷最大缓存可以设置为256MB;通常迅雷的下载连接,根据下载软件的热度会在十几个到上百个之间,我们假设一个不太大的数值,例如25,那么平均下来,单个连接的缓存最大是10MB;通常这些连接中,只有两三个的速度是非常高的(1MB/s以上);下载速度10MB/s,意味着平均2~3秒钟,这几个高速连接的缓存就会用完必须写入硬盘;迅雷下载是预分配磁盘空间的,理论上整个临时文件会被文件系统尽可能安排在一段连续的磁盘扇区上,这意味着,不同下载连接写入的内容不可能是连续的;所以上面提到的两三个高速连接写入的时候,不是持续写入而是更接近于随机写入;而且因为本身需要写入不相邻的扇区/磁道,磁盘本身的硬件写入缓存、AHCI的NCQ写入重排优化对这个场景的优化几乎毫无帮助;机械硬盘的持续写入性能虽然高达100~200MB/s,但随机写入性能只有5MB/s~15MB/s之间,取决于写入块的大小、硬盘本身性能、文件在磁盘的内圈/外圈位置等。


上述几个条件综合起来,用迅雷下载,10MB/s的下载速度足以占满一个机械硬盘的写入性能。如果再有其它对同一个硬盘的IO操作,表现出来的症状就是需要等待IO,也就是系统卡顿。

回复 支持 反对

使用道具 举报

3#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
并不是,是你内存缓存设置不够大,迅雷把内存缓存拉到1024mb,可以大幅缓解机械盘压力
如果还不行,给机械盘分配1024m的ramcache,不够就2048m,我自己给机械的ramcache就是2048m,问题解决
如果还是不行,估计你的机械不行,如果5400转的废物就不要拿出来了,另外3碟版1t也是典型的低性能盘即使7200转,优秀的SAS机械其实甚至可以跑到330m/s的连续写入,甚至超过部分入门固态

如果你内存小于8g,那么只能说你该加内存了

回复 支持 反对

使用道具 举报

4#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
排除软件和系统BUG、机械硬盘本身的质量问题(慢道和固件BUG),还有两方面的原因:一是温彻斯特(Winchester)硬盘的先天缺点,二是不合理的缓冲机制
我们常说的机械硬盘,也叫做「温彻斯特(Winchester)硬盘」,其基本原理可以在网上搜到,简单地说:每次读写操作,都需要磁头去寻找目标扇区,是个类似于"机械臂"的结构。这种结构,决定了机械硬盘不可以同时执行多项操作(除非设计两套完全独立的结构,比如上个月希捷的新闻)。换句话说,即使机械硬盘有着100MB/s的持续读写能力,也不代表可以将这"100"拆分为"10+90"。一旦处于满负荷的状态(可以在任务管理器里看到磁盘的活动时间,0-100%,不是很严格),机械硬盘的响应就会变得极其缓慢,拖慢整个系统。
由于"下载"是个持续性的读写过程,只要开着下载软件,就不停在往硬盘写入新的数据。按照这个理论,岂不是只要下载机械硬盘就没法用了?其实,系统和下载软件已经考虑到了这一点,设计了缓冲机制:将传输的数据先存储到内存的一个区域(称之为缓冲区),达到一定大小之后再将这部分真实写入硬盘。这样一来,机械硬盘的活动时间会显著下降,卡顿感也能得到有效缓解。不过,因为缓冲区是个很"古老"的概念了,下载软件在设计缓冲区时,参照的是当时的背景:那时候还没有百兆光纤入户,所以就将"下载缓存"默认设定为8-16MB。而现在随着100-200Mbps宽带的普及,当下载速度超过10MB/s,意味着每1秒、甚至不到1秒就要进行写入操作,同时还需要校验所写入的数据(读取操作),这使得16MB的软件缓冲区完全不够用,机械硬盘始终保持高负荷状态。另外,更不幸的是,一旦开始使用系统I/O缓冲区,即使系统安装在SSD上,也会因为缓冲区耗尽而导致整个系统响应严重迟缓。
谈到解决办法,除了换SSD,换高转速、大容量缓存、多线程性能良好的机械硬盘(NCQ性能也和固件优化有关),还可以尝试在软件设置里增大下载缓存、减少连接数,也可以尝试使用RAMDisk替换系统I/O缓冲区(在2011年前后挺流行,因为那时候SSD还属于天价),总之,是用"内存空间"换"硬盘时间"~

回复 支持 反对

使用道具 举报

5#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
取决于文件系统、下载软件的实现、硬盘型号、当前系统其他负载等
如果软件实现是把下载的文件分块写在另外的临时文件然后搬过去,再加上系统负载较高、硬盘写入缓存扇区或者缓存满了的话,越缓冲越慢,不得不说是非常智障的设计
以及现在的硬盘都是SMR的,特性有点像TLC SSD,读没问题,但写入特别慢,因为这些硬盘磁道间距特别细,读取头可以做到很小没问题,但写入头不能再小了,于是写一个扇区会把相邻扇区盖掉,只能一整个区块读出来重写,写到每隔N个磁道有一条宽的不重叠磁道为止。这种硬盘一般会加大缓存,或者在硬盘上划分一些非重叠磁道的柱面作为写入缓存区,或者干脆就加个小SSD作为缓存。但如果是前两种情况,遇到I/O负载大,在系统临时文件、缓存区来回搬数据的时候,自己想想磁头要多跑多少路,性能会跌到什么程度。如果运行在兼容模式,系统驱动没有针对这种硬盘优化,靠硬盘主控死扛的话,更慢

回复 支持 反对

使用道具 举报

6#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
现代硬盘都可以支持这个速度。机械磁盘也一样。就算是usb外接的硬盘,最起码的支持速度都比这个高个100倍的样子了。
可以试验一下,先别去运行其他程序,开个单线程小程序loop吸收读取某个网络资源,写到硬盘文件。比如在一个非常老的浏览器里面去下载一个比较打的资源。大多数时间就在waiting状态,也不会卡。从程序角度来说,绝对就卡在那个等待输入方面了(所以把自己的时间让给了其他程序,比如系统)。
为什么会卡呢?毕竟题主加了"迅雷"这标签,那就得从这个角度出发。。。
    下载的东西多了,两边同时开了许多个filehandle(网络具体端口connection那边也是虚拟filehandle)。bittorrent的话,下载一个种子,本来就不是一个filehandle/connection的事。没那么简单。同时得跟几百个对方散户保持链接,在本地也要同时编辑同一个文件若干不同的位置(在背后很可能也是几百个filehandle)。这些输出输入切换的复杂程度,也没想象中那么简单。如果程序有什么bug,也挺容易占用资源。理论上,每次切换filehandle,每次切换线程(线程也是filehandle),也都有个最小成本(比如0.05毫秒)。这种成本,跟处理器速度不太有关,跟硬盘速度也无关,一般也感觉不到的。但是你要同时下载数百个bittorrent的话,同时管理数万个filehandle,如果没有任何buffer,这就会成了该程序最大的负担拖累了。不会在cpu占比直接显示,因为cpu本来就没在做多少事情,而在等主板执行这些切换。不过也能感觉得到那种卡感。另外,硬盘只能同时读写一个地方。磁盘切盘切位的时间也确实不止50微妙,可能必一毫秒还长。这都是一种停止转换,也不能同时并行。为什么我们把一个单独文件转到另一个磁盘上可以达到很高的速度,同时上传多个文件就严重降低了总和速度呢?还不如一个一个来?同时进行却占用了很多没必要的来回传命或转位时间。也许有更好的算法可以处理这类事,但大多数软件架构是做不到那么精致的。(也许可以改一下迅雷软件的设置,把全部下载放到内存,偶尔才更新目标文件,我不太清楚了)也有一种可能,这软件故意在消耗你的处理器时间,做一些其他的事。不排除邪恶用你的计算机去算其他东西之类的。也有可能利于你的软件体验(比如在'checking'/'preparing'),只是用了比较粗暴直接的算法,占了太大的资源了。也有一种可能是电脑上所安装的其他软件(比如那些一直开着的'杀毒'软件之类的,不断地在观察硬盘状态,或者一直在干自己的坏事,让电脑变得卡了,或者正好跟这软件服务冲突成了一种奇怪循环。反正总可以查看哪个程序占了cpu/network/disk,另外处置吧)。如果是迅雷占领了,保证是人家程序设计或设置上的问题。。。硬盘比较满的话,或者曾经很满,有一些例外情况会导致写入更加缓慢。因为文件不能全部写到同一个实体地址。还有内存满了,用硬盘当内存之类的情况,也会变卡了。
Really forgot what my original point was.

回复 支持 反对

使用道具 举报

7#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
我觉得你开下任务管理器看下资源占用就知道哪里问题了,哪个占用高了说明哪里问题。 这么多人凭空分析意义不大。

回复 支持 反对

使用道具 举报

8#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
很大可能是机械硬盘的问题。

回复 支持 反对

使用道具 举报

9#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
不知道你使用的下载软件默认开了几个线程下载?如果数量太多缓存又不够的话会增加硬盘的响应时间。

回复 支持 反对

使用道具 举报

10#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
五六年前在学校局域网下BT,七八兆速度卡的不行,现在不知道怎么样

回复 支持 反对

使用道具 举报

11#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
虽说这个问题理论看起来确实是硬盘问题占的可能性比较大。到实际上我换了固态后依然会有这个问题。。并且就算下载时候不动,到5-6mb/s时候依旧有可能会死机。。。更别说原来不限速10+mb/s的下载了。。。


后来我把迅雷最新版删了,换了迅雷精简版,再也没这种破事出现了。

回复 支持 反对

使用道具 举报

12#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
不是硬盘的问题。只要不是上古cpu就是系统的问题。

回复 支持 反对

使用道具 举报

13#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
我也有过这种毛病,只不过用的是idm,下载速度很快时hdd会很卡(同时用暴风播放视频会卡死)~

回复 支持 反对

使用道具 举报

14#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
我以前用一个西数5400 1T 7mm的盘就发生过这种情况,磁盘队列排到1000+响应时间10000+
如果是WIN10的话 任务管理器里看
性能->磁盘->平均响应时间
如果是win7的话
任务管理器->性能->打开资源监视器->磁盘->响应时间
如果一直维持在几百到几千毫秒的话,那确实是硬盘随机读写达到了瓶颈。
解决方法是上更大的缓存,比如加大迅雷的磁盘缓存(好像并没有什么用)。
最暴力的方法还是用RAM缓存,比如primocache(超好用,立竿见影)。
分给下载分区500MB缓存以后没有任何卡顿的情况发生了,缺点就是如果系统掉电的话会有数据丢失,不过我一般也就在下载的时候开,所以无所谓啦。
另外,用别的下载软件,比如迅雷5,Bitcomet,Emule,在进行缓存设置以后都不会有类似的现象发生。我想说迅雷真的用心做下载吗?

回复 支持 反对

使用道具 举报

15#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
这是win10的bug,win7没这个问题。
不仅仅是迅雷,Steam等需要高速下载的软件都会导致这个问题,甚至后台自动更新都会导致卡死。
解决方法要么上固态硬盘要么换系统。

回复 支持 反对

使用道具 举报

16#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
这?下载速度就是在学校达到过10兆每秒以上

回复 支持 反对

使用道具 举报

17#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
如果系统盘和下载盘用的是同一块机械硬盘的话,的确是
不仅会下载卡,解压也卡,拷贝的时候也卡。只要是占用硬盘大的,都会卡
如果是固态或者是双硬盘就没事了。

回复 支持 反对

使用道具 举报

18#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
我宽带是300M的 下载速度最高到32MB左右吧,单独下载并不卡,但是下载时打开刺客信条起源玩会卡到爆。锅在机械硬盘上。每秒100MB的读写速度满足不了同时下载和玩游戏

回复 支持 反对

使用道具 举报

19#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
应该是迅雷的问题。我局域网下通常100Mbp/s下载到机械硬盘里面,系统也未出现卡顿,倒是路由器扛不住了

回复 支持 反对

使用道具 举报

20#
发表于 2018-5-14 13:48:42 | 只看该作者 来自: LAN 来自 LAN
如果是驱动不合适或者老设备,有一个可能是CPU在代替网卡处理数据包。
太久了,想不起来这个事儿叫什么了……

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复