gpt4 book ai didi

IO 完成后的 Windows 线程切换延迟 - 微秒或毫秒

转载 作者:可可西里 更新时间:2023-11-01 11:08:44 25 4
gpt4 key购买 nike

我正在尝试确定在 IO 操作完成时切换线程的大致时间延迟(Win 7、Vista、XP)。

我(认为我)知道的是:

a) 线程上下文切换本身在计算上非常快。 (所谓非常快,我的意思是通常方式不到 1 毫秒,甚至可能不到 1 微秒?- 假设一台速度相对较快、未加载的机器等。)

b) 循环时间片量程在 10-15 毫秒的数量级。

我似乎找不到关于从(高优先级)线程变为事件/发出信号(通过同步磁盘写入完成)到该线程实际再次运行的典型延迟时间的信息。

例如,我至少在一个地方读到,所有不活动的线程都保持 sleep 状态,直到大约 10 毫秒的系统量程到期,然后(假设它们已准备就绪),它们几乎全部同步重新激活。但在另一个地方,我读到线程完成 I/O 操作与它变为事件/发出信号并再次运行之间的延迟是以微秒而不是毫秒为单位测量的。

我要问的上下文与从高速相机捕获和连续流式写入 SSD RAID 阵列有关,除非我可以在前一个写入完成后不到 1 毫秒的时间内开始新的写入(这将是最好平均低于 1/10 毫秒),这将是有问题的。

如能提供有关此问题的任何信息,我们将不胜感激。

谢谢,大卫

最佳答案

线程上下文切换的成本在 2,000 到 10,000 个 CPU 周期之间,因此只有几微秒。

当线程阻塞在表示完成的同步句柄上时,I/O 完成速度很快。这使得 Windows 线程调度程序暂时提升线程优先级。这反过来又使其可能(但不保证)被选为获得处理器喜爱的线程。所以这通常是微秒,而不是毫秒。

请注意,磁盘写入通常会通过文件系统缓存。这使得 WriteFile() 调用一个简单的内存到内存副本,不会阻塞线程。它以每秒 5 GB 或更高的内存总线速度运行。然后以惰性方式将数据写入磁盘,线程不会因此而参与或延迟。只有当文件系统缓存已满并且您不使用重叠 I/O 时,您的写入速度才会变慢。如果您编写视频流,这当然是可能的。 RAM 的数量有很大的不同。和 SSD Controller 不一样。没有什么可以预先推理出来的,您必须进行测试。

关于IO 完成后的 Windows 线程切换延迟 - 微秒或毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13769638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com