taskset와 cpuset의 차이점


8

Linux 네트워크 응용 프로그램의 대기 시간을 줄이려고합니다. 특정 CPU 코어에 프로그램을 "바인딩"하는 두 가지 도구 인 taskset과 cpuset이 있다는 것을 배웠습니다.

  1. 어느 것을 선호해야합니까? 그것들은 낮은 수준에서 동등합니까?
  2. (처분) 내 응용 프로그램에는 단일 스레드가 있으며 대기 시간이 가장 짧은 고속 LAN 네트워크를 통해 단일 TCP 연결 (재 연결 없음)을 처리해야합니다. 내가 올바른 길에 있습니까?

각자의 맨 페이지를 읽었습니까?
Michael Hampton

애플리케이션이 아닌 지연 시간을 일으키는 Linux 네트워킹 부분인지 확인하기 위해 자세한 프로파일 링을 실행 했습니까?
Tero Kilkanen

어떤 OS / 배포 / 버전 / 커널을 실행하고 있습니까?
ewwhite

또한 어떤 유형의 하드웨어가 관련됩니까? 서버 제조업체 / 모델, CPU 사양, 네트워킹 인프라 ...
ewwhite

답변:


12

작업 세트 는 하나 이상의 CPU에 프로세스를 바인딩하기위한 것입니다. 기본적으로 초기 실행 또는 실행 중에 실행할 수 있는 위치를 지정 합니다. 최신 서버 장비에서 RHEL / CentOS를 사용하는 경우 numactl권장됩니다 taskset.

Cpuset / cset 은 CPU 차폐 용이며 Linux cgroup을 중심으로 구축 된 프레임 워크입니다. 프로세스 관리에 사용할 수있는 다른 도구가 있기 때문에 CHEL은 RHEL과 같은 특정 배포에서 인기가 없었습니다.

아래의 첫 번째 명령은 운영 체제의 작업을 CPU 코어 0 및 8로 제한하는 보호막을 생성합니다. 두 번째 명령은 현재 쉘 세션을 지정된 CPU 보호기로 이동하여 시스템 및 사용자 프로세스를 격리시킵니다.

# cset shield --cpu 1-7,9-15 --kthread=on
# cset proc --move --pid=$$ --threads --toset=user

CPU에 바인딩 프로세스의 경로를 내려 가기 전에 확인하고 조정해야 할 다른 사항이 있습니다. 인터럽트 ( irqbalance일부 비활성화), 절전 설정, 시스템 스케줄러, I / O 엘리베이터, 실시간 정책 ( chrt).

Ubuntu의 낮은 대기 시간 TCP 설정을 참조하십시오.

여기 (의 선상 다음과 ./your_program 실행되며, 그 선택 랩퍼 어플리케이션 코어의) 예 irqbalance 정지 선택된 코어 및 그 블랙리스트 시작 SCHED_FIFO 선택된 코어와 우선 순위 (99).

Core=5
CoreMask=`echo "16 o 2 $Core ^ p" | dc`
service irqbalance stop
  until [ "`service irqbalance status`" = "irqbalance is stopped" ] ; do sleep 1 ; done
IRQBALANCE_ONESHOT=1 IRQBALANCE_BANNED_CPUS=${CoreMask} irqbalance
sleep 1
  until [ "`service irqbalance status`" = "irqbalance is stopped" ] ; do sleep 1 ; done
numactl --physcpubind=${Core} --localalloc chrt -f 99 ./your_program

1
응용 프로그램이을 사용할 때 선호도를 재설정 할 수 taskset있습니다. cpuset을 사용하면 cpuset이 부여한 것에서 친밀감을 바꿀 수 없습니다.
Matthew Ife

그리고 numactl??
ewwhite

1
마찬가지로 두 프로그램 모두 동일한 기본 시스템 호출을 호출 sched_setaffinity합니다.
Matthew Ife
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.