我不想限制进程的cpu使用量。相反,我想以一种消耗较少cpu的方式编写它。我正在处理的系统不允许进行任何系统调用。
所以我无法入睡,我无法做任何I / O.我唯一留下的就是让它占用大量内存,我认为这很容易。
我创建了一个大型全局数组并编写了一个for循环来写入它。这个过程最终成为cpu密集型(在top / htop上显示98-100%)。
所以我想可能因为循环计算使用cpu,我删除了for循环。但它仍然使用98-100%的CPU,这对我没有意义。任何人都可以帮助我使记忆密集吗?如果它有帮助,我附上下面的代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE 1024*1024*1024 // 4 GB large_array
char large_array[ARRAY_SIZE];
int main(){
while(1){
strncpy(large_array, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+256, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+512, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+768, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+1024, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+1280, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+1536, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+1792, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+2048, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
strncpy(large_array+2304, "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 256);
}
}