WSL에서 실행되는 Ubuntu 18.04가 CPU 오류를 감지합니다.
$ cat /proc/self/status | grep Cpus_allowed
Cpus_allowed: 00000001
CPU는 i7-4510U(2코어/4스레드)이므로 다음과 같습니다.
Cpus_allowed: f
또는 이와 유사한 것(ff, ffffffff, 0000000f).
이상한 점은 4개의 프로세스를 실행할 때 각 프로세스가 CPU 스레드를 가져오고 따라서 400% CPU 사용률로 실행된다는 것입니다. 그래서 CPU 마스크가 존중되지 않는 것과 같습니다.
또한 taskset
무례합니다. 이는 단일 스레드(100%)를 사용해야 하지만 4개 스레드(400%)를 모두 사용합니다.
taskset 2 parallel -j4 'bzip2 < /dev/zero >' ::: {1..10}
이것은 WSL의 버그입니까? 그렇다면: 어디에 신고해야 합니까?
배경
문제는 다음에 설명되어 있습니다.https://arstechnica.com/civis/viewtopic.php?f=15&t=1442563/proc/*/status
위에서 언급했듯이 GNU Parallel은 허용되는 CPU 스레드 수를 결정하기 위해 CPU 마스크를 살펴보기 때문에 잘못된 CPU 스레드 수를 감지합니다 .