sched_getaffinity api man page에서 thread 의미
289
작성한 질문수 10
description부분에서
A thread's CPU affinity mask determines the set of CPUs on which it is eligible to run. by dedicating one CPU to particular thread. is is possible to ensure maximum execution speed for that thread.
1. 여기서 thread는 프로세스의 thread인가요? 그렇다면
위 설명에 특정 스레드에 하나의 cpu를 할당해서, 하나의 스레드의 실행속도를 최대화할 수 있는 보장을 한다라고 설명하고 왜 첫번째 인자로는 특정 스레드id가 아닌 process id를 넘기는거죠?
2. 만약 1cpu 4코어 8스레드라면 위에서 설명하는 CPU는 1cpu를 의미하는 거죠?
답변 1
2
1. 말씀하신대로 process ID를 넘겨야 하는 것이 맞습니다. 하지만 여기에서 process ID 대신 TID(Thread ID)를 입력하시면 해당 Thread의 affinity가 설정됩니다. TID는 말 그대로 Thread 별 ID인데, PID와 동일한 체계로 구성되어 있습니다. 쉘에서 ps -efL로 조회하시면 프로세스에 포함되어 있는 thread까지 출력합니다. ps -efL의 조회 결과를 보시면 TID가 어떤 것인지 쉽게 이해하실 수 있을 것 같네요.
참고로, TID는 gettid()를 이용해 얻을 수 있지만, glibc에서는 이 system call을 구현해놓지 않았습니다. 따라서 TID를 가져오려면 아래와 같은 코드를 사용하셔야 합니다.
#include <unistd.h>
#include <sys/syscall.h>
#ifdef SYS_gettid
pid_t tid = syscall(SYS_gettid);
#else
#error "SYS_gettid unavailable on this system"
#endif
2. 일반적으로 멀티코어 시스템에서 CPU라 칭하는 것은 논리적으로 구분 가능한 연산장치 입니다. 즉, 2-core 4-thread 시스템이라면 4개의 CPU가 있다고 할 수 있는 것이죠. 그래서 예를 들어주신 멀티코어 시스템에서 CPU는 8-thread에 해당합니다.
예를 들어주신 부분을 좀 더 정확한 용어로 바꾸자면, "1-Processor, 4-Core, 8-Thread 인 시스템은 총 8개의 CPU가 있다" 라고 할 수 있습니다. 시스템 마더보드에 설치하는 물리적인 CPU 패키지는 Processor라고 부릅니다.
답변이 되셨길 바랍니다. 그럼 수고하세요~~
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
37
2
select API 실습 코드 질문
0
40
2
wsl에서 fcntl사용
0
73
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
180
2
./stat 파일이름
0
273
2
fopen r, r+모드 차이
0
460
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
326
1
pthread 질문
0
419
2
I/O Multiplexing(select) 질문
0
325
1
inotify.c. ret 질문
0
302
1
inotify.c 질의합니다.
1
317
1
child process
0
715
1
read/blocking
0
565
1
flock
0
565
1
system call
0
598
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
487
1
fork() 함수 사용시 결과 관련 질문
0
371
1
exec 관련 궁금한 사항
0
450
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
552
1
buf 선언에 따른 read() fail 문제
0
251
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
254
1
2번 multi thread 방법 질문
0
242
1
segmentation fault 발생 관련 문의
1
842
1
라이브 코딩 실습 코드
0
235
1





