라즈베리 파이 3을 사용하고 기본적으로 약간의 트립 와이어를 밟았습니다.두 개의 동일한 프로세스가 이중 CPU로드를 사용하지 않는 이유
나는 많은 메모리를 소비하고 큰 CPU 부하가있는 매우 크고 복잡한 프로그램이 있습니다. 처음 프로세스가 실행되는 동안 동일한 프로세스를 시작하면 동일한 양의 메모리가 필요하며 특히 CPU로드가 두 배가된다는 것이 정상적인 현상이라고 생각했습니다. 나는 그것이 더 많은 메모리를 없애지 않으며 CPU 부하에 영향을 미치지 않는다는 것을 알았다. 이 동작은 내 프로그램에서 온 경우
을 확인하려면, 나는 매우 높은 메모리 사용량이있는 작은 C++ 프로그램을 작성, 여기있다 :#include <iostream>
using namespace std;
int main()
{
for(int i = 0; i<100; i++) {
float a[100][100][100];
for (int i2 = 0; i2 < 99; ++i2) {
for (int i3 = 0; i3 < 99; ++i3){
for (int i4 = 0; i4 < 99; ++i4){
a[i2][i3][i4] = i2*i3*i4;
cout << a[i2][i3][i4] << endl;
}
}
}
}
return 0;
}
는 CPU 부하는 대한 인의 30 %에서 max-level, 나는 한 터미널에서 코드를 시작했다. 이상하게도 다른 터미널에서 동시에 시작했을 때 CPU로드에 영향을주지 않았습니다. 나는이 행동이 내 프로그램에서 올 수 없다고 결론을 내렸다.
지금 나는 알고 싶어
프로세스의 특정 유형이 아닌 그릴 당신의 코어를한다는 것을 보장하는 "잠금"이 있습니까?
두 개의 동일한 프로세스가 CPU로드를 두 배로 늘리는 이유는 무엇입니까?