실시간 스케줄링은 고정밀 및 낮은 지연이 필요한 일부 프로세스에게 중요합니다. 이러한 프로세스를 서비스로 실행하는 것은 흔하지만 일반 사용자가 사용자 세션에서 실행해야 하는 경우도 있습니다. Red Hat Enterprise Linux (RHEL)은 사용자 프로세스에 대한 실시간 스케줄링을 허용하도록 User slice를 구성하는 솔루션을 제공합니다.

프로세스에 대한 실시간 스케줄링을 활성화 문제 발생

문제는 사용자가 사용자 세션에서 실행되는 프로세스에 대한 실시간 스케줄링을 활성화하는 데 있습니다. 기본적으로 사용자가 실행하는 프로그램은 CPU Accounting이 활성화되면 Real-Time 할당이 없는 user.slice CPU cgroup에서 실행됩니다.

실시간 프로그램 스케줄링에 맞게 구성

이 문제를 해결하기 위해 다음 단계를 따라 user.slice 유닛을 실시간 스케줄링에 맞게 구성하세요.

전제 조건

사용자가 실시간 프로그램을 실행할 수 있는 능력이 있어야 합니다. 이는 보통 해당 사용자에 대한 /etc/security/limits.conf에서 rtprio 제한을 구성하는 것을 포함합니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
# grep testuser /etc/security/limits.conf 
testuser    -   rtprio      90

구성 단계

  1. userslice-config.service 유닛 생성: user.slice 유닛을 구성하는 서비스 유닛을 만듭니다. 이 유닛은 CPU cgroup에 대한 실시간 할당을 설정합니다.
   # cat > /etc/systemd/system/userslice-config.service << EOF
   [Unit]
   BindsTo=user.slice
   After=user.slice

   [Service]
   Type=oneshot
   ExecStart=/bin/sh -c "/usr/sbin/sysctl -n kernel.sched_rt_runtime_us > /sys/fs/cgroup/cpu/user.slice/cpu.rt_runtime_us"
   RemainAfterExit=yes
   EOF
  1. user.slice 유닛을 위한 Drop-In 구성 생성: user.slice 유닛을 자동으로 구성 서비스를 가져오도록 하기 위해 user.slice 유닛을 위한 drop-in 구성을 만듭니다.
   # mkdir -p /etc/systemd/system/user.slice.d
   # cat > /etc/systemd/system/user.slice.d/config.conf << EOF
   [Unit]
   Requires=userslice-config.service

   [Slice]
   CPUAccounting=yes
   EOF
  1. systemd 다시로드: 변경 사항을 적용하려면 systemd를 다시로드합니다.
   # systemctl daemon-reload
  1. user.slice 유닛 재시작 또는 시스템 재부팅: 변경 사항을 활성화하려면 user.slice 유닛을 다시 시작하거나 시스템을 재부팅합니다.
   # reboot
  1. 사용자의 실시간 할당 확인: 사용자로 로그인한 후 (testuser를 예로 들었습니다), 사용자가 이제 실시간 할당을 가지고 있는지 확인합니다.
   $ grep "cpu,cpuacct" /proc/self/cgroup
   8:cpu,cpuacct:/user.slice

   $ cat /sys/fs/cgroup/cpu/user.slice/cpu.rt_runtime_us 
   950000

   $ ./rt_minimal 
   스케줄링 정책을 SCHED_RR 및 우선순위 90으로 설정
   OK, 프로세스가 종료될 때까지 무기한으로 대기 중
   ^C

실시간 프로그램 실행 방지

CPU Accounting이 활성화되면 systemd에 의해 관리되는 모든 cgroup에 대해 cpu.rt_runtime_us cgroup 속성이 0으로 설정되어 실시간 프로그램 실행이 방지됩니다.

결론

이러한 단계를 따르면 Red Hat Enterprise Linux에서 사용자 프로세스에 대한 실시간 스케줄링을 구성할 수 있습니다. 이를 통해 일반 사용자도 사용자 세션에서 실시간 요구를 충족시키는 프로세스를 실행할 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

아마존 해외 구매: 서버, 네트워크, 노트북 구매

Amazon Best Sellers Servers

Amazon Best Sellers Networking

Amazon Best Sellers Laptops

위로 스크롤