Chinaunix首页 | 论坛 | 博客
  • 博客访问: 149218
  • 博文数量: 33
  • 博客积分: 410
  • 博客等级: 二等列兵
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-01 09:50
文章分类

全部博文(33)

文章存档

2010年(7)

2009年(21)

2008年(5)

分类:

2009-10-22 11:36:20

在一个论坛碰到人问这个问题,解答了一下。
 
我经常不在电脑跟前而挂着迅雷或者电驴下载大文件,时间久了慢慢就有担心。
所以向请教一下对硬盘工作原理了解的同志,怎样设置才能最大限度的保护硬盘。

以迅雷为例,我当前是根据离开时候的下载速度大概计算出下载到迅雷的最小缓存需要多久?
比方说,迅雷的最小缓存是16兆,我根据下载速度 150K 计算出下载够16兆大小的文件需要109秒,就是1.8分钟。那就没有必要在电源管理当中关闭硬盘工作。
如果当时的速度是2K,下载够16兆大小的文件需要8192秒,就是136.5分钟。这是我在离开前就从电源管理当中把硬盘设置成 三分钟后关闭。让数据攒够16兆的时候再去唤醒硬盘工作一下,再沉睡一下。

针对我当前这种做法,提几个问题:
1.迅雷的缓存是在硬盘上面还是在内存里面,如果在16兆以前的下载数据默认暂存在硬盘上面,那我这么做更加会加剧硬盘在反复起用当中造成的磨损!
2.迅雷是否默认的只要达到最小缓存数据就开始往硬盘上面写,还是说一直会等到数据攒够它的最大缓存256兆?
 
 
首先说第二个问题,迅雷的最小缓存和最大缓存两个值,含义不同。
 
举例就简单了:例如最小缓存是4兆,最大缓存是256兆。意义就是下载到4兆数据之后,放入硬盘的缓存中(一般在迅雷指定的临时目录下),然后将这部分数据再复制到下载目的位置的文件中——也就是你下载的真正的文件里。
 
这么做的意义一来是减少磁盘读写,二来是为了防止迅雷假死。最大缓存的意义就是为了防止高网速造成的迅雷假死。例如你每秒5~8兆的速度下载(局域网FTP等),超过了最小缓存设置,按道理说,迅雷会不停的进行磁盘读写,将文件写入缓存,再写入下载的文件——这样反而达不到保护磁盘的目的,也会因为硬盘频繁读写带来迅雷假死的情况。
 
因此,最大缓存开始发挥作用,它命令数据在缓存中积累到256兆之后再复制写入真正的文件中——这样来缓冲高网速带来的冲击。
 
另一方面,这牵扯到迅雷的内存管理和磁盘协作之间的策略,由于我没有参与过迅雷的内核规划,因此只能猜个大概。
 
总结一下,最小缓存,是硬盘里迅雷缓存复制到真正文件的数据大小(这其实也是为了保护真正的下载数据不被损坏:如在下载过程中断点,损坏的只会是缓存,而重新开始下载之后,真正被下载的文件不会出现损坏(数据头、尾没有断点操作))最大缓存,是真正起缓冲作用的上限。
 
最后说一下第一个问题,答案很简单,缓存在硬盘上面,内存时刻都在积累数据,之后写入硬盘上的缓存文件,积累到一定大小之后转移。而早期版本的迅雷,确实是在内存里积累数据的,那时它的设置是(512K到8M最大),原因也在于对内存地址的占用和管理有限——拿内存来积累数据充当缓冲是较不稳定的(很容易和其他程序发生内存冲突,从而蓝屏或者假死),另外,现在的程序对CPU占用和内存占用都很谨慎也是这个道理,如果一开始向程序管理器申请太多内存作为缓冲的话,很容易被杀毒软件认为是恶意行为。
 
这是题外话了。
 
最后说一下你对硬盘的担心:完全没必要担心——心脏没跳动一下,三分之二的时间在休息——硬盘也是如此。只有在高压力的情况下,如每秒数十兆的频繁读写操作,时间过长或是环境恶劣,才会对硬盘造成影响。
阅读(3252) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~