gpt4 book ai didi

multithreading - 如何通过实验确定进程/线程的调度量?

转载 作者:行者123 更新时间:2023-12-01 11:25:35 26 4
gpt4 key购买 nike

只是为了避免任何关于“你为什么需要知道这个??”的评论:这只是一个我很好奇的谜题,不是出于任何实际原因我需要做的事情。

给定一个典型的 POSIX 系统[1],您将如何设计一个实验来确定 CPU 绑定(bind)进程的调度量[2]?

[1]:但不能让您通过系统调用或/proc 接口(interface)查询此信息

[2]:“调度时间片”定义为一个进程在其调度时间结束之前在 CPU 上运行而不会阻塞或让步的时间量,并且操作系统允许另一个进程运行。

最佳答案

我不确定它的准确性如何,但这可能有效:

  1. 确保您的计算机处于空闲状态(或尽可能空闲)
  2. 产生 2N 个线程(其中 N 是您计算机中的核心数)。所有这些线程都应设置为以彼此相同的优先级运行。
  3. 每个线程都应该运行一个无限循环,除了使用高分辨率计时器(例如调用 std::chrono::steady_clock::now() 或相似)。
  4. 在循环的每次迭代中,每个线程都应检查结果时间值是否存在“突然间断”,即时钟时间从 (t) 跳到 (t+n 毫秒,n 大于通常的增量值(value))。这些间隙很可能表明线程被踢出 CPU 以便另一个线程可以运行的时间段。
  5. 在某个时候,计算所有这些间隙大小的平均值,这就是您对调度程序的量子大小的估计。

请注意,这假设您的时钟分辨率大于调度程序的量子大小;如果不是(例如,如果您尝试使用分辨率为 10 毫秒的时钟来测量 5 毫秒的量子长度),那么测量量子长度将很困难 AFAICT。

关于multithreading - 如何通过实验确定进程/线程的调度量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37505887/

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