![]() |
1
3
如果在每次测试迭代之前立即调用nanosleep()睡眠一秒钟左右,那么您应该为每个测试获得一个“新的”时间段。如果您使用100Hz计时器中断编译内核,并且您的定时函数在10毫秒内完成,那么您应该能够避免计时器中断以这种方式对您造成影响。 要最小化其他中断,请取消对所有网络设备的配置,在不交换的情况下配置系统,并确保系统处于静止状态。 |
![]() |
2
2
狡猾的我认为你不能关闭操作系统,保证严格的调度。 我会把这个颠倒过来:考虑到它运行得这么快,运行它很多次来收集结果的分布。考虑到标准的Ubuntu Linux在狭义上不是实时操作系统,所有的替代算法都将在同一个设置中运行——然后您可以比较您的分布(使用从汇总统计数据到分位数到qqplots的任何东西)。你可以用python,或者r,或者octave来做比较。哪一个最适合你。 |
![]() |
3
2
你也许可以逃避跑步 FreeDOS ,因为 it's a single process OS . 下面是第二个链接的相关文本:
当然,在实际硬件上而不是在模拟器中启动freedos,您可能会获得最佳性能。 实际上我没有 习惯于 Freedos,但我假设由于您的程序似乎是标准的C,所以您可以使用Freedos的任何标准编译器。 |
![]() |
4
2
如果您的程序以毫秒为单位运行,并且在Linux上运行, 确保您的计时器频率(在Linux上)设置为100Hz(而不是1000Hz)。 (cd/usr/src/linux;make menuconfig,并查看“处理器类型和功能”->“计时器频率”)。 这样,CPU每10毫秒就会中断一次。 此外,考虑到Linux上的默认CPU时间片是100毫秒,因此,如果您的CPU运行时间为几毫秒,那么在很好的-20级别下,您将不会被重新安排。 另外,在fn()上循环101次。请考虑将fn()设置为no op以正确校准系统。 进行统计(Average+StdDev),而不是打印太多次(这将消耗您的计划时间段,最终终端将获得计划等)。避免那样做)。 |
![]() |
5
1
你可以使用 CHRT-F 99./测试 以最大实时优先级运行/测试。至少不会被其他用户空间进程中断。 另外,安装 Linux RTT 这个包将安装一个实时内核,它将通过线程中断为您提供对中断处理程序优先级的更多控制。 |
![]() |
6
0
如果以根用户身份运行,则可以调用sched_setscheduler(),并为自己提供实时优先级。检查文档。 |
![]() |
7
0
也许有某种方法可以禁用Linux上的抢占式调度,但可能不需要。您可能会使用来自
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 3 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 4 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 4 月前 |