저는 BuildRoot를 사용하여 VirtualBox 내에서 루트 파일 시스템 이미지를 빌드하고 있습니다. 빌드 속도가 매우 느립니다.
가상 머신에서 "make -j2"를 실행하면 어떤 이점이 있습니까? 가상 머신의 /proc/cpuinfo는 다음과 같습니다.
smachin@smachin-ubuntu:~/neo-build/rfs$ 고양이 /proc/cpuinfo 프로세서: 0 Vendor_id: 정품 인텔 CPU 시리즈: 6 모델: 58 모델명: Intel(R) Core(TM) i7-3687U CPU @ 2.10GHz 단계 수: 9 마이크로코드: 0x19 CPU MHz: 2594.218 캐시 크기: 6144KB 실제 ID: 0 형제자매: 1 코어 수: 0 CPU 코어 수: 1 캡사이신: 0 초기 산: 0 FPU: 예 fpu_Exception: 예 CPUID 레벨: 5 직장: 예 플래그: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm Constant_tsc rep_good nopl pni monitor ssse3 lahf_lm 보고밉 : 5188.43 클플러시 사이즈: 64 캐시 정렬: 64 주소 크기: 36비트 물리적 주소, 48비트 가상 주소 에너지 관리:
답변1
예, 그럴 수 있습니다. 시스템이 I/O 바인딩되고 CPU 바인딩된 경우 -j2
다른 프로세스가 디스크 I/O를 수행하는 동안 더 많은 CPU가 사용됩니다. 그러나 디스크에서 요청하는 프로세스 수를 늘리면 디스크 헤드 이동에 대한 경합으로 인해 속도가 느려질 수 있습니다.
Stephen Jeter가 말했듯이 테스트해 보세요.
time make clean all
time make -j 2 clean all
time make -j 3 clean all
VirtualBox에 있습니다. 이 머신이 있다고 가정하면 VM을 종료하고, CPU 코어 수를 늘리고, 시작하고, 빌드를 실행한 다음 종료하여 다시 1개의 코어로 되돌릴 수 있습니다.
또는 2코어로 남겨둘 수도 있습니다. 리눅스는 매우 효율적입니다. 가상 머신에 두 개의 코어를 제공한다고 해서 호스트 운영 체제에서 해당 코어를 사용할 수 없게 되는 것은 아닙니다. 게스트 운영 체제가 아무 작업도 하지 않으면 호스트에서 이러한 코어를 사용할 수 있습니다.