SharedIT | 묻고 답하기(AMP)

[리눅스] 쓰레드에 대해

안녕하세요! 리눅스쪽을 공부하다가 궁금한게 생겼는데 아무리 구글링을 해보아도 명확한 답을 얻지 못해서 

글 남겨봅니다..ㅜ^ㅜ


쓰레드 관련된 얘기인데.. 어떻게 보면 너무 간단한 사항이긴 합니다만.. 

제가 궁금한것은 요즘 os가 하이퍼쓰레딩 체제라 쓰레드는 = cpu코어수 * 2 로 산정되는것으로 알고 있어요.

제가 사용하는 리눅스 서버는 6코어 12쓰레드인데, 여기서 얘기하는 쓰레드와 리눅스에서 사용가능한 최대

쓰레드수의 차이를 알고 싶어요. 

리눅스에서 사용가능한 최대 쓰레드수란 cat /proc/sys/kernel/threads-max 했을 때 출력되는 설정값을 

얘기하는게요! 


Tags : 태그가 없습니다.

4개의 답변이 있습니다.

차바라기
  0 추천 | 2년 이상 전

https://reakwon.tistory.com/56

여기 사이트도 참고해보세요

Genghis Khan
  0 추천 | 2년 이상 전

https://information-factory.tistory.com/38

하이퍼쓰레드 중 정리가 잘 된 자료입니다

skstmdxo18 | 2년 이상 전

감사합니다! ^ ^ 

topkslee
  0 추천 | 2년 이상 전

기술에 따라 스레드(thread) 용어의 차이가 있습니다. 같은 말이 아니라는 말이죠.

1)

일반적으로 CPU에서는 독립적으로 한번에 처리하는 작업의 단위를 스레드라고 합니다.

만약 4core라고 하면 한번에 4개의 작업을 동시에 처리할 수 있는거죠. 그래서 4 스레드라고 합니다.

하지만, 인텔에서 하이퍼 스레딩 기술을 적용하여 1코어당 2스레드 처리가 가능하여 

말씀하신 것처럼 스레드 = core당 * 2 된 것입니다.

2)

리눅스, 즉 OS에서 사용하는 스레드는 다르다고 보시면 됩니다.

리눅스에서 ps -ef 했을때 나오는 리스트들이 프로세스입니다.

쉽게 말해서 윈도우 작업관리자 실행했을때 실행 중이 프로그램으로 보시면 됩니다.

엑셀이 실행 중이라면 엑셀 프로그램이 프로세스입니다.

어떤 프로그램 내에서, 특히 프로세스 내에서 실행되는 작업 흐름의 단위라고 하는데요.

하나의 프로세스 생성될 때 하나의 스레드가 생성됩니다.

그 뒤 필요시 추가로 여러 개의 스레드가 생성 될 수 있습니다.

이 스레드를 동시에 작업 수행할 수 있게 해주는 기술이 멀티 스레딩입니다.

언급하신 cat /proc/sys/kernel/threads-max 의 설정은 CPU가 아닌 프로그램을 위한

OS상의 스레드 설정값입니다.

skstmdxo18 | 2년 이상 전

감사합니다! ^ ^

wansoo
  0 추천 | 2년 이상 전

하이퍼 스레딩이란 건 인텔이 CPU/프로세서의 성능을 향상시키기 위해 개발한 기술이며,

단일 물리 프로세서를 두개의 가상 프로세서로 변환해서 동시에 여러 스레드를 실행시키는 걸 의미하고...

리눅스에서 스레드라는 건 한개 프로세스( 실행단위 ) 안에 여러개의 실행 흐름을 동시에 처리하는 개념이라 생각되네요.


인텔에서 말하는 하이퍼 스레딩의  스레드 개념과 Linux나 일반 소프트웨어 개발에서 말하는 스레드에 있어서 개념의 차이가 있는걸로 보이네요.

skstmdxo18 | 2년 이상 전

감사합니다! ^ ^