Linux 和 Windows 的 IO 超时值?
Posted
技术标签:
【中文标题】Linux 和 Windows 的 IO 超时值?【英文标题】:IO timeout value for Linux and Windows? 【发布时间】:2011-08-01 07:57:24 【问题描述】:如果磁盘出现问题,磁盘驱动程序通常会重试它。例如,有时 Linux SCSI 驱动程序会从 SCSI 驱动器获取 BUSY 状态并重新发送 IO。上层(例如,FS)将等到: 1、磁盘驱动不能处理IO错误,直接报错。 2. 磁盘驱动程序仍在重试,但发生超时。
我的问题是,Windows 和 Linux 平台的超时值是多少?例如,如果我调用“write”来同步发送一些数据到磁盘,如果它不能真正写入数据,系统调用要多久才能返回?
谢谢!
【问题讨论】:
如果您将其设置为特定于一个操作系统或其他操作系统,这可能会得到更好的答案。也许把它分成两个问题,一个是针对 Linux 的,一个是针对 Windows 的?我怀疑许多 Linux 专家是否也会拥有专业的 Windows 知识。 不仅特定于操作系统,而且特定于驱动程序本身。 ... 并且特定于 I/O 的类型。但是,对于 Windows 中的 IRP,也有一个硬性限制。我记得这么多。 【参考方案1】:正如 Brian 所说,它取决于驱动程序。当驱动程序放弃时,写入返回。驱动程序放弃的方式和原因取决于驱动程序和设备。本身没有超时,就像读取通常有的那样。
【讨论】:
不完全,但差不多。在 Windows 上,据我所知,待处理的 IRP,如果未标记为待处理,将在一段时间后被 I/O 管理器取消。还是+1。欢迎。【参考方案2】:在Linux上,你可以通过读取每个块设备上的值来获取IO超时值:
/sys/block/mydevice/device/timeout
默认为60s。
【讨论】:
请注意,您也可以通过将新值写入该文件来更改超时。以上是关于Linux 和 Windows 的 IO 超时值?的主要内容,如果未能解决你的问题,请参考以下文章