ubuntu 是如何管理i/o 的 ??

不同视角、不同观点、深度探讨,禁止人品和道德攻击
回复
shatai88
帖子: 21
注册时间: 2007-12-22 1:42

ubuntu 是如何管理i/o 的 ??

#1

帖子 shatai88 » 2007-12-22 14:48

今天下载一个游戏,居然没看见硬盘灯在闪?? 太夸张了
以前用vista 时候,灯就没停过,更不用说bt了。
但是ubuntu 究竟怎么处理的呢? 难道是写入一个i/o buffer, 这也太疯狂了,也不知道什么时候才转到硬盘?
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#2

帖子 猛将兄 » 2007-12-22 15:13

kernel里面的确有buffer控制。但是软件实现才是主要部分。软件实现不好,一天到晚fwrite,那么硬盘灯还是狂亮。kernel里面的buffer只是很小的值而已(和用户空间的应用比起来)。而很多软件,实际上是攒到了一定的数量,比如1M才写一次,这样I/O频度就低很多了。同样,在windows下面,如果bt或者其他软件能适当控制fwrite的频率,那么硬盘灯也不会狂闪。这和什么OS没关系的
lb_bn
帖子: 1261
注册时间: 2007-02-25 16:56

#3

帖子 lb_bn » 2007-12-22 21:51

vista自己就一劲的读盘 :lol:
lb_bn
帖子: 1261
注册时间: 2007-02-25 16:56

#4

帖子 lb_bn » 2007-12-22 21:51

vista自己就一个劲的读盘 :lol:
头像
milujite
帖子: 644
注册时间: 2007-01-01 22:14
联系:

#5

帖子 milujite » 2007-12-23 0:05

楼上风怒了~~哈哈
vvvli
帖子: 441
注册时间: 2006-10-26 7:02

#6

帖子 vvvli » 2007-12-24 0:01

猛将兄 写了:kernel里面的确有buffer控制。但是软件实现才是主要部分。软件实现不好,一天到晚fwrite,那么硬盘灯还是狂亮。kernel里面的buffer只是很小的值而已(和用户空间的应用比起来)。而很多软件,实际上是攒到了一定的数量,比如1M才写一次,这样I/O频度就低很多了。同样,在windows下面,如果bt或者其他软件能适当控制fwrite的频率,那么硬盘灯也不会狂闪。这和什么OS没关系的
关系当然有,如果文件系统 本身不是立即写入的。fwrite也没用。
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#7

帖子 猛将兄 » 2007-12-24 8:45

vvvli 写了:
猛将兄 写了:kernel里面的确有buffer控制。但是软件实现才是主要部分。软件实现不好,一天到晚fwrite,那么硬盘灯还是狂亮。kernel里面的buffer只是很小的值而已(和用户空间的应用比起来)。而很多软件,实际上是攒到了一定的数量,比如1M才写一次,这样I/O频度就低很多了。同样,在windows下面,如果bt或者其他软件能适当控制fwrite的频率,那么硬盘灯也不会狂闪。这和什么OS没关系的
关系当然有,如果文件系统 本身不是立即写入的。fwrite也没用。
任何一个文件系统,都不可能认定一个很大的buffer值,通常就是几十K而已。几十K对于BT这种应用来说,根本不可能称之为buffer,一般bt的客户端最好以M为单位来进行批量写,否则你每收到一点就写一下,不管windows还是linux,磁盘都受不了
vvvli
帖子: 441
注册时间: 2006-10-26 7:02

#8

帖子 vvvli » 2007-12-24 14:24

猛将兄 写了:
vvvli 写了:
猛将兄 写了:kernel里面的确有buffer控制。但是软件实现才是主要部分。软件实现不好,一天到晚fwrite,那么硬盘灯还是狂亮。kernel里面的buffer只是很小的值而已(和用户空间的应用比起来)。而很多软件,实际上是攒到了一定的数量,比如1M才写一次,这样I/O频度就低很多了。同样,在windows下面,如果bt或者其他软件能适当控制fwrite的频率,那么硬盘灯也不会狂闪。这和什么OS没关系的
关系当然有,如果文件系统 本身不是立即写入的。fwrite也没用。
任何一个文件系统,都不可能认定一个很大的buffer值,通常就是几十K而已。几十K对于BT这种应用来说,根本不可能称之为buffer,一般bt的客户端最好以M为单位来进行批量写,否则你每收到一点就写一下,不管windows还是linux,磁盘都受不了
xfs buffer 没这么小吧。话说回来,反正现在硬盘自带8-16m cache,无所谓了。
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#9

帖子 猛将兄 » 2007-12-24 15:04

vvvli 写了:
猛将兄 写了:
vvvli 写了:
猛将兄 写了:kernel里面的确有buffer控制。但是软件实现才是主要部分。软件实现不好,一天到晚fwrite,那么硬盘灯还是狂亮。kernel里面的buffer只是很小的值而已(和用户空间的应用比起来)。而很多软件,实际上是攒到了一定的数量,比如1M才写一次,这样I/O频度就低很多了。同样,在windows下面,如果bt或者其他软件能适当控制fwrite的频率,那么硬盘灯也不会狂闪。这和什么OS没关系的
关系当然有,如果文件系统 本身不是立即写入的。fwrite也没用。
任何一个文件系统,都不可能认定一个很大的buffer值,通常就是几十K而已。几十K对于BT这种应用来说,根本不可能称之为buffer,一般bt的客户端最好以M为单位来进行批量写,否则你每收到一点就写一下,不管windows还是linux,磁盘都受不了
xfs buffer 没这么小吧。话说回来,反正现在硬盘自带8-16m cache,无所谓了。
完全 不是一个概念。fwrite涉及到用户空间向内核空间的copy操作,非常的昂贵。
如果一个fs的的buffer设置太大,在一些意外情况下,数据丢失是非常严重的。所以绝对不能依赖fs的buffer,要应用根据应用的需要来自行设置
回复