2.5. CPU에서 SoftIRQs를 실행할 수 있는 시간 증가


SoftIRQ가 충분히 오래 실행되지 않으면 들어오는 데이터의 속도가 버퍼를 충분히 빨리 드레이닝하는 커널의 기능을 초과할 수 있습니다. 결과적으로 NIC(네트워크 인터페이스 컨트롤러) 버퍼 오버플로 및 패킷이 손실됩니다.

softirqd 프로세스에서 하나의 NAPI 폴링 주기의 인터페이스에서 모든 패킷을 검색할 수 없는 경우 SoftIRQ에 충분한 CPU 시간이 없다는 것을 나타냅니다. 이는 빠른 NIC가 있는 호스트의 경우(예: 10Gbps 이상)일 수 있습니다. net.core.netdev_budgetnet.core.netdev_budget_usecs 커널 매개변수의 값을 늘리면 softirqd 가 폴링 주기에서 처리할 수 있는 시간 및 수를 제어할 수 있습니다.

프로세스

  1. net.core.netdev_budget 매개변수를 튜닝해야 하는지 확인하려면 /proc/net/softnet_stat 파일에 카운터를 표시합니다.

    # awk '{for (i=1; i<=NF; i++) printf strtonum("0x" $i) (i==NF?"\n":" ")}' /proc/net/softnet_stat | column -t
    221951548  0  0      0  0  0  0  0  0  0  0  0  0
    192058677  0  20380  0  0  0  0  0  0  0  0  0  1
    455324886  0  0      0  0  0  0  0  0  0  0  0  2
    ...

    awk 명령은 /proc/net/softnet_stat 의 값을 16진수 형식에서 10진수 형식으로 변환하고 테이블 형식으로 표시합니다. 각 행은 core 0부터 시작하는 CPU 코어를 나타냅니다.

    관련 열은 다음과 같습니다.

    • 첫 번째 열: 수신된 총 프레임 수입니다.
    • 세 번째 열: 하나의 NAPI 폴링 주기에서 인터페이스에서 모든 패킷을 검색할 수 없는 소프트irqd 프로세스 수입니다.
    • 마지막 열: CPU 코어 번호입니다.
  2. /proc/net/softnet_stat 파일의 세 번째 열에 있는 카운터가 시간에 따라 증가하면 시스템을 조정합니다.

    1. net.core.netdev_budget_usecsnet.core.netdev_budget 매개변수의 현재 값을 표시합니다.

      # sysctl net.core.netdev_budget_usecs net.core.netdev_budget
      net.core.netdev_budget_usecs = 2000
      net.core.netdev_budget = 300

      이러한 설정을 사용하면 softirqd 프로세스는 NIC에서 최대 300개의 메시지를 하나의 폴링 주기로 처리할 수 있도록 최대 2000 마이크로초까지 사용할 수 있습니다. 폴링은 가장 먼저 충족되는 조건에 따라 종료됩니다.

    2. 다음 콘텐츠를 사용하여 /etc/sysctl.d/10-netdev_budget.conf 파일을 만듭니다.

      net.core.netdev_budget = 600
      net.core.netdev_budget_usecs = 4000

      매개 변수를 현재 값의 이중으로 설정합니다.

    3. /etc/sysctl.d/10-netdev_budget.conf 파일에서 설정을 로드합니다.

      # sysctl -p /etc/sysctl.d/10-netdev_budget.conf

검증

  • /proc/net/softnet_stat 파일에서 세 번째 열을 모니터링합니다.

    # awk '{for (i=1; i<=NF; i++) printf strtonum("0x" $i) (i==NF?"\n":" ")}' /proc/net/softnet_stat | column -t

    값이 계속 증가하는 경우 net.core.netdev_budget_usecsnet.core.netdev_budget 를 더 높은 값으로 설정합니다. 카운터가 더 이상 증가하지 않을 때까지 이 프로세스를 반복합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동