我正在尝试完全消除安静机器上一组内核上的计时器中断。这些是这些内核定期处理的唯一中断。我已经isolcpu对它们进行了处理,并使用 构建了一个内核CONFIG_NO_HZ_FULL,实际上现在它们大约每秒只接收一次计时器中断。是否可以删除这个残留的 1Hz 定时器中断?
该内核文档建议在某些时候偶尔需要进行勾选:
一些进程处理操作仍然需要偶尔的调度时钟滴答。这些操作包括计算CPU负载、维护sched平均值、计算CFS实体vruntime、计算avenrun以及进行负载均衡。目前,它们是通过每秒左右的调度时钟滴答来容纳的。正在进行的工作将消除对这些不频繁的调度时钟滴答的需要。
这个内核补丁“删除 1 Hz 滴答代码”表明它在更高版本的内核中已被删除:
现在 1Hz 滴答已卸载到工作队列,我们可以安全地删除用于在本地处理它的残留代码。
我构建了 5.3.0 内核,希望能够删除这个残留的刻度线,但它仍然存在。
我还需要设置其他启动参数吗?最新版本的内核中是否真的删除了剩余计时器滴答声?(这个问题有一些相关信息)
我想在二维数组中组合 1 和 0,如下所示:
[[ 1, 1, 1, 1, 0, 0, 0, 0 ],
[ 1, 1, 1, 0, 1, 0, 0, 0 ],
[ 1, 1, 1, 0, 0, 1, 0, 0 ],
[ 1, 1, 1, 0, 0, 0, 1, 0 ],
[ 1, 1, 1, 0, 0, 0, 0, 1 ],
.
.
.
]
Run Code Online (Sandbox Code Playgroud)
这意味着四个 1 和四个 0 的组合。我查看了itertools模块的permutations()and combinations(),但找不到任何合适的函数来执行这种组合。
我希望以下程序的输出为5,但编译器显示20.有人可以解释一下原因吗?
#include <stdio.h>
int a=5;
change1(int *p);
int main(void)
{
int x=20,*ptr=&x;
change1(ptr);
printf("%d ",*ptr);
return 0;
}
change1(int *p)
{
p=&a;
}
Run Code Online (Sandbox Code Playgroud) void *在C中使用有许多缺点(与内存相关,类型相关,效率明智......).尽管如此,我们还是使用它们来提供灵活性.
列出使用的缺点/缺点void *(以及C中的首选解决方案 - 如果可能的话).
编辑: 请通过以下链接:http: //attractivechaos.wordpress.com/2008/10/02/using-void-in-generic-c-programming-may-be-inefficient/
c ×2
combinations ×1
function ×1
interrupt ×1
linux ×1
linux-kernel ×1
pointers ×1
python ×1
python-2.7 ×1
real-time ×1
timer ×1