코어당 물리적 ​​프로세서 및 스레드 수를 추출하는 방법은 무엇입니까? (텍스트 없음, 다른 곳에서 입력으로 사용되는 숫자만)

코어당 물리적 ​​프로세서 및 스레드 수를 추출하는 방법은 무엇입니까? (텍스트 없음, 다른 곳에서 입력으로 사용되는 숫자만)

핵심번호를 스크립트에서 사용하고 싶은데 번호 자체를 추출하는 것이 가장 좋은 방법이 무엇인지 모르겠습니다.

예를 들어 아래에는 물리적 코어 개수가 추출되는데, 실제 코어 개수를 어떻게 추출해야 다른 곳에 입력으로 사용할 수 있을까요?

lscpu | grep "Core(s) per socket" 
Core(s) per socket:    4

tail -c N에 대해 알고 있지만 더 많은 코어가 있는 시스템에서 작업할 때 이 접근 방식이 취약할 수 있다는 점이 걱정됩니다.

다른 곳에서 입력 매개변수로 사용할 물리적 코어 수와 코어당 스레드 수를 안정적으로 얻는 가장 좋은 방법은 무엇입니까?

답변1

행에서 숫자를 선택하기 위해 Perl 정규 표현식을 awk사용할 수 있습니다 sed.grep

$ lscpu | sed -n 's/^Core(s) per socket: *//p'
2

그런데 그 번호를 원하시나요? 소켓의 코어 수는 무엇입니까? 컴퓨터에 소켓이 여러 개 있는 경우 수행할 작업:

$ lscpu |grep -i socket
Core(s) per socket:    2
Socket(s):             2

이를 사용하여 awk두 숫자를 취하고 곱할 수 있습니다.

$ lscpu | awk '/^Core.s. per socket:/ {cores=$NF} /^Socket.s.:/ {sockets=$NF} END {print cores * sockets}'
4

이것이 하이퍼스레딩으로 간주되는지, 하이퍼스레딩이 필요한지 확실하지 않지만 숫자를 직접 얻을 수 있습니다 CPU(s).

lscpu | awk '/^CPU.s.:/ { print $NF; exit }'

또는 사용nproc시스템의 총 CPU 수를 가져옵니다.

$ nproc --all
4 

답변2

getconf이를 위해 유틸리티를 사용할 수 있습니다 . 이것은 당신에게 도움이 될 것입니다

$ getconf _NPROCESSORS_ONLN
8

관련 정보