cgroup 간에 공정한 대역폭 공유를 구성하는 방법은 무엇입니까?

cgroup 간에 공정한 대역폭 공유를 구성하는 방법은 무엇입니까?

tcSFQ(Random Fair Queuing)를 사용하면 공정한 대역폭 공유를 구성하는 것이 매우 쉽습니다.흐름, 그러나 애플리케이션은 여러 스트림을 열고 가져올 수 있습니다.불공정한 대역폭 공유. 서로 공정한 대역폭 공유를 구성하는 것이 가능합니까?애플리케이션대신에?

각 애플리케이션을 cgroup으로 그룹화하는 것은 분명한 첫 번째 단계처럼 보입니다. SFQ가 클래스 ID 해싱을 지원하는 경우 tc filter각 cgroup에 클래스 ID를 쉽게 할당할 수 있습니다. 불행하게도 SFQ는 이를 지원하지 않는 것 같습니다. 또 다른 유망한 접근 방식은 카테고리 전반에 걸쳐 가중치 주기를 수행하는 CBQ를 사용하는 것입니다. 불행히도 가중치를 모두 동일하게 만드는 것은 작동하지 않는 것 같습니다.

cgroup 간에 대역폭을 공정하게 공유하는 또 다른 방법이 있습니까?

답변1

net_cls cgroup 컨트롤러를 확인하십시오. 기본적으로 특수 태그( /mntpoint/net_cls.classid해당 cgroup의 애플리케이션과 연결된 소켓에서 시작되는 모든 패킷에 정의됨)를 추가합니다. 나중에 classidqdisc에 연결된 필터에서 이 "태그"를 사용하여 트래픽이 발생하는 cgroup을 기반으로 다양한 클래스에 트래픽을 전달할 수 있습니다.

이 주제에 관해 내가 찾은 유일한 문서는 다음과 같습니다.일부 Red Hat 슬라이드[Google을 통한 HTML].

관련 정보